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
=>
提示:若未及時按鍵,U-Boot將繼續執行自動啟動(加載內核),需重啟開發板后重新嘗試。

二、MMC設備(EMMC/TF卡)的文件讀寫

飛凌 RK3588 開發板硬件上集成雙路 MMC 控制器,分別對應 EMMC 與 TF 卡接口,且完美兼容 EMMC 5.1 規范及 SD 3.0 協議,支持 HS400 高速傳輸模式與 8bit/4bit 數據總線寬度,為存儲設備的并行操作提供了硬件支撐。對 MMC 設備進行文件讀寫需遵循 “識別→切換→查詢→操作” 四步流程,具體步驟如下:

1. 查看MMC控制器

使用mmc list命令查看已初始化的MMC控制器(由設備樹預定義,通常 0對應EMMC1對應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文件,需按“確認存在→選內存地址→加載文件→查看內容”四步操作:

  1. 確認文件存在:通過ext4ls驗證目標文件路徑有效性:
    => ext4ls mmc 0:6 home/forlinx
    <DIR> 4096 .
    <DIR>  4096  ..
    14        Hello.txt // 目標文件(大小14字節)
  2. 確定可用內存地址:用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崩潰或數據損壞。
  3. 加載文件到內存:用ext4load將文件加載到指定內存地址:
    => ext4load mmc 0:6 0xA0000000 /home/forlinx/Hello.txt 14 bytes read in 5 ms (2 KiB/s)
  4. 查看內存中文件內容:用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)

重要:U-Boot默認禁用ext4write命令(防止誤操作),需先在U-Boot源碼配置中開啟。

開啟功能后,支持兩種修改方式:

(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盤
提示:若未識別到設備,需檢查U盤連接(建議插USB 2.0接口),或重新執行usb start命令。

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開發套件充分評估和驗證其性能。

    了解詳情
    FET3588-C核心板
  • OK3588-C開發板

    rk3588系列板卡是飛凌嵌入式基于國產瑞芯微旗艦級 RK3588處理器開發設計,集成了四核Cortex-A76和四核Cortex-A55,性能強大,可通過rk3588開發板產品簡介了解了rk3588功能特點,評估芯片性能參數,飛凌為RK3588提供了豐富的參考資料,包括rk3588原理圖、使用手冊、應用筆記等,為便于客戶對開發套件的參考,rk3588開發板做了多重防護設計,像靜電、浪涌、脈沖群等,產品穩定可靠,值得推薦。

    了解詳情
    OK3588-C開發板

推薦閱讀 換一批 換一批