软件与系统的环境版本
Ubuntu、Vivado、PetaLinux、PYNQ的版本必须与上文一致,不然可能会出现版本不适配的问题!
打开vivado,新建工程文件,选择器件;点击左边栏IP INTEGRATOR -> Create Block Design新建一个 bd 文件(block design),添加一个 ZYNQ 模块并进行配置。具体配置需参考手上的开发板的硬件原理图、资料,以及项目的具体需求,此处不详细展开。
为了能够控制外设,还需添加 AXI_GPIO 模块。本项目需添加两个 axi_gpio 模块,一个宽度为4位的用于控制四个 LED 灯,一个宽度为1位的用于控制 key1 按键。(双击创建的axi_gpio模块即可进入下图的设置界面)
点击左边栏 RTL ANALYSIS -> Open Elaborated Design ,打开如下界面,在底部设置 GPIO 连接外设的对应管脚。具体管脚请查看具体开发板的硬件原理图、手册等资料。
点击左边栏的 run synthesis 进行综合(一直点OK即可,综合完成后会弹窗提示要不要 run Implementation,直接点右下角 cancel 即可),点击顶部工具栏 File -> Export ,选择 Export Hardware,导出得到.xsa文件;再选择 Export Bitstream File,导出得到.bit文件。(.xsa文件在Linux系统下解压可得到一堆文件,包括.hwh、.tcl)这些文件即为描述该开发板的硬件文件,需要用 它们 + PYNQ rootfs 来制作适配该开发板的 PYNQ 镜像。
打开终端,输入以下命令下载PYNQ组件:
git clone https://github.com/Xilinx/PYNQ.git
cd PYNQ
git checkout v2.6.0
git checkout -b fzu3
使用 ls 命令查看 PYNQ 文件夹内容,如下则说明下载成功:
输入 vim ~/.bashrc 命令配置环境变量,使得每次启动终端时,自动加载好制作镜像所需的环境:
其中三个 source 后的路径要根据自己下载的vivado、petalinux、vitis的路径进行更改:
export PATH="$PATH:/home/hoko/.local/lib/python3.6/site-packages"
source /home/hoko/Downloads/Vivado/2020.1/settings64.sh
source /home/hoko/Downloads/PetaLinux/2020.1/settings.sh
source /home/hoko/Downloads/Vitis/2020.1/settings64.sh
export PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH
在 PYNQ/sdbuild/scripts 目录打开终端,输入 source setup_host.sh 命令设置一些环境变量和shell函数,为后续的编译工作做准备:
将 bionic.arm.2.6.0_2020_10_19.img (即前言里提到的PYNQ rootfs arm 文件)
复制到 PYNQ/sdbuild/prebuilt目录下;
在 PYNQ/boards/目录下新建文件夹 fzu3
在 fzu3文件夹中新建两个文件夹 base、petalinux_bsp
在 petalinux_bsp文件夹中新建文件夹 hardware_project;
将 vivado硬件设计部分导出的 .bit 文件重命名为 base.bit ,放到 base 文件夹里;
将 .xsa 文件重命名为 fzu3.xsa ,放到 hardware_project 文件夹里;
在 fzu3文件夹中新建 fzu3.spec 文件,填入如下内容:
ARCH_fzu3 := arm
BSP_fzu3 :=
BITSTREAM_fzu3 := base/base.bit
FPGA_MANAGER_fzu3 := 1
STAGE4_PACKAGES_fzu3 := pynq ethernet
上述流程完成,在 PYNQ/sdbuild 文件夹中运行如下命令即可开始构建镜像:
make BOARDS=fzu3 PREBUILT=./prebuilt/bionic.arm.2.6.0_2020_10_19.img
但不出意外的话,构建是不会成功的 T_T,我至少构建了五次才最终成功…
下面我将列出绝大多数文章都没有说明,是我自己上网搜索 debug 总结出来的在上述构建镜像步骤之前的细节设置(也许你不用设置也能构建成功,但下面的坑我是每个都踩了一遍…):
Ubuntu 系统语言设置为英文!
Ubuntu 得连接外网,并保证流量充足,完整编译一次镜像大约要消耗10G流量!
Ubuntu 在装好vivado、petalinux等东西之后,最好还得剩下 20G 以上的磁盘空间!
Ubuntu 设置 sudo 免密码!
在下载的PYNQ文件夹中,全局搜索“ gitsm:// ”,如果有搜到,请将其更改为“ https:// ”或者“ http:// ”!(建议使用 VSCode 做这件事)
在构建之前,可以使用 make checkenv 命令对个软件环境的版本进行确认和检查,没有问题再开始构建。
如果构建过程出现bug,则debug 完成后要先运行如下命令将上次构建的镜像清除,再开始重新构建镜像:
make delete
make unmount
make clean
最后一步,God bless you!
镜像制作成功后,会在 sdbuild 文件夹中生成 output 文件夹,fzu3-2.6.0.img 即为 PYNQ 镜像文件。
TF卡插入电脑,格式化之后,将 fzu3-2.6.0.img 复制到 Windows 系统下,使用 Win32DiskImager 工具将镜像烧写到TF 卡上(TF卡建议 16G 以上)。
用网线、UART、DEBUG线将笔记本与开发板相连接,将 TF 卡插入开发板的 TF1 卡槽里,拨动拨码开关设置 BOOT 为 TF 卡启动,按电源按钮上电:
关闭 Windows 防火墙,打开 MobaXterm,使用网口和串口登录。用户默认密码是xilinx。
打开笔记本浏览器,输入网址 http://pynq,输入默认登录密码 xilinx 即可进入 jupyter notebook 开发页面,进行 python 代码的编写。本项目需要用到Overlay库对开发板的硬件进行控制,因此还要将.hwh、.bit、.tcl 文件放在 control.py 所在的文件夹目录下。注意这三个文件的命名要保持一致。
对于 PYNQ-Z1、Z2 等常见的开发板,PYNQ官网已经给出了编译好的镜像,直接使用即可。对于该文 ZYNQ_ECO 这样的非主流板子,则需要像本文一样自己设计硬件部分,然后结合预制 PYNQ 根镜像来为板子定制一个 PYNQ 镜像。至此,该项目最难的(个人认为)为 ZYNQ_MINI 开发板量身定制一个 PYNQ 镜像的部分就完成啦!这篇博客也是得到了跟我共同完成该项目的林同学的大力支持,向他表示感谢!
有不清楚的地方,欢迎大家在评论区交流~
您的关注、点赞与收藏,是我持续创作优质博客的最大动力!
本项目系列文章:
【基于Xilinx ZYNQ7000的PYNQ框架项目】——01人脸识别项目介绍与展示
【基于xilinx Zynq7000的PYNQ框架项目】03 Socket实现开发板和电脑的实时视频传输并存储图片
【基于Xilinx ZYNQ7000的PYNQ框架项目】04开发板上运行人脸识别模型
【基于Xilinx ZYNQ7000的PYNQ框架项目】05使用Overlay库和python父子进程实现开发板按键控制LED灯流水或熄灭
我的个人主页:小黄能吃辣的CSDN主页