前 言
本文檔主要演示Linux系統(tǒng)啟動(dòng)卡制作,以及將Linux系統(tǒng)鏡像固化至eMMC的方法,旨在幫助開(kāi)發(fā)者和測(cè)試人員快速完成產(chǎn)品方案驗(yàn)證與性能評(píng)估中的系統(tǒng)固化環(huán)節(jié)。
開(kāi)發(fā)環(huán)境
Windows開(kāi)發(fā)環(huán)境:Windows10 64bit
Linux開(kāi)發(fā)環(huán)境:VMware16.2.5、Ubuntu22.04.464bit
LinuxSDK:LinuxSDK-[版本號(hào)](基于SDK_2025.1)
評(píng)估板系統(tǒng)版本:U-Boot-2021.01、Linux-6.1.111、Buildroot-2022.02
術(shù)語(yǔ)表
為便于閱讀,下表對(duì)文檔出現(xiàn)的關(guān)鍵術(shù)語(yǔ)進(jìn)行解釋;對(duì)于廣泛認(rèn)同釋義的術(shù)語(yǔ),在此不做注釋。
表 1
注意事項(xiàng)
(1)無(wú)特殊說(shuō)明情況下,默認(rèn)使用USB TO UART1接口作為調(diào)試串口,通過(guò)路由器與PC機(jī)進(jìn)行網(wǎng)絡(luò)連接。
(2)評(píng)估板出廠時(shí)可能未固化最新系統(tǒng)鏡像至eMMC存儲(chǔ)。為確保您體驗(yàn)到我司提供的最新系統(tǒng)功能,建議您參考本文檔,按照指引將最新系統(tǒng)鏡像固化至eMMC。
Linux系統(tǒng)啟動(dòng)卡制卡工具包說(shuō)明
制卡工具包版本說(shuō)明
產(chǎn)品資料“4-軟件資料LinuxMakesdboot”目錄下的mksdboot_AA_BB_CC_DD.tar.gz壓縮文件是Linux系統(tǒng)啟動(dòng)卡制卡工具包,主要包含F(xiàn)SBL、U-Boot、Linux內(nèi)核鏡像文件,以及文件系統(tǒng)壓縮包等內(nèi)容。AA_BB_CC_DD為制卡工具包的版本號(hào),具體版本說(shuō)明如下:
(1)AA:FSBL發(fā)布版本。詳細(xì)信息請(qǐng)查看“4-軟件資料LinuxFSBL”目錄下的特性支持說(shuō)明文件。
(2)BB:U-Boot發(fā)布版本。詳細(xì)信息請(qǐng)查看“4-軟件資料LinuxU-Boot”目錄下的特性支持說(shuō)明文件。
(3)CC:Linux內(nèi)核發(fā)布版本。詳細(xì)信息請(qǐng)查看“4-軟件資料LinuxKernel”目錄下的特性支持說(shuō)明文件。
(4)DD:文件系統(tǒng)發(fā)布版本。詳細(xì)信息請(qǐng)查看“4-軟件資料LinuxFilesystem”目錄下的特性支持說(shuō)明文件。
制卡工具包目錄說(shuō)明
打開(kāi)Ubuntu,將制卡工具包拷貝至“/home/tronlong/DR1/”工作目錄下,進(jìn)入制卡工具包所在路徑,執(zhí)行如下命令將其解壓至當(dāng)前目錄。工具包名稱需根據(jù)實(shí)際情況修改。
Host# cd /home/tronlong/DR1/
Host# tar -xf mksdboot_10_10_10_10.tar.gz
圖 1
執(zhí)行如下命令,查看解壓后的制卡工具包具體內(nèi)容。
Host# tree -L 5 mksdboot_10_10_10_10
圖 2
(1)boot目錄
- BOOT.bin文件:由FSBL和U-Boot鏡像合并生成,用于初始化PS端外設(shè)和U-Boot啟動(dòng)。
- README.md文件:制卡工具包、FSBL、U-Boot、Linux內(nèi)核、文件系統(tǒng)等版本信息說(shuō)明文件。
(2)filesystem目錄
- boot目錄:主要存放Linux內(nèi)核、基礎(chǔ)設(shè)備樹(shù)。
- rootfs目錄:主要存放文件系統(tǒng)壓縮包。
- tools目錄:主要存放eMMC固化腳本、NOR SPI FLASH固化腳本。
(3)mksdboot.sh文件:Linux系統(tǒng)啟動(dòng)卡制作腳本文件。
Linux系統(tǒng)啟動(dòng)卡制作
評(píng)估板出廠時(shí),默認(rèn)提供一張配套的Micro SD卡,此卡為可正常使用的Linux系統(tǒng)啟動(dòng)卡。本章節(jié)主要說(shuō)明Linux系統(tǒng)啟動(dòng)卡的制作方法,可使用配套的Linux系統(tǒng)啟動(dòng)卡,或者使用新的空白Micro SD卡。如下步驟使用配套的Linux系統(tǒng)啟動(dòng)卡進(jìn)行操作,如使用空白Micro SD卡,步驟類似。
MicroSD卡掛載
將Micro SD卡通過(guò)讀卡器連接至PC機(jī),Ubuntu系統(tǒng)識(shí)別后,一般會(huì)自動(dòng)掛載MicroSD卡分區(qū),如下所示。
圖 3
若Ubuntu系統(tǒng)未自動(dòng)識(shí)別,請(qǐng)右擊右下角的USB大容量存儲(chǔ)設(shè)備圖標(biāo),再點(diǎn)擊“Connect(Disconnect from Host)”進(jìn)行識(shí)別。
圖 4
如無(wú)以上圖標(biāo)或者連接不成功,請(qǐng)嘗試如下方法:
(1)請(qǐng)將MicroSD卡通過(guò)讀卡器插至PC機(jī)USB2.0接口,而不是USB3.0接口,部分版本VMware可能不兼容USB3.0。
(2)請(qǐng)將MicroSD卡通過(guò)讀卡器插至PC機(jī)USB2.0接口,然后重啟Ubuntu,在Ubuntu重啟過(guò)程中不要取出。Ubuntu系統(tǒng)重啟后,存儲(chǔ)設(shè)備圖標(biāo)會(huì)重新出現(xiàn)。
Micro SD卡設(shè)備節(jié)點(diǎn)名確認(rèn)
執(zhí)行如下命令,確認(rèn)MicroSD卡在Ubuntu系統(tǒng)的設(shè)備節(jié)點(diǎn)名。
Host# sudo fdisk -l
圖 5
可看到MicroSD卡設(shè)備節(jié)點(diǎn)是"/dev/sdb",并且有三個(gè)分區(qū),分別為sdb1、sdb2和sdb3分區(qū)。設(shè)備節(jié)點(diǎn)名字是可變的,一般插拔多次或者使用不同的卡插拔后,可能會(huì)顯示sdc或者sdd。
PV工具安裝
PV(Pipe Viewer)是一種基于終端的工具,用于通過(guò)管道監(jiān)測(cè)數(shù)據(jù)的進(jìn)度。
為了更直觀地顯示系統(tǒng)啟動(dòng)卡的制作進(jìn)度,Linux系統(tǒng)啟動(dòng)卡制作過(guò)程中會(huì)使用PV工具。請(qǐng)執(zhí)行如下命令通過(guò)網(wǎng)絡(luò)安裝PV工具,如未安裝PV工具將會(huì)導(dǎo)致系統(tǒng)啟動(dòng)卡制作失敗。
Host# sudo apt-get install pv
圖 6
Linux系統(tǒng)啟動(dòng)卡制作
如下為L(zhǎng)inux系統(tǒng)啟動(dòng)卡制作命令。命令中"/dev/sdb"為MicroSD卡設(shè)備節(jié)點(diǎn),如錯(cuò)誤輸入其他存儲(chǔ)介質(zhì)設(shè)備節(jié)點(diǎn),將會(huì)造成存儲(chǔ)介質(zhì)數(shù)據(jù)損壞,請(qǐng)確認(rèn)命令中設(shè)備節(jié)點(diǎn)無(wú)誤后,再執(zhí)行命令。
進(jìn)入制卡工具包目錄,執(zhí)行如下命令。
Host# sudo ./mksdboot.sh -d /dev/sdb
圖 7
根據(jù)提示按回車鍵,進(jìn)行Linux系統(tǒng)啟動(dòng)卡制作。
圖 8
耗時(shí)約2min,Linux系統(tǒng)啟動(dòng)卡制作完成。同時(shí),系統(tǒng)會(huì)打印提示信息,如下所示。制作時(shí)間與Linux系統(tǒng)大小、MicroSD卡容量和接口性能有關(guān)。
圖 9
可看到新制作的Linux系統(tǒng)啟動(dòng)卡共有BOOT、rootfs和rootfs-backup三個(gè)分區(qū)。其中BOOT分區(qū)為FAT32格式,rootfs分區(qū)和rootfs-backup分區(qū)為EXT4格式。FAT32格式分區(qū)在Windows系統(tǒng)下可見(jiàn),EXT4格式分區(qū)在Windows系統(tǒng)下不可見(jiàn),三個(gè)分區(qū)在Linux系統(tǒng)下均可見(jiàn)。
圖 10
(1)BOOT分區(qū):主要存放BOOT.bin等文件,從制卡工具包boot目錄拷貝而來(lái)。使用Linux系統(tǒng)啟動(dòng)卡啟動(dòng)系統(tǒng)時(shí),將使用此目錄的BO0T.bin文件啟動(dòng)FSBL和U-Boot。
(2)rootfs分區(qū):存放文件系統(tǒng)。rootfs分區(qū)boot目錄主要存放內(nèi)核鏡像、基礎(chǔ)設(shè)備樹(shù)文件等,從制卡工具包"filesystem/boot/"目錄拷貝而來(lái)。使用Linux系統(tǒng)啟動(dòng)卡啟動(dòng)系統(tǒng)時(shí),將使用此目錄的kernel.bin、dtb.bin文件啟動(dòng)內(nèi)核。
(3)rootfs-backup分區(qū):存放備份的文件系統(tǒng)。系統(tǒng)固化時(shí),將其內(nèi)容固化至eMMC文件系統(tǒng)分區(qū)。
圖 11
從Linux系統(tǒng)啟動(dòng)卡啟動(dòng)系統(tǒng)
評(píng)估板斷電,將Linux系統(tǒng)啟動(dòng)卡插入評(píng)估板Micro SD卡槽,根據(jù)評(píng)估底板絲印將啟動(dòng)方式選擇撥碼開(kāi)關(guān)撥為011(1~3),此檔位為Micro SD啟動(dòng)模式。使用Type-C線連接評(píng)估板的USB TOUART1調(diào)試串口至PC機(jī),然后將評(píng)估板上電啟動(dòng),串口調(diào)試終端會(huì)打印如下類似啟動(dòng)信息。
圖 12
系統(tǒng)啟動(dòng)后會(huì)自動(dòng)登陸root用戶,說(shuō)明使用Linux系統(tǒng)啟動(dòng)卡啟動(dòng)評(píng)估板成功。
圖 13
固化Linux系統(tǒng)至eMMC
本小節(jié)介紹Linux系統(tǒng)固化過(guò)程,固化過(guò)程包含固化FSBL、U-Boot、內(nèi)核、設(shè)備樹(shù)、文件系統(tǒng)至eMMC。
固化Linux系統(tǒng)
Linux系統(tǒng)啟動(dòng)卡制作時(shí),已將固化系統(tǒng)的腳本文件mkemmcboot.sh拷貝至Linux系統(tǒng)啟動(dòng)卡文件系統(tǒng)的“/opt/tools/”目錄下。
Target# ls /opt/tools/mkemmcboot.sh
圖 14
執(zhí)行如下命令進(jìn)行一鍵固化,用時(shí)約2min后固化Linux系統(tǒng)至eMMC,同時(shí)串口調(diào)試終端打印提示信息。
Target# /opt/tools/mkemmcboot.sh
圖 15
腳本會(huì)進(jìn)行如下操作:
(1)清除U-Boot環(huán)境變量。
(2)將eMMC格式化為BOOT、rootfs分區(qū)。
(3)將Linux系統(tǒng)啟動(dòng)卡BOOT分區(qū)中的u-boot.img、tiboot3.bin、tispl.bin固化至eMMC對(duì)應(yīng)分區(qū)。
(4)將Linux系統(tǒng)啟動(dòng)卡rootfs-backup分區(qū)中的文件系統(tǒng)固化至eMMC的rootfs分區(qū),包括內(nèi)核鏡像和基礎(chǔ)設(shè)備樹(shù)文件。
從eMMC啟動(dòng)系統(tǒng)
評(píng)估板斷電,將Linux系統(tǒng)啟動(dòng)卡從評(píng)估板Micro SD卡槽中取出,根據(jù)評(píng)估底板絲印將啟動(dòng)方式選擇撥碼開(kāi)關(guān)撥為111(1~3),此檔位為eMMC啟動(dòng)模式。使用Type-C線連接評(píng)估板的USB TOUART1調(diào)試串口至PC機(jī),然后將評(píng)估板上電啟動(dòng),串口調(diào)試終端會(huì)打印如下類似啟動(dòng)信息。
圖 16
系統(tǒng)啟動(dòng)后會(huì)自動(dòng)登陸root用戶,說(shuō)明從eMMC啟動(dòng)評(píng)估板成功。
圖 17
Linux系統(tǒng)啟動(dòng)卡和eMMC分區(qū)說(shuō)明
Linux系統(tǒng)啟動(dòng)卡分區(qū)說(shuō)明
評(píng)估板啟動(dòng),進(jìn)入評(píng)估板系統(tǒng)后執(zhí)行如下命令,查看Linux系統(tǒng)啟動(dòng)卡掛載信息。
Target# fdisk-l
圖 18
表 2
eMMC分區(qū)說(shuō)明
執(zhí)行如下命令,查看eMMC掛載信息。
Target# fdisk-l
Target# dmesg | grep boot
圖 19
圖 20
表 3
eMMC剩余空間使用說(shuō)明
為了保證文件系統(tǒng)健壯性,一般不推薦使用rootfs分區(qū)做頻繁的數(shù)據(jù)讀寫,建議將eMMC剩余空間重新劃分分區(qū)作為日常數(shù)據(jù)儲(chǔ)存,若無(wú)需重新劃分eMMC分區(qū)可跳過(guò)此步驟。
修改固化系統(tǒng)的腳本文件重新劃分
如需通過(guò)修改固化系統(tǒng)的腳本文件重新劃分eMMC剩余空間使用,請(qǐng)從Linux系統(tǒng)啟動(dòng)卡啟動(dòng)系統(tǒng),然后執(zhí)行如下命令,備份原有固化系統(tǒng)的腳本文件mkemmcboot.sh,修改mkemmcboot.sh內(nèi)容。
固化系統(tǒng)的腳本文件mkemmcboot.sh位于Linux系統(tǒng)啟動(dòng)卡文件系統(tǒng)的"/opt/tools/"目錄下。請(qǐng)先備份默認(rèn)的mkemmcboot.sh做卡腳本。
Target# cp /opt/tools/mkemmcboot.sh /opt/tools/mkemmcboot-bak.sh
圖 21
執(zhí)行如下命令,修改mkemmcboot.sh腳本。
Target# vi/opt/tools/mkemmcboot.sh
圖 22
添加內(nèi)容如下:
parted -s ${EMMC_DEVICE} unit MiB mkpart primary ext4 -- ${partition_end} -2 //在第123行添加
mkfs.ext4 -F -L rootfs ${partition_list[2]}
sleep 1 //在第144和145行添加
修改內(nèi)容如下:
partition_list=(${EMMC_DEVICE}p1 ${EMMC_DEVICE}p2 ${EMMC_DEVICE}p3) //在第127行修改
圖 23
圖 24
執(zhí)行腳本制作分區(qū)。
Target# /opt/tools/mkemmcboot.sh
圖 25
圖 26
執(zhí)行如下命令,查看劃分結(jié)果。
Target# fdisk -l
圖 27
圖 28
如需恢復(fù)默認(rèn)的mkemmcboot.sh腳本,請(qǐng)執(zhí)行如下命令。
Target# cp /opt/tools/mkemmcboot-bak.sh /opt/tools/mkemmcboot.sh
圖 29
通過(guò)分區(qū)工具重新劃分
若在此前劃分了空閑分區(qū)(/dev/mmcblk1p3),請(qǐng)執(zhí)行默認(rèn)的mkemmcboot.sh腳本重新制作eMMC分區(qū)。
Target# /opt/tools/mkemmcboot.sh
圖 30
執(zhí)行如下命令,使用parted工具劃分eMMC分區(qū)。
Target# parted /dev/mmcblk1
圖 31
執(zhí)行如下命令,查看剩余的空閑空間。
parted# print free
圖 32
執(zhí)行如下命令,劃分空閑空間,并退出parted工具。
parted# unit MB mkpart primary ext4 1354MB 7818MB
parted# quit
圖 33
新建分區(qū)后,可能會(huì)自動(dòng)掛載分區(qū),請(qǐng)執(zhí)行如下命令取消掛載新建的分區(qū)。若未自動(dòng)掛載,則忽略此步驟。
Target# umount /mnt/mmcblk1p3
圖 34
執(zhí)行如下命令,格式化新建的分區(qū)。
Target# mkfs.ext4 -F -L data /dev/mmcblk1p3
圖 35
至此,eMMC剩余的空閑空間劃分完成,可以手動(dòng)掛載新的分區(qū),或者重新啟動(dòng)評(píng)估板將會(huì)自動(dòng)掛載。
重啟評(píng)估板,執(zhí)行如下命令,查看新建的分區(qū)信息。
Target# df -h
圖 36
審核編輯 黃宇
-
Linux
+關(guān)注
關(guān)注
88文章
11758瀏覽量
219008 -
嵌入式開(kāi)發(fā)
+關(guān)注
關(guān)注
18文章
1146瀏覽量
50122 -
emmc
+關(guān)注
關(guān)注
7文章
261瀏覽量
55981
發(fā)布評(píng)論請(qǐng)先 登錄
基于安路DR1M90 FPSoC的Linux系統(tǒng)全流程開(kāi)發(fā)指南(4)
米爾國(guó)產(chǎn)FPGA SoC芯選擇,安路飛龍DR1M90核心板重磅發(fā)布
Linux系統(tǒng)啟動(dòng)卡制作及系統(tǒng)固化
Linux的系統(tǒng)啟動(dòng)卡制作及系統(tǒng)固化
ARM嵌入式系統(tǒng)如何入門?怎樣一步步的去學(xué)習(xí)
3562-Linux系統(tǒng)啟動(dòng)卡制作及系統(tǒng)固化
米爾-安路飛龍DR1M90 -國(guó)產(chǎn)FPGA核心板開(kāi)發(fā)板
安路DR1M90評(píng)估板:從基礎(chǔ)外設(shè)到通信模塊測(cè)試指南
基于安路DR1M90 FPSoC 的Linux 系統(tǒng)全流程開(kāi)發(fā)指南(1)
基于安路DR1M90 FPSoC 的Linux 系統(tǒng)全流程開(kāi)發(fā)指南(3)
一步步完成安路飛龍 DR1M90 Linux 系統(tǒng)固化:?jiǎn)?dòng)卡制作 + eMMC 固化
評(píng)論