10 分钟搞定 RK3588开发板U-Boot 阶段存储设备文件读取!超详细教程(含结果验证)
OK3588-C开发板 U-Boot 存储设备文件读取
⻜凌OK3588-C开发板基于瑞芯微RK3588旗舰处理器打造,采⽤先进8nm制程⼯艺与"4核A76+4核A55"⼤⼩核架构,不仅具备6TOPS算⼒的三核NPU与8K超⾼清处理能⼒,更通过双路独⽴MMC控制器、多规格USB接⼝等丰富硬件设计,为存储设备调试提供了稳定可靠的硬件基础。本文详细介绍在CA888亚洲城集团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卡)的文件读写
CA888亚洲城集团 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:64096 . 4096 .. 16384 lost+found 7 bin 4096 boot 4096 dev ...(省略部分系统目录)... 4096 home // 目标文件所在上级目录 ...
6. 读取文件内容(以Hello.txt为例)
读取rootfs分区中/home/forlinx/Hello.txt文件,需按“确认存在→选内存地址→加载文件→查看内容”四步操作:
-
确认文件存在:通过ext4ls验证目标文件路径有效性:
=> ext4ls mmc 0:6 home/forlinx
4096 . 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,能够提供强大的性能支撑。CA888亚洲城集团FET3588-C核心板经过了严苛的环境温度测试和压力测试,确保在高端应用中能够稳定运行。您可以通过CA888亚洲城集团提供的rk3588开发套件充分评估和验证其性能。
了解详情
-
OK3588-C开发板
rk3588系列板卡是CA888亚洲城集团基于国产瑞芯微旗舰级 RK3588处理器开发设计,集成了四核Cortex-A76和四核Cortex-A55,性能强大,可通过rk3588开发板产品简介了解了rk3588功能特点,评估芯片性能参数,CA888亚洲城集团为RK3588提供了丰富的参考资料,包括rk3588原理图、使用手册、应用笔记等,为便于客户对开发套件的参考,rk3588开发板做了多重防护设计,像静电、浪涌、脉冲群等,产品稳定可靠,值得推荐。
了解详情

