开发板:Zynq7030数据采集板
PC平台:Ubuntu-18.04 + MobaXterm
开发环境:Xilinx Vivado + SDK -18.3
交叉编译工具:arm-linux-gnueabihf-
学习目标:生成 BOOT.bin 文件
在第一篇文章Zynq-7000系列之linux开发学习笔记:开发前准备(一)中已经提供过u-boot的下载链接,这里再提供一下,方便中途看本文章的人进行下载,链接如下:
u-boot 2018.3 :https://github.com/Xilinx/u-boot-xlnx/tree/xilinx-v2018.3
下载完u-boot源码后,将文件解压到相应目录,我这里还是解压到前几篇文章使用的目录。进到目录可以看到如下的文件结构:

首先我们要设置好交叉编译工具。这里是一个比较坑的一点,因为新版的SDK自动安装交叉编译工具,并且更新为 arm-linux-gnueabihf- ,已不是之前的 arm-xilinx-linux-gnueabi- 了。
这里一定要注意。使用旧版的软件时,比如2015.3左右版本的软件 ,就需要安装 arm-xilinx-linux-gnueabi- 交叉编译工具;而和我同样使用2018.3版本软件的同学,就可以不用管了,因为安装 Vivado时已经自动安装好了。现在有很多文章还都是旧的编译器,使用旧的命令编译就会显示没有命令。
这里先设置好环境变量,就可以看到有如下的交叉编译工具,操作如下:
接着我们需要修改一些文件:首先进入到configs目录,复制一份zynq_zc702_defconfig的配置,并改名为 zynq_zc703_defconfig ,再将里面内容的zc702也修改为 zc703 ,然后保存即可。
由于默认生成的u-boot默认使用 ramdisk 作为文件系统,而我们使用的是sd卡上的Linaro文件系统,所以还需修改一下 include/configs/zynq-common.h 这个文件,让u-boot在启动的时候不会试图去加载ramdisk image。该内容大概在271行:
修改完后,正常来说就可以进行make编译了。
但由于Zynq7030数据采集板采用的是Xilinx Zynq 7030 SoC,官方下载的u-boot源码里面并没有包含7030的配置文件以及设备树,所以才复制一份 zynq_zc703_defconfig 的配置。这里还需要再复制一份 zynq-zc703.dts 设备树文件,不然编译的时候会报错。这里要注意!!!
这里还要修改一下设备树 zynq-zc703.dts 里面的启动配置,默认是没有的。
需要自己添加 bootargs = “console=ttyPS0, root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0” ,具体的操作如下:
接下来回到u-boot主目录下,就可以开始进行编译了。
这时可能会出现如下的错误:

这个是openssl的依赖问题,安装支持即可。
安装完成后,再进行make就可以了。等待一段时间,就可以生成u-boot了,大功告成0.0.0.0

此时就可以在u-boot源码的主目录下看到生成的u-boot,然后将u-boot复制到和fsbl.elf同一个文件夹中,并改名为u-boot.elf。
至此,生成BOOT.bin所需要的三个文件: fsbl.elf 、 fsbl_wrapper.bit 、 u-boot.elf 已经准备好了。接下来只需在SDK中,将三个文件生成BOOT.bin即可。操作如下图所示:

添加三个文件,Create Image即可。
然后将生成的BOOT.bin复制到SD卡中,将SD卡插入到板子止,打开PC端的MobaXterm,设置好串口,然后连接USB线和电源线,即可看到如下输出信息:

版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3180.html