10 分鐘搞定 RK3588開發板U-Boot 階段存儲設備文件讀取!超詳細教程(含結果驗證)
Forlinx
2025-11-04 20:43:00
rk3588
瑞芯微rk3588
rk3588開發板
OK3588-C開發板 U-Boot 存儲設備文件讀取
?凌OK3588-C開發板基于瑞芯微RK3588旗艦處理器打造,采?先進8nm制程?藝與"4核A76+4核A55"??核架構,不僅具備6TOPS算?的三核NPU與8K超?清處理能?,更通過雙路獨?MMC控制器、多規格USB接?等豐富硬件設計,為存儲設備調試提供了穩定可靠的硬件基礎。本文詳細介紹在飛凌嵌入式RK3588開發板的U-Boot控制臺階段,讀取各類存儲設備(EMMC、TF卡、U盤)文件內容的標準化方法。盡管不同存儲設備的初始化子系統存在差異,但均可通過U-Boot控制臺命令完成統一的讀寫操作,適用于開發調試與系統驗證場景。
一、進入U-Boot控制臺
?凌RK3588開發板的U-Boot經過深度定制優化,默認配置了合理的 bootdelay 等待時間,在U-Boot啟動過程中,需在自動啟動倒計時結束前,按下 空格鍵或 Ctrl+C中斷流程,進入交互式控制臺。操作界面與示例如下:
Hit key to stop autoboot('Spacebar'): 0
0:Exit to console
1:Reboot
2:Display type
=>
二、MMC設備(EMMC/TF卡)的文件讀寫
飛凌 RK3588 開發板硬件上集成雙路 MMC 控制器,分別對應 EMMC 與 TF 卡接口,且完美兼容 EMMC 5.1 規范及 SD 3.0 協議,支持 HS400 高速傳輸模式與 8bit/4bit 數據總線寬度,為存儲設備的并行操作提供了硬件支撐。對 MMC 設備進行文件讀寫需遵循 “識別→切換→查詢→操作” 四步流程,具體步驟如下:
1. 查看MMC控制器
使用mmc list命令查看已初始化的MMC控制器(由設備樹預定義,通常 0對應EMMC, 1對應TF卡),確認設備是否被識別:
=> mmc list //查看當前已初始化的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設備
使用mmc dev <設備號>命令切換至目標設備,設備號對應上一步查詢的控制器序號:
=> 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設備信息
切換設備后,使用mmc info命令查看設備詳細參數(容量、總線寬度、接口版本等),EMMC與TF卡的信息示例分別如下:
EMMC設備信息示例:
=> mmc info //EMMC的設備信息 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卡設備信息示例:
=> mmc info //TF的設備信息 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設備分區
使用mmc part命令查看設備分區表(以EMMC為例,分區類型為EFI),獲取分區名、起始/結束地址等關鍵信息:
=> 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" ...(省略部分分區)... 6 0x00078000 0x01c77fff "rootfs" // ?例中需操作的rootfs分區 ...
5. 查看文件系統內容
使用ext4ls <設備類型> <設備號:分區號>命令查看指定分區的目錄結構(示例:EMMC的第6分區rootfs):
=> ext4ls mmc 0:6 <DIR> 4096 . <DIR> 4096 .. <DIR> 16384 lost+found <SYM> 7 bin <DIR> 4096 boot <DIR> 4096 dev ...(省略部分系統目錄)... <DIR> 4096 home // 目標文件所在上級目錄 ...
6. 讀取文件內容(以Hello.txt為例)
讀取rootfs分區中/home/forlinx/Hello.txt文件,需按“確認存在→選內存地址→加載文件→查看內容”四步操作:
-
確認文件存在:通過ext4ls驗證目標文件路徑有效性:
=> ext4ls mmc 0:6 home/forlinx <DIR> 4096 . <DIR> 4096 .. 14 Hello.txt // 目標文件(大小14字節)
-
確定可用內存地址:用bdinfo查看內存分布,選擇安全DDR區域:
=> bdinfo arch_number = 0x00000000 boot_params = 0x00000000 DRAM bank = 0x00000000 // 系統保留區,不建議使用 -> start = 0x00200000 -> size = 0x08200000 DRAM bank = 0x00000001 // 安全可用區 -> start = 0x09400000 -> size = 0xE6C00000 ...(省略其他硬件信息)...
警告:嚴禁使用系統保留內存(如DRAM bank 0),否則會導致U-Boot崩潰或數據損壞。 -
加載文件到內存:用ext4load將文件加載到指定內存地址:
=> ext4load mmc 0:6 0xA0000000 /home/forlinx/Hello.txt 14 bytes read in 5 ms (2 KiB/s) -
查看內存中文件內容:用md.b <地址> <長度>讀取內存數據:
=> md.b 0xA0000000 0x10 a0000000: 48 69 2c 20 46 4f 52 4c 49 4e 58 21 21 0a ff fe Hi, FORLINX!!...
7. 修改文件內容(需啟用ext4write)
開啟功能后,支持兩種修改方式:
(1)替換式修改(加載外部文件覆蓋)
// 假設修改后的文件已加載到內存0xA0000000 => ext4write mmc 0:6 0xA0000000 /home/forlinx/Hello.txt 0xe // 0xe=14字節(文件大小)
(2)直接修改內存數據后寫入
// 1. 逐字節修改內存(地址0xA0000000開始) => mm.b 0xA0000000 A0000000: 48 ? //這代表地址 0xA0000000 當前值是 0x48(ASCII 'H')。 //你可以輸入新的十六進制值,然后回車。 例如把 “Hi, FORLINX!!” 改為 “Hi!\n”: => mw.b 0xA0000000 0x48 // 第1字節:'H' => mw.b 0xA0000001 0x69 // 第2字節:'i' => mw.b 0xA0000002 0x21 // 第3字節:'!' => mw.b 0xA0000003 0x0A // 第4字節:換行符'\n' => md.b 0xA0000000 0x20 // 2. 驗證修改結果 => md.b 0xA0000000 0x20 a0000000: 48 69 21 0a 46 4f 52 4c 49 4e 58 21 21 0a ff fe Hi!.FORLINX!!... // 3. 寫入文件系統 => ext4write mmc 0:6 0xA0000000 /home/forlinx/Hello.txt 0xe
三、USB設備(如U盤)的文件讀取
USB設備為外部存儲,需先初始化USB子系統才能識別,步驟如下:
1. 初始化USB子系統
使用usb start命令啟動USB控制器并掃描設備,成功識別后會顯示存儲設備數量:
=> 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 // 識別到1個U盤
2. 查看USB設備文件
U盤通常為FAT32格式,使用fatls usb <設備號>查看目錄內容(設備號默認從0開始):
=> fatls usb 0 System Volume Information/ // 系統隱藏目錄
16 sram_code.bin // 目標文件(大小16字節)
3. 讀取USB設備文件內容
使用fatload加載文件到內存,再用md.b查看內容:
// 1. 加載文件到內存 => fatload usb 0:1 0xA0000000 sram_code.bin //下載內容文件到內存 reading sram_code.bin 16 bytes read in 23 ms (0 Bytes/s) =>=> md.b 0xA0000000 0x10 //讀取內存地址上的內容 ,遇上邊一致 a0000000: 80 5a a5 d2 01 09 80 d2 01 00 00 f9 c0 03 5f d6 .Z............_.
四、關鍵注意事項
- 所有操作需在U-Boot控制臺執行,確保開發板已正常進入控制臺模式(非自動啟動流程)。
- MMC設備(EMMC/TF卡)常用命令為ext4ls/ext4load/ext4write(ext4格式),USB設備常用fatls/fatload(FAT格式),需根據文件系統選擇命令。
- 寫入操作(如ext4write)存在數據風險,建議在調試環境中使用,生產環境避免啟用。
- 若需在U-Boot源碼中集成文件操作,可調用U-Boot提供的API(如ext4_read_file()、usb_storage_probe()),需確保對應驅動已編譯。
相關產品 >
-
FET3588-C核心板
RK3588芯片系列是Rockchip推出的旗艦級工業級產品,采用先進的8nm制程工藝,集成4核Cortex-A76+4核Cortex-A55架構,A76主頻高達2.4GHz,A55核主頻高達1.8GHz,能夠提供強大的性能支撐。飛凌FET3588-C核心板經過了嚴苛的環境溫度測試和壓力測試,確保在高端應用中能夠穩定運行。您可以通過飛凌提供的rk3588開發套件充分評估和驗證其性能。
了解詳情
-
OK3588-C開發板
rk3588系列板卡是飛凌嵌入式基于國產瑞芯微旗艦級 RK3588處理器開發設計,集成了四核Cortex-A76和四核Cortex-A55,性能強大,可通過rk3588開發板產品簡介了解了rk3588功能特點,評估芯片性能參數,飛凌為RK3588提供了豐富的參考資料,包括rk3588原理圖、使用手冊、應用筆記等,為便于客戶對開發套件的參考,rk3588開發板做了多重防護設計,像靜電、浪涌、脈沖群等,產品穩定可靠,值得推薦。
了解詳情

