前 言
本文檔由創(chuàng)龍科技研發(fā),專為安路飛龍 DR1M90 FPSoC 產(chǎn)品打造,聚焦 Linux 系統(tǒng)全流程開發(fā)需求。
開發(fā)環(huán)境
Windows開發(fā)環(huán)境:Windows10 64bit
Linux開發(fā)環(huán)境:VMware16.2.5、Ubuntu22.04.4 64bit
LinuxSDK開發(fā)包:LinuxSDK-[版本號](基于SDK_2025.1)
交叉編譯工具鏈:
應(yīng)用開發(fā):gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu
U-Boot、內(nèi)核開發(fā):gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu
評估板系統(tǒng)版本:U-Boot-2021.01、Linux-6.1.111、Buildroot-2022.02
備注:本文基于8GByte eMMC、1GByteDDR3配置核心板進(jìn)行演示。
BOOT.bin開發(fā)
BOOT.bin文件為SoC的啟動鏡像,一般包含F(xiàn)SBL、比特流文件(用于配置PL)、被引導(dǎo)的應(yīng)用、數(shù)據(jù)文件,遵循固定的結(jié)構(gòu),以便SoC上電時BootRom對其進(jìn)行解析。
具體說明如下:
(1)FSBL:非必須,主要功能為初始化SoC、引導(dǎo)應(yīng)用程序,配置PL比特流。
(2)比特流文件:非必須,在使用到PL端邏輯資源時必須使用。
(3)應(yīng)用程序:必須,若運(yùn)行在OCM,且不依賴PL端,則可單獨(dú)使用;其他情況下被FSBL引導(dǎo);引導(dǎo)Linux系統(tǒng)則為u-boot.bin。
(4)數(shù)據(jù):可選,一般用于將數(shù)據(jù)加載至固定內(nèi)存地址。
圖 17
備注:我司提供的BOOT.bin由FSBL和U-Boot鏡像合并生成,不含比特流文件、數(shù)據(jù)。
FSBL開發(fā)
FSBL(First Stage Bootloader)為一級Bootloader程序,我司提供的FSBL工程中已對PS端相關(guān)外設(shè)進(jìn)行配置。
FSBL TD工程說明
我司提供的FSBL TD工程位于“4-軟件資料LinuxFSBLfsbl-[版本號]hwproject”目錄下,請參考《TD-FD工程編譯與加載》文檔導(dǎo)入TD工程。
雙擊fsbl,即可打開的Design界面。
圖 18
圖 19
在Design界面雙擊"ARM Processor System"IP即可打開配置界面,該界面為FPSoC Diagram,顯示基本配置框圖,點(diǎn)擊橙色部分可跳轉(zhuǎn)到該功能詳細(xì)配置界面。
圖 20
可通過打開相應(yīng)的窗口來查看相關(guān)配置。
(1)打開"PS-PL interfaces"窗口查看PS-PL配置。
圖 21
(2)打開"Peripherals and Pin Mux"窗口查看外設(shè)配置。
圖 22
(3)打開"Clocks"窗口查看時鐘配置。
圖 23
(4)打開"PS DDR"窗口查看DDR配置。
圖 24
(5)打開"AI"窗口查看NPU配置。
圖 25
FSBL TD工程編譯
請參考《TD-FD工程編譯與加載》文檔編譯FSBL TD工程。
圖 26
生成HPF文件
在FPSoC的應(yīng)用開發(fā)過程中,需將硬件設(shè)計(jì)信息通過文件的形式傳遞至軟件開發(fā)工具(FD)中使用,該文件被稱之為HPF(HardwarePlatform File)文件。
我司提供的HPF文件位于“4-軟件資料LinuxFSBLfsbl-[版本號]hwbin”目錄下,下文演示HPF文件的生成。
在菜單欄中依次點(diǎn)擊"Project -> Export Hardware Platform File"。
圖 27
在彈窗內(nèi),勾選"Include bitstream",導(dǎo)出路徑選擇默認(rèn)在當(dāng)前工程內(nèi),點(diǎn)擊OK。
圖 28
彈窗顯示導(dǎo)出HPF文件成功,并顯示HPF文件的存放路徑,點(diǎn)擊"Ok"。
圖 29
生成FSBL FD工程
我司提供的FSBL FD工程位于“4-軟件資料LinuxFSBLfsbl-[版本號]swbaremetal_demoproject”目錄下,下文演示FSBL FD工程的生成。打開FD軟件,在Workspace中指定工程存放路徑,點(diǎn)擊"Launch"。Workspace是FD的工作目錄,該目錄下包含了Platform工程、app工程以及用戶配置文件。
圖 30
在菜單欄中依次點(diǎn)擊"File -> New -> Platform Project",創(chuàng)建Platform工程。
圖 31
在彈出的對話框中,根據(jù)實(shí)際情況設(shè)置Project Name(工程名),"HPF File"選擇剛剛導(dǎo)出的HPF文件所在路徑,點(diǎn)擊"Finish"生成Platform工程。
圖 32
至此,創(chuàng)建Platform工程完成。
圖 33
在菜單欄中依次點(diǎn)擊"File -> New -> Application Project",創(chuàng)建FSBLFD工程。
圖 34
在彈出的對話框中,根據(jù)實(shí)際情況設(shè)置Project Name(工程名),"Template List"選擇"FSBL",點(diǎn)擊"Finish"生成FSBLFD工程。FSBL FD工程即為app工程,其主要功能為引導(dǎo)BOOT.bin中的數(shù)據(jù)和程序。
圖 35
至此,已生成FSBL FD工程。
圖 36
編譯FSBL FD工程生成elf文件
我司提供的elf文件位于“4-軟件資料LinuxFSBLfsbl-[版本號]swbaremetal_demobin”目錄下,可直接使用。
本小節(jié)演示elf文件的生成。鼠標(biāo)右鍵FSBL工程,選擇"Reset Project"。
圖 37
點(diǎn)擊"Reset"。
圖 38
點(diǎn)擊"Close"。
圖 39
在菜單欄中依次點(diǎn)擊"Project -> Build All",編譯FSBL FD工程。
圖 40
編譯完成,并在fsblgon工程的build目錄下生成fsbl.elf文件。fsbl.elf需與u-boot.bin文件合成BOOT.bin使用。
圖 41
圖 42
U-Boot開發(fā)
U-Boot為二級Bootloader程序。
U-Boot源碼說明
U-Boot源碼位于LinuxSDK源碼u-boot目錄,具體說明如下表。

圖 43
U-Boot配置
U-Boot可使用menuconfig進(jìn)行配置,請參考“配置內(nèi)核選項(xiàng)”章節(jié),配置menuconfconfig所需依賴環(huán)境。
在LinuxSDK源碼目錄下,執(zhí)行如下命令,通過menuconfig配置U-Boot。
Host#cd /home/tronlong/DR1/SDK_2025.1/
Host#./build.sh ubootmenuconfig
圖 44
圖 45
可通過鍵盤的方向鍵選中對應(yīng)菜單欄。在被選中的情況下,可按Enter鍵進(jìn)入子菜單。菜單選項(xiàng)中藍(lán)色高亮的字母代表此菜單選項(xiàng)的快捷鍵,可在鍵盤上按下對應(yīng)的字母快速選中對應(yīng)的菜單選項(xiàng)。每個菜單選項(xiàng)前的括號內(nèi)容表示當(dāng)前菜單選項(xiàng)的配置狀態(tài)。選中對應(yīng)的菜單選項(xiàng)后,按下Y鍵,會將相應(yīng)的選項(xiàng)配置編譯到U-Boot中,同時菜單選項(xiàng)前面變?yōu)? * >。按下N鍵,不會將相應(yīng)的選項(xiàng)配置編譯到U-Boot中。如需搜索,可按下/鍵打開搜索框,然后輸入要搜索的內(nèi)容。配置完畢后,選中,按Enter鍵保存配置選項(xiàng)。然后選中,按Enter鍵退出。圖 46編譯U-Boot在LinuxSDK源碼目錄下執(zhí)行如下命令,配置編譯選項(xiàng),并單獨(dú)編譯U-Boot。Host# ./build.sh uboot圖 47圖 48編譯完成后,最終在LinuxSDK源碼"device/output/anlogic_dr1m90/u-boot"目錄下生成U-Boot鏡像如下所示。圖 49合成BOOT.bin文件BOOT.bin由fsbl.elf和u-boot.bin合成。fsbl.elf文件位于產(chǎn)品資料“4-軟件資料LinuxFSBLfsbl-[版本號]swbaremetal_demobin”目錄下,u-boot.bin文件位于“4-軟件資料LinuxU-Bootimageu-boot-2021.01-[版本號]-[Git序列號]”目錄下,可直接使用。備注:版本號、Git序列號請以實(shí)際情況為準(zhǔn)。打開FSBL FD工程,在菜單欄中依次點(diǎn)擊"Tools -> Create Boot lmage"。圖 50圖 51"Output BlF file path"為output.bif存放路徑,"Output path"為BOOT.bin存放路徑,請根據(jù)實(shí)際路徑進(jìn)行選擇。在"Boot image partitions"中點(diǎn)擊"Add"選擇和配置需要被打包到Boot.bin的分區(qū)文件,本次以添加FSBL鏡像fsbl.elf和U-Boot鏡像u-boot.bin為例進(jìn)行演示,配置參數(shù)如下圖。圖 52圖 53圖 54配置完成,點(diǎn)擊"Create lmage",生成BOOT.bin文件。圖 55圖 56替換BOOT.bin文件通過Linux系統(tǒng)啟動卡替換將Linux系統(tǒng)啟動卡通過讀卡器連接至PC機(jī),直接替換Linux系統(tǒng)啟動卡BOOT分區(qū)的BOOT.bin原文件即可。圖 57通過命令行替換請將需替換的BOOT.bin文件拷貝至評估板文件系統(tǒng)的任意目錄下,執(zhí)行如下命令替換BOOT.bin文件至Linux系統(tǒng)啟動卡。Target# cp ./BOOT.bin /mnt/mmcblk0p1/BOOT.bin備注:如需替換BOOT.bin至eMMC,請將設(shè)備節(jié)點(diǎn)修改為"/mnt/mmcblk1p1"。圖 58U-Boot使用說明U-Boot命令行進(jìn)入方式評估板上電啟動后,在U-Boot倒計(jì)時結(jié)束之前按下"Ctrl + C"進(jìn)入U(xiǎn)-Boot命令行模式。環(huán)境變量說明(1)環(huán)境變量存儲執(zhí)行命令"setenv"或"env default -f -a"修改的是運(yùn)行空間中的環(huán)境變量值,須使用"saveenv"命令將修改后的環(huán)境變量保存起來。否則U-Boot重啟后,將會使用修改前的環(huán)境變量值。環(huán)境變量修改完成后,執(zhí)行reset命令,即可使用修改后的U-Boot環(huán)境變量啟動。U-Boot# env default -f -aU-Boot# saveenvU-Boot# reset圖 59(2)默認(rèn)配置信息在U-Boot命令行執(zhí)行"printenv"命令可查看環(huán)境變量。不同版本的U-Boot,環(huán)境變量可能會有所不同,內(nèi)容僅供參考。U-Boot# printenv圖 60圖 61(3)環(huán)境變量說明關(guān)鍵環(huán)境變量說明如下。/* 架構(gòu)、CPU和板卡信息*/arch=armcpu=armv8soc=dr1m90board=evb_dr1m90board_name=evb_dr1m90vendor=anlogic/* 串口控制臺和波特率設(shè)置*/baudrate=115200stderr=serial@f8401000stdin=serial@f8401000stdout=serial@f8401000/* 網(wǎng)絡(luò)配置*/ipaddr=192.168.199.138netmask=255.255.255.0serverip=192.168.199.114/* 內(nèi)核和設(shè)備樹加載地址*/fdt_addr_r=0x18000000kernel_addr_r=0x10000000/* 內(nèi)核和設(shè)備樹文件名*/kernel_image=kernel.bindevicetree_image=dtb.bin/* 內(nèi)核鏡像和設(shè)備樹文件路徑*/bootdir=/boot/* 支持的啟動設(shè)備類型*/boot_targets=mmc0 mmc1 ubifs0 nand qspi/* 當(dāng)前啟動類型*/boot_type=mmc0/* 主要啟動命令*/bootcmd=run an_bootcmd/* 自動啟動命令邏輯*/an_bootcmd=if env exists boot_type; then for target in ${boot_targets}; do if test ${boot_type} = ${target}; then run bootcmd_${target}; fi; done; fi;/* 各啟動設(shè)備的命令*/bootcmd_mmc0=devnum=0; run mmc_bootbootcmd_mmc1=devnum=1; run mmc_boot/* MMC設(shè)備啟動流程*/mmc_boot=if mmc dev ${devnum}; then devtype=mmc; if test ${devnum} -eq 0; then setenv bootargs 'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait';fi; if test ${devnum} -eq 1; then setenv bootargs 'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait';fi; ext4load mmc ${devnum}:2 ${kernel_addr_r} ${bootdir}/${kernel_image}; ext4load mmc ${devnum}:2 ${fdt_addr_r} ${bootdir}/${devicetree_image}; bootm ${kernel_addr_r} - ${fdt_addr_r}; run scan_dev_for_boot_part2; fiKernel參數(shù)傳遞Kernel參數(shù)傳遞指的是在啟動內(nèi)核時,通過特定機(jī)制將配置參數(shù)或啟動選項(xiàng)傳遞給內(nèi)核,以控制其初始化行為、硬件配置、運(yùn)行模式等。評估板默認(rèn)參數(shù)如下。bootargs 'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk0p2rw rootfstype=ext4 rootwait'參數(shù)解析:
審核編輯 黃宇
-
soc
+關(guān)注
關(guān)注
38文章
4514瀏覽量
227634 -
Linux
+關(guān)注
關(guān)注
88文章
11628瀏覽量
217989
發(fā)布評論請先 登錄
基于 DR1M90 的 Linux-RT 內(nèi)核開發(fā):從編譯配置到 GPIO / 按鍵應(yīng)用實(shí)現(xiàn)(1)
基于安路DR1M90 FPSoC的Linux系統(tǒng)全流程開發(fā)指南(4)
基于安路DR1M90 FPSoC 的Linux 系統(tǒng)全流程開發(fā)指南(3)
基于安路DR1M90 FPSoC 的Linux 系統(tǒng)全流程開發(fā)指南(1)
一步步完成安路飛龍 DR1M90 Linux 系統(tǒng)固化:啟動卡制作 + eMMC 固化
安路DR1M90評估板:從基礎(chǔ)外設(shè)到通信模塊測試指南
創(chuàng)龍科技DR1M90工業(yè)評估板的關(guān)鍵優(yōu)勢
【米爾-安路MYD-YM90X 創(chuàng)意秀】點(diǎn)燈也是入門絕活
搭載ARM,NPU,F(xiàn)PGA三種核心的開發(fā)板—米爾安路DR1M90飛龍派
基于米爾安路飛龍派FPGA FPSoC+開發(fā)環(huán)境搭建以及鏡像燒錄
強(qiáng)強(qiáng)聯(lián)手!米爾×安路IDH合作共筑FPGA新生態(tài)
安路科技DR1FPSoC多路以太網(wǎng)擴(kuò)展方案

基于安路DR1M90 FPSoC 的Linux 系統(tǒng)全流程開發(fā)指南(2)
評論