10 分鐘搞定 RK3588開發(fā)板U-Boot 階段存儲(chǔ)設(shè)備文件讀??!超詳細(xì)教程(含結(jié)果驗(yàn)證)
Forlinx
2025-11-04 20:43:00
rk3588
瑞芯微rk3588
rk3588開發(fā)板
OK3588-C開發(fā)板 U-Boot 存儲(chǔ)設(shè)備文件讀取
?凌OK3588-C開發(fā)板基于瑞芯微RK3588旗艦處理器打造,采?先進(jìn)8nm制程?藝與"4核A76+4核A55"??核架構(gòu),不僅具備6TOPS算?的三核NPU與8K超?清處理能?,更通過(guò)雙路獨(dú)?MMC控制器、多規(guī)格USB接?等豐富硬件設(shè)計(jì),為存儲(chǔ)設(shè)備調(diào)試提供了穩(wěn)定可靠的硬件基礎(chǔ)。本文詳細(xì)介紹在飛凌嵌入式RK3588開發(fā)板的U-Boot控制臺(tái)階段,讀取各類存儲(chǔ)設(shè)備(EMMC、TF卡、U盤)文件內(nèi)容的標(biāo)準(zhǔn)化方法。盡管不同存儲(chǔ)設(shè)備的初始化子系統(tǒng)存在差異,但均可通過(guò)U-Boot控制臺(tái)命令完成統(tǒng)一的讀寫操作,適用于開發(fā)調(diào)試與系統(tǒng)驗(yàn)證場(chǎng)景。
一、進(jìn)入U(xiǎn)-Boot控制臺(tái)
?凌RK3588開發(fā)板的U-Boot經(jīng)過(guò)深度定制優(yōu)化,默認(rèn)配置了合理的 bootdelay 等待時(shí)間,在U-Boot啟動(dòng)過(guò)程中,需在自動(dòng)啟動(dòng)倒計(jì)時(shí)結(jié)束前,按下 空格鍵或 Ctrl+C中斷流程,進(jìn)入交互式控制臺(tái)。操作界面與示例如下:
Hit key to stop autoboot('Spacebar'): 0
0:Exit to console
1:Reboot
2:Display type
=>
二、MMC設(shè)備(EMMC/TF卡)的文件讀寫
飛凌 RK3588 開發(fā)板硬件上集成雙路 MMC 控制器,分別對(duì)應(yīng) EMMC 與 TF 卡接口,且完美兼容 EMMC 5.1 規(guī)范及 SD 3.0 協(xié)議,支持 HS400 高速傳輸模式與 8bit/4bit 數(shù)據(jù)總線寬度,為存儲(chǔ)設(shè)備的并行操作提供了硬件支撐。對(duì) MMC 設(shè)備進(jìn)行文件讀寫需遵循 “識(shí)別→切換→查詢→操作” 四步流程,具體步驟如下:
1. 查看MMC控制器
使用mmc list命令查看已初始化的MMC控制器(由設(shè)備樹預(yù)定義,通常 0對(duì)應(yīng)EMMC, 1對(duì)應(yīng)TF卡),確認(rèn)設(shè)備是否被識(shí)別:
=> mmc list //查看當(dāng)前已初始化的MMC控制器 mmc@fe2c0000: 1 mmc@fe2e0000: 0 (eMMC)Device 'mmc@fe2c0000': seq 1 is in use by 'mmc@fe2c0000' mmc@fe2c0000: 1Device 'mmc@fe2e0000': seq 0 is in use by 'mmc@fe2e0000' mmc@fe2e0000: 0 =》
2. 切換MMC設(shè)備
使用mmc dev <設(shè)備號(hào)>命令切換至目標(biāo)設(shè)備,設(shè)備號(hào)對(duì)應(yīng)上一步查詢的控制器序號(hào):
=> mmc dev 0 //切換為EMMC switch to partitions #0, OK mmc0(part 0) is current device => mmc dev 1 //切換為TF卡 switch to partitions #0, OK mmc0(part 0) is current device
3. 查看MMC設(shè)備信息
切換設(shè)備后,使用mmc info命令查看設(shè)備詳細(xì)參數(shù)(容量、總線寬度、接口版本等),EMMC與TF卡的信息示例分別如下:
EMMC設(shè)備信息示例:
=> mmc info //EMMC的設(shè)備信息 Device: mmc@fe2e0000 Manufacturer ID: 15 OEM: 100 Name: CJTD4 Timing Interface: HS400 Enhanced Strobe Tran Speed: 200000000 Rd Block Len: 512 MMC version 5.1 High Capacity: Yes Capacity: 58.2 GiB Bus Width: 8-bit DDR Erase Group Size: 512 KiB HC WP Group Size: 8 MiB User Capacity: 58.2 GiB WRREL Boot Capacity: 4 MiB ENH RPMB Capacity: 4 MiB ENH
TF卡設(shè)備信息示例:
=> mmc info //TF的設(shè)備信息 Device: mmc@fe2c0000 Manufacturer ID: 3 OEM: 5344 Name: SL16G Timing Interface: Legacy Tran Speed: 52000000 Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 14.8 GiB Bus Width: 4-bit Erase Group Size: 512 Bytes
4. 查看MMC設(shè)備分區(qū)
使用mmc part命令查看設(shè)備分區(qū)表(以EMMC為例,分區(qū)類型為EFI),獲取分區(qū)名、起始/結(jié)束地址等關(guān)鍵信息:
=> mmc part Partition Map for MMC device 0 -- Partition Type: EFI Part Start LBA End LBA Name Attributes Type GUID Partition GUID 1 0x00004000 0x00005fff "uboot" attrs: 0x0000000000000000 type: da7a0000-0000-400e-8000-214900006be8 guid: ae050000-0000-417a-8000-728a000054cf 2 0x00006000 0x00007fff "misc" ...(省略部分分區(qū))... 6 0x00078000 0x01c77fff "rootfs" // ?例中需操作的rootfs分區(qū) ...
5. 查看文件系統(tǒng)內(nèi)容
使用ext4ls <設(shè)備類型> <設(shè)備號(hào):分區(qū)號(hào)>命令查看指定分區(qū)的目錄結(jié)構(gòu)(示例:EMMC的第6分區(qū)rootfs):
=> ext4ls mmc 0:6 <DIR> 4096 . <DIR> 4096 .. <DIR> 16384 lost+found <SYM> 7 bin <DIR> 4096 boot <DIR> 4096 dev ...(省略部分系統(tǒng)目錄)... <DIR> 4096 home // 目標(biāo)文件所在上級(jí)目錄 ...
6. 讀取文件內(nèi)容(以Hello.txt為例)
讀取rootfs分區(qū)中/home/forlinx/Hello.txt文件,需按“確認(rèn)存在→選內(nèi)存地址→加載文件→查看內(nèi)容”四步操作:
-
確認(rèn)文件存在:通過(guò)ext4ls驗(yàn)證目標(biāo)文件路徑有效性:
=> ext4ls mmc 0:6 home/forlinx <DIR> 4096 . <DIR> 4096 .. 14 Hello.txt // 目標(biāo)文件(大小14字節(jié))
-
確定可用內(nèi)存地址:用bdinfo查看內(nèi)存分布,選擇安全DDR區(qū)域:
=> bdinfo arch_number = 0x00000000 boot_params = 0x00000000 DRAM bank = 0x00000000 // 系統(tǒng)保留區(qū),不建議使用 -> start = 0x00200000 -> size = 0x08200000 DRAM bank = 0x00000001 // 安全可用區(qū) -> start = 0x09400000 -> size = 0xE6C00000 ...(省略其他硬件信息)...
警告:嚴(yán)禁使用系統(tǒng)保留內(nèi)存(如DRAM bank 0),否則會(huì)導(dǎo)致U-Boot崩潰或數(shù)據(jù)損壞。 -
加載文件到內(nèi)存:用ext4load將文件加載到指定內(nèi)存地址:
=> ext4load mmc 0:6 0xA0000000 /home/forlinx/Hello.txt 14 bytes read in 5 ms (2 KiB/s) -
查看內(nèi)存中文件內(nèi)容:用md.b <地址> <長(zhǎng)度>讀取內(nèi)存數(shù)據(jù):
=> md.b 0xA0000000 0x10 a0000000: 48 69 2c 20 46 4f 52 4c 49 4e 58 21 21 0a ff fe Hi, FORLINX!!...
7. 修改文件內(nèi)容(需啟用ext4write)
開啟功能后,支持兩種修改方式:
(1)替換式修改(加載外部文件覆蓋)
// 假設(shè)修改后的文件已加載到內(nèi)存0xA0000000 => ext4write mmc 0:6 0xA0000000 /home/forlinx/Hello.txt 0xe // 0xe=14字節(jié)(文件大?。?/pre>
(2)直接修改內(nèi)存數(shù)據(jù)后寫入
// 1. 逐字節(jié)修改內(nèi)存(地址0xA0000000開始) => mm.b 0xA0000000 A0000000: 48 ? //這代表地址 0xA0000000 當(dāng)前值是 0x48(ASCII 'H')。 //你可以輸入新的十六進(jìn)制值,然后回車。 例如把 “Hi, FORLINX!!” 改為 “Hi!\n”: => mw.b 0xA0000000 0x48 // 第1字節(jié):'H' => mw.b 0xA0000001 0x69 // 第2字節(jié):'i' => mw.b 0xA0000002 0x21 // 第3字節(jié):'!' => mw.b 0xA0000003 0x0A // 第4字節(jié):換行符'\n' => md.b 0xA0000000 0x20 // 2. 驗(yàn)證修改結(jié)果 => md.b 0xA0000000 0x20 a0000000: 48 69 21 0a 46 4f 52 4c 49 4e 58 21 21 0a ff fe Hi!.FORLINX!!... // 3. 寫入文件系統(tǒng) => ext4write mmc 0:6 0xA0000000 /home/forlinx/Hello.txt 0xe
三、USB設(shè)備(如U盤)的文件讀取
USB設(shè)備為外部存儲(chǔ),需先初始化USB子系統(tǒng)才能識(shí)別,步驟如下:
1. 初始化USB子系統(tǒng)
使用usb start命令啟動(dòng)USB控制器并掃描設(shè)備,成功識(shí)別后會(huì)顯示存儲(chǔ)設(shè)備數(shù)量:
=> usb start starting USB... Bus usb@fc000000: usb maximum-speed not found Register 2000140 NbrPorts 2 Starting the controller USB XHCI 1.10 ...(省略USB初始化日志)... scanning usb for storage devices... 1 Storage Device(s) found // 識(shí)別到1個(gè)U盤
2. 查看USB設(shè)備文件
U盤通常為FAT32格式,使用fatls usb <設(shè)備號(hào)>查看目錄內(nèi)容(設(shè)備號(hào)默認(rèn)從0開始):
=> fatls usb 0 System Volume Information/ // 系統(tǒng)隱藏目錄
16 sram_code.bin // 目標(biāo)文件(大小16字節(jié))
3. 讀取USB設(shè)備文件內(nèi)容
使用fatload加載文件到內(nèi)存,再用md.b查看內(nèi)容:
// 1. 加載文件到內(nèi)存 => fatload usb 0:1 0xA0000000 sram_code.bin //下載內(nèi)容文件到內(nèi)存 reading sram_code.bin 16 bytes read in 23 ms (0 Bytes/s) =>=> md.b 0xA0000000 0x10 //讀取內(nèi)存地址上的內(nèi)容 ,遇上邊一致 a0000000: 80 5a a5 d2 01 09 80 d2 01 00 00 f9 c0 03 5f d6 .Z............_.
四、關(guān)鍵注意事項(xiàng)
- 所有操作需在U-Boot控制臺(tái)執(zhí)行,確保開發(fā)板已正常進(jìn)入控制臺(tái)模式(非自動(dòng)啟動(dòng)流程)。
- MMC設(shè)備(EMMC/TF卡)常用命令為ext4ls/ext4load/ext4write(ext4格式),USB設(shè)備常用fatls/fatload(FAT格式),需根據(jù)文件系統(tǒng)選擇命令。
- 寫入操作(如ext4write)存在數(shù)據(jù)風(fēng)險(xiǎn),建議在調(diào)試環(huán)境中使用,生產(chǎn)環(huán)境避免啟用。
- 若需在U-Boot源碼中集成文件操作,可調(diào)用U-Boot提供的API(如ext4_read_file()、usb_storage_probe()),需確保對(duì)應(yīng)驅(qū)動(dòng)已編譯。
相關(guān)產(chǎn)品 >
-
FET3588-C核心板
RK3588芯片系列是Rockchip推出的旗艦級(jí)工業(yè)級(jí)產(chǎn)品,采用先進(jìn)的8nm制程工藝,集成4核Cortex-A76+4核Cortex-A55架構(gòu),A76主頻高達(dá)2.4GHz,A55核主頻高達(dá)1.8GHz,能夠提供強(qiáng)大的性能支撐。飛凌FET3588-C核心板經(jīng)過(guò)了嚴(yán)苛的環(huán)境溫度測(cè)試和壓力測(cè)試,確保在高端應(yīng)用中能夠穩(wěn)定運(yùn)行。您可以通過(guò)飛凌提供的rk3588開發(fā)套件充分評(píng)估和驗(yàn)證其性能。
了解詳情
-
OK3588-C開發(fā)板
rk3588系列板卡是飛凌嵌入式基于國(guó)產(chǎn)瑞芯微旗艦級(jí) RK3588處理器開發(fā)設(shè)計(jì),集成了四核Cortex-A76和四核Cortex-A55,性能強(qiáng)大,可通過(guò)rk3588開發(fā)板產(chǎn)品簡(jiǎn)介了解了rk3588功能特點(diǎn),評(píng)估芯片性能參數(shù),飛凌為RK3588提供了豐富的參考資料,包括rk3588原理圖、使用手冊(cè)、應(yīng)用筆記等,為便于客戶對(duì)開發(fā)套件的參考,rk3588開發(fā)板做了多重防護(hù)設(shè)計(jì),像靜電、浪涌、脈沖群等,產(chǎn)品穩(wěn)定可靠,值得推薦。
了解詳情

