那些年我们定制PYNQ需要避免的坑

0 开发环境

  • 主机:AMD 3950X、Ubuntu18.04.5、5.4.0-45-generic
  • 开发板:Eclypse-Z7
  • 软件环境:Vivado 2019.1、PetaLinux 2019.1、PYNQ2.5
  • 实验时间:2020/9/8

注意事项:

  • Vivado 2019.1、PetaLinux 2019.1、PYNQ2.5必须互相匹配,否则据我所知不可能成功。而且不同的版本遇到的问题略有差别,这也是我总结这篇博客的原因之一;
  • 本实验采用PYNQ2.5进行,如果版本不同步骤会略有差别;
  • 采用Eclypse-Z7为例进行构建PYNQ镜像,其他ZYNQ系列的开发板类似的操作;
  • 强烈建议使用Ubuntu18.04.5进行构建;
  • 2020/9/8进行的测试,部分软件包会进行更新commit,会逐渐修复或遇到其他bug,网上也有很多PYNQ构建的示例,但如果不完全按照他的环境来,很可能会不成功;
  • 使用AMD平台进行构建的小伙伴,可能会遇到一个独特的bug,这个我会在后面细说,当然也可能是我的理解失误,还请批评指正。

个人能力有限,不合理的地方,还望不吝赐教!!!

1 Xilinx开发环境安装

1.1 Vivado 2019.1

建议使用./xsetup直接进行安装,不要使用sudo,遇到的权限问题,使用chownchgrp对相应的文件夹进行修改用户以及用户组。

注:Ubuntu下安装与Windows下安装非常类似,这里就不大费周章说明了。

1.2 PetaLinux 2019.1

可以直接从官网下载PetaLinux 工具文档,里面有非常细致的说明!!!
可以直接从官网下载PetaLinux 工具文档,里面有非常细致的说明!!!
可以直接从官网下载PetaLinux 工具文档,里面有非常细致的说明!!!

文档里面的软件包安装可以直接复制下面的。

sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential zlib1g:i386 screen pax gzip

在这里插入图片描述
在这里插入图片描述

1.3 PYNQ 2.5

建立自己的代码仓库方便管理

git clone https://github.com/Xilinx/PYNQ
cd PYNQ
git checkout -b pynq_2.5_eclypse_z7 origin/image_v2.5

在这里插入图片描述
注:里面的名字pynq_2.5_eclypse_z7可以根据自己需要进行设置,这样方便识别管理。

后面环境的构建可以参考官方文档PYNQ SD Card,也可以听我继续啰嗦。

使用./sdbuild/scripts/setup_host.sh来进行PYNQ开发环境的安装,如果顺利的话可以直接安装成功,如果不的话可以根据log输出利用谷歌进行搜索解决。

下面说一下可能遇到的问题之一Package 'docker-ce' has no installation candidate,具体如下图所示。
在这里插入图片描述
解决方案为

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic test"
sudo apt update
sudo apt install docker-ce

如果感兴趣的话,这是我找到解决方案的网址18.04中的“软件包’docker-ce’没有安装候选程序”

1.4 设置环境变量

可以直接在~/.bashrc中加入如下代码,然后利用source ~/.bashrc进行加载对应的环境变量,以后每次打开一个新终端,都会自动加载。

source /tools/Xilinx/Vivado/2019.1/settings64.sh                                                                                                                                         
source /tools/Xilinx/petalinux/2019.1/settings.sh
source /tools/Xilinx/SDK/2019.1/settings64.sh
export PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH

可以再执行一个petalinux-util --webtalk off进行关闭反馈工具使用统计数据,具体可以见之前提过的官方文档UG1144

2 创建Vivado工程

注:下面以Eclypse-Z7官方github自带的tcl文件进行重建一个基本硬件工程,其他板子也可以有类似的操作。

首先从官方github上下载对应的仓库。

git clone --recursive https://github.com/Digilent/Eclypse-Z7-OOB
cd Eclypse-Z7-OOB/

打开Vivado,利用tcl进行工程的重建,然后生成对应的bit文件。

set argv ""; source digilent-vivado-scripts/digilent_vivado_checkout.tcl

在这里插入图片描述
在Vivado工程中找到如下文件

  • <project_name>.runs\impl_1<project_name>_wrapper.bit
  • <project_name>.sdk<project_name>_wrapper.hdf

并修改对应的文件名为base.bit以及system.hdf

3 构建镜像的准备工作

3.1 准备相应的文件

PYNQ rootfs arm v2.5下载根文件系统,可以加快镜像构建速度。

  • ./PYNQ/sdbuild/ 目录下新建文件夹prebuilt将上面下载解压的bionic.arm.2.5.img文件拷贝至该文件夹
  • ./PYNQ/boards/ 目录下新建文件夹 Eclypse-Z7
  • Eclypse-Z7 中再新建两个文件夹分别为 basepetalinux_bsp
    • petalinux_bsp 中再建立文件夹 hardware_project
    • base.bit拷贝到base
    • system.hdf拷贝到hardware_project
  • 复制./PYNQ/boards/PYNQ-Z2中的 .spec文件至Eclypse-Z7下并修改文件名为Eclypse-Z7.spec

修改Eclypse-Z7.spec内容如下
在这里插入图片描述
注:框中的要特别注意修改。

3.2 减少构建时间

删除不需要的./PYNQ/boards/ZCU104文件夹,并进行commit
在这里插入图片描述
具体操作为

git rm -r boards/ZCU104
git commit -m "Delete ZCU104 board to speed up,and avoid some errors."

感兴趣的话可以使用git log --stat -p进行查看commit之后的log。

3.3 ubuntu sudo 免密码

sudo visudo

%sudo ALL=(ALL:ALL) ALL下面添加一行username ALL=(ALL) NOPASSWD: ALL即可。

我的修改截图为在这里插入图片描述

4 构建PYNQ

4.1 如果幸运的话

执行如下命令就可以进入进行长时间的镜像构建阶段了。

make BOARDS=Eclypse-Z7 PREBUILT=./prebuilt/bionic.arm.2.5.img

在这里插入图片描述
成功之后可以进行镜像烧写启动了

sudo dd if=./output/Eclypse-Z7-2.5.img of=/dev/sdc && sync

下面是板卡启动打印的一些信息
在这里插入图片描述

下面是使用本板卡的ZMOD ADC扩展卡做的ADC Demo,证明该PYNQ镜像可以正常使用
在这里插入图片描述

注意事项

  • 可能需要重复执行这个命令多次,目前没有找到原因,希望了解这个情况的胖友可以说明下;
  • 镜像烧写要写入自己的TF卡!
  • 如果遇到一些问题,可以看如下的解决通道。

4.2 Unable to connect to bitbake server

这个问题不是很常见,应该是属于环境配置的个性问题,如果再构建的过程中遇到如下情况
在这里插入图片描述

可以通过删除如下文件进行解决

rm -rf ./build/Eclypse-Z7/petalinux_project/build/bitbake.lock

如果找不到对应的文件,可以在sdbuild目录下进行搜索find . -name bitbake.lock即可
然后重新执行如下命令即可进行正常构建。

当然也可以sudo make clean清除所有生成的文件。

具体原因可详见Unable to start bitbake server

4.3 No such file or directory while trying to open /dev/mapper/loop11p2

如果你是AMD平台,可能会遇到如下问题
在这里插入图片描述
在这里插入图片描述
找不到对应挂载的loop,然后导致后面镜像生成错误,解决方案如下

首先umount对应的挂载点,可以通过文件夹右边的小三角进行卸载,也可以执行相应的命令进行卸载。
在这里插入图片描述
然后修改如下文件为

vim ./scripts/resize_umount.sh
vim ./build/PYNQ/sdbuild/scripts/resize_umount.sh

在这里插入图片描述
注:这个loop的数值修改为报错的那个挂载点,因为大部分人不会遇到这个问题,所以就不细说了。



原创不易,严禁剽窃!

在这里插入图片描述

欢迎大家关注我创建的微信公众号——小白仓库
原创经验资料分享:包含但不仅限于FPGA、ARM、RISC-V、Linux、LabVIEW等软硬件开发,另外分享生活中的趣事以及感悟。目的是建立一个平台记录学习过的知识,并分享出来自认为有用的与感兴趣的道友相互交流进步。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值