此文章记录使用矿板搭建环境的步骤,和解决其中的问题

1、使用VMware搭建Ubuntu16.04版本的虚拟机,一定要注意虚拟机内存至少4G左右,否则后面会出现很多问题。

shell切换到bash

1
sudo dpkg-reconfigure dash 选NO

2、根据网上教程安装 petalinux2018.3 Vivado2018.3 。其中Vivado里面会包含SDK。这两个安装到哪个目录下都行,我一般安装到 /home/user/ 目录下。

有人喜欢安装到 /opt 目录下,安装到这个目录下,需要注意先改变 /opt 是属性再安装。

1
sudo chown -R $USER:$USER /opt

3、准备 .bit和 .hdf文件,这个两个文件是利用Windows的Vivado中 Run Block Automation 生成的。并把这两个文件改名为system.hdf base.bit备用。

4、把PYNQ先从github上面下载下来

1
2
3
4
git clone -b v2.4 https://github.com/Xilinx/PYNQ.git
cd PYNQ
git checkout v2.4
git checkout -b zynq7010  

从2.4分支上再创建一个新分支,有问题可以倒退回去。

把pynq_rootfs_arm_v2.4.zip文件系统下载下来备用

https://www.xilinx.com/member/forms/download/xef.html?filename=pynq_rootfs_arm_v2.4.zip

5、进入/PYNQ/sdbuild/scripts/ 执行./setup_host.sh 把qemu和crosstool-ng下载下来,默认下载到/opt 目录

进入文件夹 /opt/crosstool-ng/lib/crosstool-ng-1.22.0/scripts/build/libc/ 打开文件newlib.sh

"{http://mirrors.kernel.org/sourceware/newlib,ftp://sourceware.org/pub/newlib}"

去掉花括号 改为 "http://mirrors.kernel.org/sourceware/newlib”

6、执行环境变量

1
2
3
sudo vi  ~/.bashrc   
export PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH
source ~/.bashrc 

再执行

1
2
3
petalinux/2018.3/settings.sh
Vivado/2018.3/settings64.sh
SDK/2018.3/settings64.sh

7、由于没有安装SDx环境,所用进入 /PYNQ/sdbuild/ 文件夹,打开Makefile 删除 which sdx | fgrep ${KERNEL_VERSION}

8、在 /PYNQ/sdbuild/ 目录下新建文件夹 ‘prebuilt’ 将bionic.arm.2.4.img文件拷贝至该文件夹 在 /PYNQ/boards/ 目录下新建文件夹 zynq7010 在 zynq7010 中再新建两个文件夹分别为 base 和petalinux_bsp 在 petalinux_bsp 中再建立文件夹 hardware_project 分别将base.bit拷贝到base;system.hdf拷贝到hardware_project zynq7010目录下新建zynq7010.spec 打开zynq7010.spec,修改内容如下:

1
2
3
4
5
        ARCH_${BOARDS} := arm
        BSP_${BOARDS} := 
        BITSTREAM_${BOARDS} := base/base.bit

        STAGE4_PACKAGES_Pynq-Z2 := pynq  ethernet

9、在make 前先执行 sudo - 操作,否则make的话 会出现错误。checkenv 的时候错误

1
        make BOARDS=zynq7010  PREBUILT=./prebuilt/bionic.arm.2.4.img

如make出现错误,解决后先执行make clean后,再进行make

10、等2个小时左右就编译完成了。

烧写 SD卡。 将 /sdbuild/output 目录下生成的.img复制至Windows 使用 Win32DiskImager将镜像烧写至SD卡(至少8g)上

或者Linux下使用dd命令烧写

sudo dd if=<PYNQ>/sdbuild/output/<rootfs.img> of=/dev/sdb bs=4M