【基于Xilinx Zynq7000的PYNQ框架项目】02 PYNQ镜像制作

发布时间:2024年01月12日


前言


由于 PYNQ 官网中没有适配 ZYNQ_MINI 开发板的现成的PYNQ镜像,我们需要用 vivado 自己设计硬件部分,然后下载与板子无关的预构建文件 PYNQ rootfs,在ubuntu系统中制作适配 ZYNQ_MINI 开发板的 PYNQ 镜像。


软件与系统的环境版本

  • Windows 11
  • VMware Workstation 17 Pro
  • Ubuntu 18.04.6
  • Vivado 2020.1
  • PetaLinux 2020.1
  • PYNQ rootfs arm v2.6.0

Ubuntu、Vivado、PetaLinux、PYNQ的版本必须与上文一致,不然可能会出现版本不适配的问题!


一、vivado硬件设计


打开vivado,新建工程文件,选择器件;点击左边栏 IP INTEGRATOR -> Create Block Design 新建一个 bd 文件(block design),添加一个 ZYNQ 模块并进行配置。具体配置需参考手上的开发板的硬件原理图、资料,以及项目的具体需求,此处不详细展开。

ZYNQ配置
为了能够控制外设,还需添加 AXI_GPIO 模块。本项目需添加两个 axi_gpio 模块,一个宽度为4位的用于控制四个 LED 灯,一个宽度为1位的用于控制 key1 按键。(双击创建的axi_gpio模块即可进入下图的设置界面)

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 镜像。

导出文件


二、ubuntu镜像制作


打开终端,输入以下命令下载PYNQ组件:
git clone https://github.com/Xilinx/PYNQ.git
cd PYNQ
git checkout v2.6.0
git checkout -b fzu3

使用 ls 命令查看 PYNQ 文件夹内容,如下则说明下载成功:
PYNQ文件夹包含内容
输入 vim ~/.bashrc 命令配置环境变量,使得每次启动终端时,自动加载好制作镜像所需的环境:
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

输入 source setup_host.sh 命令设置一些环境变量和shell函数,为后续的编译工作做准备(注意文件目录):

setup_host.sh
将 bionic.arm.2.6.0_2020_10_19.img 复制到 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 最好预留有 20G 以上的磁盘空间!
  • Ubuntu 设置 sudo 免密码!
  • 在下载的PYNQ文件夹中,全局搜索“ gitsm:// ”,如有,请将其更改为“ https:// ”或者“ http:// ”!(建议使用 VSCode 做这件事)

在构建之前,可以使用 make checkenv 命令对个软件环境的版本进行确认和检查,没有问题再开始构建。

如果构建出现bug,则 debug 完成后要先运行如下命令将上次构建的镜像清除,再开始重新构建镜像:

make delete
make unmount
make clean

最后一步,God bless you!


三、Win32DiskImage烧写镜像


镜像制作成功后,会在 sdbuild 文件夹中生成 output 文件夹,fzu3-2.6.0.img 即为 PYNQ 镜像文件。

output文件夹
TF卡插入电脑,格式化之后,将 fzu3-2.6.0.img 复制到 Windows 系统下,使用 Win32DiskImager 工具将镜像烧写到TF 卡上(TF卡建议 16G 以上)。


四、上板启动


用网线、UART、DEBUG线将笔记本与开发板相连接,将 TF 卡插入开发板的 TF1 卡槽里,拨动拨码开关设置 BOOT 为 TF 卡启动,按电源按钮上电:

TF启动
关闭 Windows 防火墙,打开 MobaXterm,使用网口和串口登录。用户默认密码是xilinx。

网口串口登录
打开笔记本浏览器,输入网址 http://pynq,输入默认登录密码 xilinx 即可进入 jupyter notebook 开发页面,进行 python 代码的编写。本项目需要用到Overlay库对开发板的硬件进行控制,因此还要将.hwh、.bit、.tcl 文件放在 control.py 所在的文件夹目录下。注意这三个文件的命名要保持一致。

jupyter notebook


总结


至此,该项目最难的(个人认为)为 ZYNQ_MINI 开发板量身定制一个 PYNQ 镜像的部分就完成啦!这篇博客也是得到了跟我共同完成该项目的林同学的大力支持,向他表示感谢!

有不清楚的地方,欢迎大家在评论区交流~

您的点赞与收藏,是我持续创作优质博客的最大动力!

本项目系列文章:
【基于Xilinx ZYNQ7000的PYNQ框架项目】——01人脸识别项目介绍与展示

【基于xilinx Zynq7000的PYNQ框架项目】03 Socket实现开发板和电脑的实时视频传输并存储图片

【基于Xilinx ZYNQ7000的PYNQ框架项目】04开发板上运行人脸识别模型

我的个人主页:小黄能吃辣的CSDN主页

文章来源:https://blog.csdn.net/lhozvke/article/details/135496204
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。