本文介紹了通過Xilinx官方網站提供的Vivado、petalinux等工具製作官方開發板Xilinx MPSoC ZCU102啓動文件BOOT.BIN的過程。此啓動文件可通過SD啓動方式被加載,最終引導啓動u-boot。基本流程是首先通過Vivado生成ZCU102的硬件描述文件(2019版本中爲xsa文件,之前版本爲hdf文件),再由petalinux編譯生成BOOT.BIN。本文中使用Vivado、petalinux均爲2019版本,即目前最新版本。
本文使用windows版本Vivado,運行環境爲windows 10。詳細信息可參考官方文檔:
https://china.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug898-vivado-embedded-design.pdf
2019版本Vivado包含在Vitis中,Vitis下載地址:
注意下載前需要註冊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.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所需的默認配置,可按需修改。
點擊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所示。
生成過程可見右上角狀態欄與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個硬件描述文件,xsa與bit。
編譯BOOT.BIN需在Linux環境中進行,官方推薦Ubuntu16.04 32bit,建議不要修改。本文在Ubuntu16.04 32bit虛擬機中進行操作。詳細信息請參考官方文檔:
在虛擬機中安裝運行環境,如程序清單 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=xilinx-zcu102-v2019.2-final.bsp
注意:安裝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 獲取設置腳本
使用官方下載的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卡啓動,上電即可啓動設備。
使用官方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重新編譯即可。