10 分鐘搞定 RK3588開發(fā)板U-Boot 階段存儲設(shè)備文件讀取!超詳細教程(含結(jié)果驗證)

原創(chuàng) 作者 Forlinx 2025-11-04 20:43:00 rk3588 瑞芯微rk3588 rk3588開發(fā)板

OK3588-C開發(fā)板 U-Boot 存儲設(shè)備文件讀取

?凌OK3588-C開發(fā)板基于瑞芯微RK3588旗艦處理器打造,采?先進8nm制程?藝與"4核A76+4核A55"??核架構(gòu),不僅具備6TOPS算?的三核NPU與8K超?清處理能?,更通過雙路獨?MMC控制器、多規(guī)格USB接?等豐富硬件設(shè)計,為存儲設(shè)備調(diào)試提供了穩(wěn)定可靠的硬件基礎(chǔ)。本文詳細介紹在飛凌嵌入式RK3588開發(fā)板的U-Boot控制臺階段,讀取各類存儲設(shè)備(EMMC、TF卡、U盤)文件內(nèi)容的標準化方法。盡管不同存儲設(shè)備的初始化子系統(tǒng)存在差異,但均可通過U-Boot控制臺命令完成統(tǒng)一的讀寫操作,適用于開發(fā)調(diào)試與系統(tǒng)驗證場景。

一、進入U-Boot控制臺

?凌RK3588開發(fā)板的U-Boot經(jīng)過深度定制優(yōu)化,默認配置了合理的 bootdelay 等待時間,在U-Boot啟動過程中,需在自動啟動倒計時結(jié)束前,按下 空格鍵Ctrl+C中斷流程,進入交互式控制臺。操作界面與示例如下:

Hit key to stop autoboot('Spacebar'): 0 
0:Exit to console
1:Reboot
2:Display type
=>
提示:若未及時按鍵,U-Boot將繼續(xù)執(zhí)行自動啟動(加載內(nèi)核),需重啟開發(fā)板后重新嘗試。

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

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

1. 查看MMC控制器

使用mmc list命令查看已初始化的MMC控制器(由設(shè)備樹預(yù)定義,通常 0對應(yīng)EMMC, 1對應(yīng)TF卡),確認設(shè)備是否被識別:

			
			
=> 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設(shè)備

使用mmc dev <設(shè)備號>命令切換至目標設(shè)備,設(shè)備號對應(yīng)上一步查詢的控制器序號:

=> 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è)備詳細參數(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è)備號:分區(qū)號>命令查看指定分區(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 // 目標文件所在上級目錄
...

6. 讀取文件內(nèi)容(以Hello.txt為例)

讀取rootfs分區(qū)中/home/forlinx/Hello.txt文件,需按“確認存在→選內(nèi)存地址→加載文件→查看內(nèi)容”四步操作:

  1. 確認文件存在:通過ext4ls驗證目標文件路徑有效性:
    => ext4ls mmc 0:6 home/forlinx
    <DIR> 4096 .
    <DIR>  4096  ..
    14        Hello.txt // 目標文件(大小14字節(jié))
  2. 確定可用內(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
    ...(省略其他硬件信息)...
    警告:嚴禁使用系統(tǒng)保留內(nèi)存(如DRAM bank 0),否則會導(dǎo)致U-Boot崩潰或數(shù)據(jù)損壞。
  3. 加載文件到內(nèi)存:用ext4load將文件加載到指定內(nèi)存地址:
    => ext4load mmc 0:6 0xA0000000 /home/forlinx/Hello.txt 14 bytes read in 5 ms (2 KiB/s)
  4. 查看內(nèi)存中文件內(nèi)容:用md.b <地址> <長度>讀取內(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)

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

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

(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 當前值是 0x48(ASCII 'H')。  
 //你可以輸入新的十六進制值,然后回車。 
例如把 “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. 驗證修改結(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è)備為外部存儲,需先初始化USB子系統(tǒng)才能識別,步驟如下:

1. 初始化USB子系統(tǒng)

使用usb start命令啟動USB控制器并掃描設(shè)備,成功識別后會顯示存儲設(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 // 識別到1個U盤
提示:若未識別到設(shè)備,需檢查U盤連接(建議插USB 2.0接口),或重新執(zhí)行usb start命令。

2. 查看USB設(shè)備文件

U盤通常為FAT32格式,使用fatls usb <設(shè)備號>查看目錄內(nèi)容(設(shè)備號默認從0開始):

=> fatls usb 0 System Volume Information/ // 系統(tǒng)隱藏目錄
16      sram_code.bin // 目標文件(大小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)鍵注意事項

  • 所有操作需在U-Boot控制臺執(zhí)行,確保開發(fā)板已正常進入控制臺模式(非自動啟動流程)。
  • MMC設(shè)備(EMMC/TF卡)常用命令為ext4ls/ext4load/ext4write(ext4格式),USB設(shè)備常用fatls/fatload(FAT格式),需根據(jù)文件系統(tǒng)選擇命令。
  • 寫入操作(如ext4write)存在數(shù)據(jù)風險,建議在調(diào)試環(huán)境中使用,生產(chǎn)環(huán)境避免啟用。
  • 若需在U-Boot源碼中集成文件操作,可調(diào)用U-Boot提供的API(如ext4_read_file()usb_storage_probe()),需確保對應(yīng)驅(qū)動已編譯。

相關(guān)產(chǎn)品 >

  • FET3588-C核心板

    RK3588芯片系列是Rockchip推出的旗艦級工業(yè)級產(chǎn)品,采用先進的8nm制程工藝,集成4核Cortex-A76+4核Cortex-A55架構(gòu),A76主頻高達2.4GHz,A55核主頻高達1.8GHz,能夠提供強大的性能支撐。飛凌FET3588-C核心板經(jīng)過了嚴苛的環(huán)境溫度測試和壓力測試,確保在高端應(yīng)用中能夠穩(wěn)定運行。您可以通過飛凌提供的rk3588開發(fā)套件充分評估和驗證其性能。

    了解詳情
    FET3588-C核心板
  • OK3588-C開發(fā)板

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

    了解詳情
    OK3588-C開發(fā)板

推薦閱讀 換一批 換一批