如何在Petalinux 2024.2上啟動Linux并開發(fā)實際應用程序
在ZCU104上部署PetaLinux 2024.2,并提供安裝、引導和自定義應用程序,用于高級嵌入式系統(tǒng)開發(fā)。
ZCU104 MPSoC開發(fā)平臺:PetaLinux 2024.2基本教程是在Zynq UltraScale+ MPSoC (ZCU104)上設置,配置和部署PetaLinux 2024.2的分步指南。本教程涵蓋了從在Vivado 2024.2中生成硬件設計、導出硬件文件(.xsa)到使用PetaLinux 2024.2構建自定義嵌入式Linux系統(tǒng)的所有內容。
該項目旨在簡化FPGA開發(fā)人員和嵌入式工程師使用ZCU104的學習曲線,演示如何在這個強大的平臺上啟動Linux并開發(fā)實際應用程序。
AMD的FPGA工具已經有了很大的發(fā)展,比如Vitis Unified IDE的更新和PetaLinux 2024.2的增強。有了這些變化,一個結構化和更新的指南對于幫助開發(fā)人員順利過渡到最新的工具是必不可少的。不像以前的指南專注于Zynq-7000 SoC,這個項目是為Zynq UltraScale+ MPSoC (ZCU104)量身定制的。
本教程專為FPGA設計人員、嵌入式軟件開發(fā)人員和希望利用ZCU104上的PetaLinux開發(fā)自定義嵌入式應用程序的Linux愛好者而設計
搭建環(huán)境
1. 安裝要求
PetaLinux工具的安裝要求如下:
a.最低工作站要求:
?8gb RAM (AMD工具推薦最小內存)
?2 GHz CPU時鐘或同等(至少8核)
?100gb空閑硬盤空間
b.支持的操作系統(tǒng)
?完全移除CENTOS以與上游的Yocto對齊。
?Ubuntu桌面/服務器20.04.5 LTS(64位),20.04.6 LTS, 22.04.1 LTS, 22.04.2 LTS, 22.04.3 LTS, 22.04.4 LTS和24.04 LTS
?OpenSuse Leap 15.4- Redhat 9.4
?AlmaLinux 8.7、8.10、9.1和9。
2. 所需的工具
以下是構建petalinux 2024.2所需的工具
?Xilinx Vivado 2024.2
?PetaLinux InstallerRequired Board Support Package BSP
3. Petalinux安裝步驟
?打開linux終端
?查詢Ubuntu Linux版本:lsb_release -a
圖1 Linux版本查詢命令
?首先,我們需要使用sudo apt update命令更新Linux
?在更新linux之后,使用命令$sudo mkdir -p /home/username/petalinux_sdkk/創(chuàng)建一個我們想要安裝petalinux的文件夾
?現在,使用chmod +x petalinux-v2024.2-11062026-installer.run命令安裝petalinux,然后sudo ./petalinux-v2024.2-11062026-installer.run /home/inam/petalinux_sdk
?第一次我們在安裝Petalinux時遇到錯誤,因為安裝Petalinux需要一些依賴項,即ncurses-dev, libtool等。我們首先使用命令sudo apt Install -y xterm autoconf libtool texinfo build-essential ncurses-dev安裝這些依賴項
?然后我們再次使用上面提到的命令安裝Petalinux。
Petalinux工作環(huán)境設置
在成功安裝Petalinux之后,我們需要設置工作環(huán)境。
使用以下命令獲取適當的petalinux設置腳本:source ./settings.sh
現在,使用命令echo $PETALINUX驗證工作環(huán)境已經設置完成。這將輸出已安裝的Petalinux路徑。
創(chuàng)建項目
使用BSP創(chuàng)建項目
?更改我們下載BSP的目錄。
?在命令控制臺運行petalinux-create命令創(chuàng)建一個新項目,如:petalinux-create -t project -s /home/inam/ bsp /xilinx-zcu104-v2024.2-11110212.bsp
?現在,我們需要轉到petalinux工具創(chuàng)建的項目路徑。
?在此之后,我們需要配置硬件平臺,但為此我們首先需要使用Vivado將硬件平臺導出到petalinux項目。
使用Vivado設計套件配置硬件平臺
本節(jié)介紹如何使用Vivado工具為PetaLinux準備一個硬件平臺。
?打開Vivado并加載硬件項目。
?確保正確設置處理系統(tǒng)(PS)配置和外圍設備。
?單擊“文件→導出→導出硬件”
?在“導出硬件平臺”窗口中:
?如果要打包,請選擇Include比特流。
?選擇所需的輸出目錄。
?單擊OK。
?xsa文件將在選定的目錄中生成。
配置硬件項目之后,PetaLinux項目需要一個硬件描述文件(。Xsa文件),包含有關處理系統(tǒng)的信息。
導入硬件配置
進入petalinux項目目錄
使用“petalinux-config”命令導入硬件描述,例如:petalinux-config——get-hw-description /home/inam/ vivado_proj /
/home/inam/ vivado_proj /表示您的。但是如果使用Xsa流,這里可能會出現問題。
([錯誤]這個項目配置了“sdt”,如果你使用相同的項目“xsa”流,你可能會看到問題)
在PetaLinux 2022.1及更高版本中,Xilinx引入了新的系統(tǒng)設備樹(System Device Tree, SDT)流,而不是傳統(tǒng)的基于xsa的流。
如果您的項目是使用sdt(系統(tǒng)設備樹)方法創(chuàng)建的,那么切換到舊的基于xsa的流程可能會導致問題。
在此設置中使用的ZCU104 BSP(板支持包)遵循SDT流程,這可以通過檢查項目配置文件來確認:cat project-spec/configs/config | grep DT_FLAVOR。
如果輸出結果為:DT_FLAVOR="sdt",則表示該項目使用的是sdt流程。
而PetaLinux中默認的ZynqMP模板遵循XSA流程。
PetaLinux中的SDT流僅支持AMD Zynq?MP, SOM和Zynq 7000 BSPs;MicroBlaze?除外。
與傳統(tǒng)的基于xsct的構建流程(通過提供xsa文件作為petalinux-config的輸入)相比,由于SDT流中的多配置支持,SDT(系統(tǒng)設備樹)項目構建需要更多的時間。狀態(tài)檢查的數量和解析的食譜的數量也更高。
SystemDeviceTreeFlowto構建映像
在繼續(xù)之前,將硬件開發(fā)人員提供的系統(tǒng)設備樹文件放在運行PetaLinux構建的用戶可以訪問的位置。
使用上述步驟生成系統(tǒng)設備樹文件:
首先為系統(tǒng)設備樹文件創(chuàng)建一個新文件夾或目錄。
現在,在SDT Flow中,XSCT僅用于運行SDTGen工具,該工具從XSA文件提取硬件信息并生成系統(tǒng)設備樹(System Device Tree, SDT)文件。為此,從已安裝的Vitis工具中找到XSCT二進制文件的路徑,即(例如:/home/abc/ xilinx /Vitis/ 2021.1 /bin/ XSCT)
?現在,輸入這些命令,
?設置輸出目錄[lindex $argv 1]
?設置xsa [lindex $argv 0]
?執(zhí)行rm -rf $outdir
?sdtgen set_dt_param -xsa /home/inam/ vivado_proj /design_1_wrapper. exeXsa -dir /home/inam/sdt_out/
?sdtgen generate_sdt
參考上述sdt流命令system-device-tree-xlnx/README。master·Xilinx/system-device-tree-xlnx·GitHub
基于sdt的流的輸出文件如下所示
現在,使用petalinux-config命令導入硬件描述:petalinux-config——get-hw-description /home/inam/sdt_out/
這將啟動頂部系統(tǒng)配置菜單。
然后轉到Image Packaging Configuration,選擇EXT4 (SD/eMMC/USB)。
我也沒有為我的ZCU104使用TFTPboot(即-根文件系統(tǒng)是從網絡位置加載的,而不是像SD卡一樣的本地存儲),我發(fā)現從PetaLinux版本2024.1開始,如果TFTPboot在PetaLinux項目中沒有完全配置,那么它將導致項目構建失敗。
我們可以在子系統(tǒng)硬件設置下進行以太網設置。
如果您希望ZCU104板從路由器/網絡獲取IP,請啟用“自動獲取IP地址”。
如果需要固定IP地址,請關閉DHCP選項,配置靜態(tài)IP地址、子網掩碼和網關。按Y鍵。
一旦所有所需的配置都已更新,退出硬件系統(tǒng)配置并在提示時保存更改:
運行petalinux命令配置rootfs:
Petalinux-config -c rootfs。
這將彈出車頂系統(tǒng)配置GUI
現在,建議在Filesystem Packages -> misc -> packagegroup-core-buildessential下添加packagegroup-core-buildessential。
packagegroup-core-buildessential包是基本開發(fā)工具的集合,例如gcc、make和在目標系統(tǒng)上編譯軟件所需的其他編譯器/實用程序。
在這里,您可以在userpackages下添加用戶包示例,就像我添加了basic gpio-demo基本示例一樣。
更新了所有所需的配置后,退出根配置并保存更改。
構建系統(tǒng)映像
本節(jié)假設我們已經準備好了petaLinux工具軟件平臺,可以在硬件平臺上構建Linux系統(tǒng)。
現在,我們運行petallinux -build來構建系統(tǒng)映像。
此步驟生成設備樹DTB文件、第一階段引導加載程序(適用于Zynq 7000設備、Zynq UltraScale+ MPSoC和MicroBlaze)、PLM(適用于Versal自適應SoC)、PSM(適用于Versal自適應SoC)和TF-A(適用于Zynq UltraScale+ MPSoC和Versal自適應SoC)、U-Boot、Linux內核、根文件系統(tǒng)映像和U-Boot引導腳本(boot.scr)。最后,生成必要的引導映像。
第一次,我們在petalinux構建過程中得到這個錯誤,因為缺少或無法構建依賴:libvcu-omxil。
此錯誤僅適用于支持VCU的硬件(例如,ZCU104, ZCU106, ZCU216等)。
我們需要打開project目錄,然后進入project-spec/meta-user/conf/petalinuxbsp.conf
Silentconfig
完成這些之后,現在我們需要使用以下命令對petalinux項目進行靜默配置
——silentconfig選項允許您重用先前的配置。舊的配置文件名為CONFIG。舊的,在包含指定組件的目錄中用于無人值守更新。您可以在不打開系統(tǒng)級配置菜單的情況下更改配置。你可以直接編輯
/project-spec/configs/config文件并執(zhí)行petalinux-config——silentconfig。
最后,我們再次使用命令petalinux-build構建映像。
現在,我們的Petalinux項目已經成功構建。
Petalinux-Package
PetaLinux -package工具將PetaLinux項目打包成適合部署的格式。
該工具提供了幾個工作流,其操作因目標包格式而異。
支持的格式/工作流是boot, bsp, sysroot, wicand prebuilt。
petalinux-package工具使用包類型名稱執(zhí)行,以petalinux-package PACKAGETYPE格式指定特定的工作流
最常見的用例是生成一個BOOT.BIN文件,其中包含:
?第一階段引導加載程序
?FPGA位流(如適用)
?U-Boot引導裝載程序
因此,我們需要使用以下命令來打包petalinux項目:petalinux-package——boot——fsbl. /images/linux/zynqmp_fsbl。Elf——fpga ./images/linux/system. exe位——u-boot
PackageSD卡映像
如果從SD卡引導(而不是直接引導到INITRD/INITRAMFS), PetaLinux有一個工具集,它將為SD卡打包一個映像文件,可以與balenaEtcher等工具一起使用,以刷新SD卡。這可以通過petalinux-package命令的——wic標志來使用。
對于從SD卡引導的ZCU104,在SD卡的引導分區(qū)中所需的引導文件是引導二進制文件、Linux內核、設備樹blob和引導腳本(用——bootfiles標志指定)。使用命令:petalinux-package——wic——bootfiles "BOOT.BIN image,將根文件系統(tǒng)放置在SD卡的根指定分區(qū)上,并帶有——rootfs-file標志。烏蘭巴托系統(tǒng)。的防曬霜。——root -file ./images/linux/root .tar.gz
PetaLinux將花費幾分鐘的時間來生成wic映像,通常最終大小略大于6GB,并且需要至少8GB的SD卡。
然后我們只需要使用像balenaEtcher這樣的成像工具將圖像flash到SD卡上:
這將完全擦除并重新格式化SD卡,所以在用wic文件閃爍之前,請確保SD卡上沒有任何導入內容。
SDCard
SD卡有兩個分區(qū),一個用于根文件,一個用于引導文件,看起來像,
ZCU-104MPSoC DeviceBoardSettings
Zynq UltraScale+ XCZU7EV MPSoC設備使用多階段啟動過程,如Zynq UltraScale+ MPSoC技術參考的“啟動和配置”章節(jié)所述。
交換機SW6配置選項設置如下表所示。
將FPGA開發(fā)板上電,并通過TeraTerm等串行應用程序與之連接。
本文編譯自hackster.io