ZCU106 - PYNQ 镜像制作与运行

本文主要介绍了如何将 PYNQ 官方给出的 ZCU104 相关配置修改并重新制作 ZCU106 的 PYNQ 的启动镜像。

0. 系统配置和硬件信息

  • 操作系统:Ubuntu 18.04.6 LTS、Windows 11(用来烧写制作好的镜像)
  • 硬件:Xilinx ZCU106
  • PYNQ 版本:v2.7.0
  • 软件:Linux -(Vivado 2020.2、Vitis 2020.2、PetaLinux 2020.2、Xilinx HDMI License);Win -(Win32DiskManager)

1. 下载必需软件

访问 Xilinx 官方下载网站,下载 2020.2 版本的 VitisPetaLinux ToolsZCU106 BSP 文件(在 PetaLinux Tools 的页面下)。

访问 PYNQ 官方网站,下载 v2.7.0 的 rootfs(aarch64arm),用来制作镜像。

2. 制作启动镜像(最好科学上网)

# 拉取 PYNQ 官方 repo 并切换至 2.7 版本
git clone https://github.com/Xilinx/PYNQ.git
cd PYNQ
git checkout image\_v2.7
 
# 检查相关环境
cd ./sdbuild/scripts
./setup_host.sh
 
# 将 ZCU104 的相关文件文件复制一份到 ZCU106 文件夹中
cd ../..
cp -rf ./boards/ZCU104 ./boards/ZCU106
rm -rf ./boards/ZCU106/petalinux_bsp/
mv ./boards/ZCU106/ZCU104.spec ./boards/ZCU106/ZCU106.spec

接下来更改 ZCU106.spec 文件,修改后的内容如下:

ARCH_ZCU106 := aarch64    # 更改为想要烧写的架构 aarch64 or arm
BSP_ZCU106 := xilinx-zcu106-v2020.2-final.bsp    # 更改为 106 的 bsp 文件
FPGA_MANAGER_ZCU106 := 1    # 该值为 1 则表示为不会在启动前就配置比特流,反之则为 0

# 所需要的 package,博主使用了下面四个 package,其中 sensorconf 主要提供了更多的 power rails 用于 PS/PL 的功耗测量,其他三个比较有必要(主要支持了自动配置 ip 地址,运行自己的 ip 核等)。
STAGE4_PACKAGES_ZCU106 := xrt pynq ethernet sensorconf

接下来准备好之前下载过的文件,source 环境变量:

# 把之前下载好的 bsp 文件和 rootfs 文件放到对应的文件夹下
cp ~/xilinx-zcu102-v2020.2-final.bsp ./boards/ZCU106/
mkdir ./sdbuild/prebuilt
cp ~/focal.aarch64.2.7.0_2021_11_17.tar.gz ./sdbuild/prebuilt
 
# 配置相关环境变量
PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH
source $Your_Xilinx_Path/Xilinx/Vitis/2020.2/settings64.sh
source $Your_Xilinx_Path/Xilinx/Vivado/2020.2/settings64.sh
source $Your_Xilinx_Path/Xilinx/petalinux/2020.2/settings.sh

然后编译镜像(其中综合 IP 的时间较长,耐心等待):

cd ./sdbuild/
make boot_files BOARDS=ZCU106
make images BOARDS=ZCU106 PREBUILT=./prebuilt/focal.aarch64.2.7.0_2021_11_17.tar.gz

3. 中途可能出现的问题

(1) Vivado 生成 IP 的问题(Error: Failed to generate IP......)

下载 Xilinx 官方补丁 (注意:补丁里的 python 文件在运行的时候要和其 README 中所说的路径相同,不然补丁会找不到相关的 tcl 文件而导致运行失败)

(2) Xilinx HDMI IP License 的问题:

在综合 HDMI 相关 IP 时,如果没有成功导入 License 会报错,需要访问官方 HDMI IP License 网站获取 License,把 .lic 文件导入 Xilinx License Manager 中。

(3) HDMI IP 在 make 时出现了如下的类似错误:

make PYNQ_BUILD_ARCH=aarch64 -C pynq/lib/_pynq/_displayport/
make[1]: Entering directory '/tmp/pip-req-build-qwdx2lh8/pynq/lib/_pynq/_displayport'
  /usr/lib/ccache/g++ -fPIC -I/usr/include/libdrm -c -g -std=c++11 displayport.cpp
  /usr/lib/ccache/g++ -shared -fPIC -rdynamic displayport.o  -ldrm -o libdisplayport.so
rm *.o
make[1]: Leaving directory '/tmp/pip-req-build-qwdx2lh8/pynq/lib/_pynq/_displayport'
  copying pynq/lib/_pynq/_displayport/libdisplayport.so -> build/lib/pynq/lib/video
make PYNQ_BUILD_ARCH=aarch64 -C pynq/lib/_pynq/_xhdmi/
make[1]: Entering directory '/tmp/pip-req-build-qwdx2lh8/pynq/lib/_pynq/_xhdmi'
make -C .. -f embeddedsw_lib.mk
make[2]: Entering directory '/tmp/pip-req-build-qwdx2lh8/pynq/lib/_pynq'
make[2]: *** No rule to make target 'embeddedsw', needed by '_xhdmi/libxhdmi.so'.  Stop.
make[2]: Leaving directory '/tmp/pip-req-build-qwdx2lh8/pynq/lib/_pynq'
make[1]: *** [Makefile:7: all] Error 2
make[1]: Leaving directory '/tmp/pip-req-build-qwdx2lh8/pynq/lib/_pynq/_xhdmi'
error: command 'make' failed with exit status 2

解决方法:make clean,尝试重新 make。

4. 镜像烧写

镜像制作完成后,可以在 sdbuild/output 下的文件找到 .img 文件,将镜像文件通过 Win32DiskManager 写入进需要插进 ZCU106 的 SD 卡中即可。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值