编译PYNQ 在ZCU102上的镜像
由于PYNQ官方没有编译好的ZCU102的镜像,所以需要自己手动编译。这里记录一下编译过程。
因为手头上的ZCU102 批次比较新,所以目前只能使用2018.3 版本的SDK才能BOOT起来。(应该是由于换了DDR型号了,所以老版本的镜像是BOOT不起来的。板子版本是REVISION 1.1的 新批号)
PYNQ 版本Xilinx Tool 版本对应
Release version
Xilinx Tool Version
v1.4
2015.4
v2.0
2016.1
v2.1
2017.4
v2.2
2017.4
v2.3
2018.2
v2.4
2018.3
参考:
https://blog.csdn.net/vacajk/article/details/84728062
https://github.com/Xilinx/PYNQ/tree/image_v2.4/sdbuild
https://pynq.readthedocs.io/en/latest/pynq_sd_card.html#pynq-sd-card
准备工作
- 使用事先编译好的文件系统: bionic.aarch64.2.4.img
- ZCU102 BSP: xilinx-zcu102-v2018.3-final.bsp
- 如果非官方板子,比如黑金的AC7020, 没有BSP, 则可以从vivado 工程导出hdf 文件,给petalinux 生成一个bsp
- 安装好SDSoc2018.3, PetaLinux2018.3
- 系统环境 Ubuntu 1604-64
编译步骤
\# 下载 pynq
$ git clone https://github.com/Xilinx/PYNQ.git
$ cd PYNQ
$ git checkout image\_v2.4
# 检查依赖环境,qemu,crosstool-ng
$ cd ./sdbuild/
$ ./scripts/setup\_host.sh
# 准备 ZCU102 setting
$ cp -rf ./boards/ZCU104 ./boards/ZCU102
$ rm -rf ./boards/ZCU102/petalinux\_bsp/
$ mv ./boards/ZCU102/ZCU104.spec ./boards/ZCU102/ZCU102.spec
# 修改ZCU102.spec的内容, 先只保留以太网模块
$ vim ./boards/ZCU102/ZCU102.spec
> ARCH\_ZCU102 := aarch64
> BSP\_ZCU102 := xilinx-zcu102-v2018.3-final.bsp
> STAGE4\_PACKAGES\_ZCU102 := ethernet
# 拷贝 bsp 和 文件系统镜像
$ cp ~/xilinx-zcu102-v2018.3-final.bsp ./boards/ZCU102/
$ mkdir ./sdbuild/prebuilt
$ cp ~/bionic.aarch64.2.3.img ./sdbuild/prebuilt
# 根据自己安装路径配置 PATH
$ PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH
$ source /opt/pkg/petalinux/settings.sh
$ source /opt/Xilinx/Vivado/2018.3/settings64.sh
# 编译,我的i7-7500U 编译BOOT大概15分钟,编译kernel image半个小时
$ sudo echo
$ make boot\_files BOARDS=ZCU102
$ sudo echo
$ make images BOARDS=ZCU102 PREBUILT=./prebuilt/bionic.aarch64.2.3.img
# done
$ ls ./output/
然后将imge 烧进SD卡启动,就可以愉快的玩耍PYNQ了!
若板子不提供bsp 文件, 以(AC7020) 为例,则准备boards文件夹如下:
$ cp -rf ./boards/PYNQ-Z2 ./board/AC7020
$ rm -rf ./boards/AC7020/petalinux\_bsp/
$ cp your.hdf ./boards/AC7020/petalinux\_bsp/hardware\_project/system.hdf
$ cp your.bit ./boards/AC7020/base/base.bit
$ vim ./boards/AC7020/AC7020.spec
ARCH\_AC7020 := arm
BSP\_AC7020 :=
BITSTREAM\_AC7020 := base/base.bit
STAGE4\_PACKAGES\_AC7020 := pynq ethernet
$ make boot\_files BOARDS=AC7020
# 即可有编译脚本调用petalinux 生成bsp