本帖最后由 robe.zhang 于 2021-5-14 10:43 编辑
【百度大脑AI计算盒FZ5C】用 FPGA 控制 IO + 视频
笔者在计算盒上用 FPGA 实现了一个IO电路,在 linux 系统中控制 IO 实现高低电平,视频: https://v.youku.com/v_show/id_XNTEyMjg3NTAwMA==.html
主要思路: Xilinx 芯片PS 端有有 96个 EMIO,EMIO 可是沟通 PS 和 PL 两端,那就可以把 PS 端的 IO 操作扩展到PL端,控制PL端的IO。 本文实现了一个PL IO 电路,跑通芯片整个开发流程:从 FPAG 电路设计、到 linux 系统构建、到烧写启动卡开机调试运行;用 PS 上运行的 linux 系统控制 PL 的 IO 端口。
主要步骤: 1, vivado 设计电路,导出 hardware platform。 2, petalinux 构建 linux 系统 3, 制作启动卡,开机调试 4, Linux 中对 IO 操作,控制 IO 口输出高低电平
Vivado 设计电路,参考文章: https://www.cirmall.com/bbs/thread-204308-1-1.html
在上文基础上,添加 EMIO 0-1: 扩展 IO: 添加约束文件,添加以下内容: 自己配置,一定要保存,不然后面会出错: 其实笔者扩展了两个IO,一个绑定在 A15,另一个绑定在 B15,本文所有文件中都实现了两个 IO,仅以 A15 为例
这两个 IO 在芯片上两个小亮点位置:
芯片上,一个 IO 端口能看到 pad 、 ibuf 、 obuf ,pad 用在芯片封装时候,打金线
电路图:
电路图上一个 IO 由两个 iobuf 组成,每个 iobuf 由一个 ibuf,一个 obuf,和一个 ctrl 组成。 原理图简单易懂
IO 在芯片封装上的这个位置: 原理图的位置: 开发板的位置: 综合实施生成bitstream导出hardware platform,没啥错误电路设计部分完成
使用 petalinux 构建 linux 系统,参考这一篇文章: 【百度大脑AI计算盒FZ5C】petalinux 安装开发 https://www.cirmall.com/bbs/thread-204309-1-1.html
petalinux 构建的 linux 系统,一定确认好构建成功: Petalinux 输出 tasks summary 信息,是 yocto 输出的信息,一定要成功不可以失败
打包 BOOT.bin 启动镜像:
petalinux-package --boot --format BIN \
--fsbl images/linux/zynqmp_fsbl.elf \
--u-boot images/linux/u-boot.elf \
--pmufw images/linux/pmufw.elf \
--fpga images/linux/*.bit \
--atf images/linux/bl31.elf \
--force
烧录SD卡,启动调试:这部分先参考米尔的资料吧,笔者的 petalinux 使用默认配置,能用,只是有点麻烦,稍后会移植新版本内核适配 ubuntu 系统,这个镜像就不用了,这里暂时就这样用凑合一下。调试用一下而已
进入Linux 系统后,控制 GPIO 操作,A15 对应 416 号GPIO,本文视频就是操作 416 号GPIO,B15 对应 417 号GPIO:执行以下命令
echo 416 > /sys/class/gpio/export echo out >/sys/class/gpio/gpio416/direction echo 1 > /sys/class/gpio/gpio416/value # 这两条命令是输出高低电平 echo 0 > /sys/class/gpio/gpio416/value
然后就可以通过万用表测量开发板对应 IO 的高低电平,就是本文开头视频的内容,也可以自己外插一个 LED 灯,闪烁,等等其他 IO 操作都可以。 外接电路需要匹配 IO 电气规格,这两个 IO 类型是 LVCMOS, 3.3V, 驱动能力 12mA。
到此 Xilinx 平台的整个开发过程跑通,调通,测试验证通过。
本文输出的 hardware platform 文件和 petalinux 输出文件,保存在百度网盘中红色标识的两个文件: 链接:https://pan.baidu.com/s/1cKaZQy_JaY2vZW0zUIed6w 提取码:robe
|