硬件平台:zynq7010
虚拟机平台:Ubuntu 18.04
pynq源码版本:2.7
本人参考了下方的官方教程
启明星Zynq7010制作PYNQ V2.4镜像过程记录_正点原子pynq-CSDN博客https://blog.csdn.net/qq_41873311/article/details/124284037ZCU102制作PYNQ v2.7镜像_zcu102 pynq v2.7-CSDN博客https://blog.csdn.net/ssunrt/article/details/125218877?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171590817316800226598226%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171590817316800226598226&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-125218877-null-null.142%5Ev100%5Epc_search_result_base8&utm_term=PYNQ%20V2.7&spm=1018.2226.3001.4187附上prebuilt2.7根文件的压缩包
链接:https://pan.baidu.com/s/1TIa6pm3efIRswXpDH5iAbQ
提取码:NUAA
再附上SDIST包的官方下载连接
Release Austin Release · Xilinx/PYNQ · GitHub
踩坑问题1:在安装依赖环境时,没有加Sudo,导致无法正确获取已安装软件的版本
在执行如下指令安装qmu与crosstool-ng时,报错没有满足Sed>=4.0的条件,但实际已经安装了4.4的sed
<PYNQ repository>/sdbuild/scripts/setup_host.sh
加上sudo执行就顺利通过了
踩坑问题2:在已经加上PYNQ_SDIST路径,编译自己的开发板时,还会编译其他板子的bitstream
遇到的问题与下方这个帖子一模一样
+ boards='Pynq-Z1
Pynq-Z2
ZCU104'
+ for bd_name in $boards
+ cd /home/snowball/PYNQ/sdbuild/build/PYNQ/sdist_untar/pynq-2.7.0/boards/Pynq-Z1
++ find . -maxdepth 2 -iname '*.bit' -printf '%h\n'
++ cut -f2 -d/
+ overlays='logictools
base'
+ for ol in $overlays
+ sudo cp -fL logictools/logictools.bit logictools/logictools.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z1/logictools
+ for ol in $overlays
+ sudo cp -fL base/base.bit base/base.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z1/base
+ for bd_name in $boards
+ cd /home/snowball/PYNQ/sdbuild/build/PYNQ/sdist_untar/pynq-2.7.0/boards/Pynq-Z2
++ find . -maxdepth 2 -iname '*.bit' -printf '%h\n'
++ cut -f2 -d/
+ overlays='logictools
base'
+ for ol in $overlays
+ sudo cp -fL logictools/logictools.bit logictools/logictools.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z2/logictools
+ for ol in $overlays
+ sudo cp -fL base/base.bit base/base.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z2/base
+ for bd_name in $boards
+ cd /home/snowball/PYNQ/sdbuild/build/PYNQ/sdist_untar/pynq-2.7.0/boards/ZCU104
++ find . -maxdepth 2 -iname '*.bit' -printf '%h\n'
++ cut -f2 -d/
+ overlays=base
+ for ol in $overlays
+ sudo cp -fL base/base.bit base/base.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/ZCU104/base
+ rm -rf /home/snowball/PYNQ/sdbuild/build/PYNQ/sdist_untar
+ cd /home/snowball/PYNQ/sdbuild/build/PYNQ
+ ./build.sh
./build.shbuilding bitstream logictools.bit for Pynq-Z2
make[1]: 进入目录“/home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z2/logictools”
rm -rf logictools *.jou *.log NA .Xil
make[1]: 离开目录“/home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z2/logictools”
make[1]: 进入目录“/home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z2/logictools”
vivado -mode batch -source build_ip.tcl -notrace………………
………………
INFO: [HLS 200-112] Total CPU user time: 9.06 seconds. Total CPU system time: 1.48 seconds. Total elapsed time: 12.12 seconds; peak allocated memory: 140.066 MB.
INFO: [Common 17-206] Exiting vitis_hls at Fri May 17 15:30:34 2024...
child process exited abnormally
INFO: [Common 17-206] Exiting Vivado at Fri May 17 15:30:34 2024...
makefile:10: recipe for target 'hls_ip' failed
make[1]: *** [hls_ip] Error 1
make[1]: 离开目录“/home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z2/logictools”
+ unmount_special
+ for fs in $fss
+ sudo umount -l /home/snowball/PYNQ/sdbuild/build/focal.zynq7010/proc
+ for fs in $fss
+ sudo umount -l /home/snowball/PYNQ/sdbuild/build/focal.zynq7010/run
+ for fs in $fss
+ sudo umount -l /home/snowball/PYNQ/sdbuild/build/focal.zynq7010/dev
+ sudo umount -l /home/snowball/PYNQ/sdbuild/build/focal.zynq7010/ccache
+ rmdir /home/snowball/PYNQ/sdbuild/build/focal.zynq7010/ccache
Makefile:: recipe for target '/home/snowball/PYNQ/sdbuild/build/zynq7010.tar.gz' failed
可以看到报错中,先执行了./build.sh,然后开始building bitstream logictools.bit for Pynq-Z2
走查build.sh,发现是没有检测到板子路径下bit文件与hwh文件就会开始make bitstream
通过下列debug信息可知,PYNQ_SDIST已经成功解压到对应路径,也看到了各个板子下的bit文件,不知道为何无法被正确检测到,一直没有找到答案
+ boards='Pynq-Z1
Pynq-Z2
ZCU104'
+ for bd_name in $boards
+ cd /home/snowball/PYNQ/sdbuild/build/PYNQ/sdist_untar/pynq-2.7.0/boards/Pynq-Z1
++ find . -maxdepth 2 -iname '*.bit' -printf '%h\n'
++ cut -f2 -d/
+ overlays='logictools
base'
+ for ol in $overlays
+ sudo cp -fL logictools/logictools.bit logictools/logictools.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z1/logictools
+ for ol in $overlays
+ sudo cp -fL base/base.bit base/base.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z1/base
+ for bd_name in $boards
+ cd /home/snowball/PYNQ/sdbuild/build/PYNQ/sdist_untar/pynq-2.7.0/boards/Pynq-Z2
++ find . -maxdepth 2 -iname '*.bit' -printf '%h\n'
++ cut -f2 -d/
+ overlays='logictools
base'
+ for ol in $overlays
+ sudo cp -fL logictools/logictools.bit logictools/logictools.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z2/logictools
+ for ol in $overlays
+ sudo cp -fL base/base.bit base/base.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/Pynq-Z2/base
+ for bd_name in $boards
+ cd /home/snowball/PYNQ/sdbuild/build/PYNQ/sdist_untar/pynq-2.7.0/boards/ZCU104
++ find . -maxdepth 2 -iname '*.bit' -printf '%h\n'
++ cut -f2 -d/
+ overlays=base
+ for ol in $overlays
+ sudo cp -fL base/base.bit base/base.hwh /home/snowball/PYNQ/sdbuild/build/PYNQ/boards/ZCU104/base
+ rm -rf /home/snowball/PYNQ/sdbuild/build/PYNQ/sdist_untar
+ cd /home/snowball/PYNQ/sdbuild/build/PYNQ
于是干脆把这句make clean && make直接注释掉(注意:操作sdbuild/builid/pynq下的build.sh)
然后就能顺利编译出镜像了
to be continued