1 说明
本文介绍了通过Xilinx官方网站提供的Vivado、petalinux等工具制作官方开发板Xilinx MPSoC ZCU102启动文件BOOT.BIN的过程。此启动文件可通过SD启动方式被加载,最终引导启动u-boot。基本流程是首先通过Vivado生成ZCU102的硬件描述文件(2019版本中为xsa文件,之前版本为hdf文件),再由petalinux编译生成BOOT.BIN。本文中使用Vivado、petalinux均为2019版本,即目前最新版本。
2 硬件描述文件制作
2.1 开发环境与参考
本文使用windows版本Vivado,运行环境为windows 10。详细信息可参考官方文档:
https://china.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug898-vivado-embedded-design.pdf
2.2 下载安装Vivado
2019版本Vivado包含在Vitis中,Vitis下载地址:
https://china.xilinx.com/member/forms/download/xef.html?filename=Xilinx_Unified_2019.2_1106_2127_Win64.exe
注意下载前需要注册Xilinx官网账号,下载后双击运行。如图 2.1所示。
图 2.1 打开安装软件
输入Xilinx官网账号,选择下载完整的安装镜像(以备后用),选择下载位置(需至少30G空间)。如图 2.2所示。
图 2.2 配置下载位置
选在下载Vivado软件,如图 2.3所示。
图 2.3 选择Vivado软件
选择Vivado HL System Edition后点击下一步,在下一页面中确保选择UltraScale+,如图 2.4所示。
图 2.4 选择UltraScale+
下一步后点击“下载”进入下载页面,这里需要耗费很长一段时间。下载过程可能中断,选择断电续传模式重新下载即可。如图 2.5所示。
图 2.5 下载软件
下载完成后双击xsetup.exe安装到对应位置即可。成功安装后双击桌面生成的Vivado 2019.2,打开界面如图 2.6所示。
图 2.6 Vivado界面
2.3 创建工程
点击创建工程,如图 2.7所示。
图 2.7 创建工程
点击下一步后编辑工程名称与工程位置,如图 2.8所示。
图 2.8 编辑工程名称与工程位置
选择Example Project后选择Base Zynq UltraScale+ MPSoC,如图 2.9所示。
图 2.9 选择Base Zynq UltraScale+ MPSoC
选择ZCU102开发板,如图 2.10所示。
图 2.10 选择ZCU102开发板
点击完成创建工程。新创建的工程包括ZCU102所需的默认配置,可按需修改。
2.4 生成导出硬件描述文件
点击Run Synthesis,如图 2.11所示。
图 2.11 Run Synthesis
等待右上角正在运行中的标志结束,如图 2.12所示。
图 2.12 运行中
在Design Runs中可查看当前运行的位置,如图 2.13所示。
图 2.13 运行位置
运行结束后出现完成界面,选择Run Implementation,点击OK,如图 2.14所示。
图 2.14 完成 Synthesis
使用同样的方式查看Run Implementation运行情况,此步骤会运行较长时间。完成后显示完成界面,点击OK即可。如图 2.15所示。
图 2.15 完成
点击file--->Export--->Export Hardware…,如图 2.16所示。
图 2.16 点击生成硬件描述文件
默认导出路径为工程所在目录,不要修改此目录,如图 2.17所示。
图 2.17 导出位置
成功导出后可在对应目录下找到文件Base_Zynq_MPSoC_wrapper.xsa,如图 2.18所示。
图 2.18 生成xsa文件
点击Generate Bitstream生成BIT文件,此过程需要持续一段时间,如图 2.19所示。
图 2.19 生成Generate Bitstream
生成过程可见右上角状态栏与Design Runs窗口,如图 2.20所示。
图 2.20 生成过程
成功生成后弹出已完成界面,点击OK即可,如图 2.21所示。
图 2.21 生成结束
点击File--->Export--->Export Bitstream File,生成bit文件,如图 2.22所示。
图 2.22 导出bit文件
选择导出bit文件路径,这里选择桌面,如图 2.23所示。
图 2.23 导出bit文件
到此生成了2个硬件描述文件,xsa与bit。
3 编译BOOT.BIN
3.1 运行环境与参考
编译BOOT.BIN需在Linux环境中进行,官方推荐Ubuntu16.04 32bit,建议不要修改。本文在Ubuntu16.04 32bit虚拟机中进行操作。详细信息请参考官方文档:
https://china.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug1144-petalinux-tools-reference-guide.pdf
在虚拟机中安装运行环境,如程序清单 3.1所示。
程序清单 3.1 安装环境
# sudo apt-get install -y gcc git make net-tools libncurses5-dev ttpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multlib build-essental -dev zlib1g:i386 screen pax gzip |
3.2 下载安装
首先需要下载petalinux(2019)与ZCU102官方BSP。注意下载前需要登录Xilinx账户,下载地址:
https://china.xilinx.com/member/forms/download/xef.html?filename=petalinux-v2019.2-final-installer.run
https://china.xilinx.com/member/forms/download/xef.html?filename=xilinx-zcu102-v2019.2-final.bsp
3.3 安装petalinux
注意:安装petalinux不能使用root用户
创建安装目录,创建后更改目录所有者为用户:
$ sudo mkdir -p /opt/pkg/petalinux/2019.2
$ sudo chown -R stone:stone /opt/pkg/petalinux
安装petalinux
$ ./petalinux-v2019.2-final-installer.run /opt/pkg/petalinux/2019.2
安装过程可能会缺少部分库,按需要安装即可
获取设置脚本,配置当前环境,成功获取后即可以使用petalinux-xxx命令,如图 3.1所示。
图 3.1 获取设置脚本
3.4 创建、配置、编译、打包
使用官方下载的ZCU102 BSP创建工程:
$ petalinux-create -t project -s /home/stone/xilinx-zcu102-v2019.2-final.bsp
成功创建工程后在当前目录出现工程目录,如图 3.2所示。
图 3.2 工程目录
先拷贝硬件配置文件Base_Zynq_MPSoC_wrapper.xsa到某个目录下,再导入硬件配置:
$ cp Base_Zynq_MPSoC_wrapper.xsa /home/stone/
$ cd /home/stone/petalinux/xilinx-zcu102-2019.2
$ petalinux-config --get-hw-description=/home/stone/
配置过程中会自动在/home/stone目录下搜索xsa文件。配置中出现选择菜单可直接退出不理会。
编译:
$ petalinux-build
拷贝准备好的bit文件,通过如下命令进行打包:
$ petalinux-package --boot --format BIN --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga /home/stone/*.bit --force
打包结束后即可在images/linux目录下生成BOOT.BIN文件,此目录下还包括官方linux镜像、文件系统等文件,如图 3.3所示。
图 3.3 BOOT.BIN
将BOOT.BIN文件放入SD卡,切换ZCU102开发板到SD卡启动,上电即可启动设备。
3.5 使用自定义u-boot源码
使用官方BSP默认无法查看源码,但可以通过配置其他的源码路径进行修改。下载Xilinx官方u-boot源码,下载地址:
https://github.com/Xilinx/u-boot-xlnx/tree/xilinx-v2019.2
下载后解压到任意目录,输入命令$ petalinux-config打开配置菜单,选择
Linux Components Selection --->
u-boot () --->
选择ext-local-src,返回
External u-boot local source settings --->
输入解压u-boot源码路径,如图 3.4所示。
图 3.4 更换源码路径
保存退出后使用命令petalinux-bulid重新编译即可。