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

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

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