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