0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

速通攻略 | RK3588开发板U-Boot阶段的存储设备文件读取方法

飞凌嵌入式 2025-12-12 08:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

飞凌嵌入式OK3588-C开发板作为一款基于瑞芯微RK3588处理器设计开发的旗舰级开发板,不仅拥有4核A76+4核A55的强劲架构以及6TOPS的卓越NPU算力,而且在硬件上支持双路独立MMC控制器、多规格USB接口等,为存储设备调试筑牢硬件根基。有了这样强大的硬件支撑,在实际的开发调试与系统验证过程中,对各类存储设备文件内容的读取操作就显得尤为重要。

本文将介绍在飞凌嵌入式RK3588开发板U-Boot控制台阶段,读取eMMC、TF 卡、U盘等各类存储设备文件内容的标准化方法。尽管不同设备初始化有差异,但通过控制台命令可实现统一读写,为开发调试与系统验证带来极大便利。

wKgZO2lEsdqAM1x_AALc6dqHgjw419.png

一、进入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卡的信息示例分别如下:

(1) 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

(2) 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 bin4096 boot4096 dev ...(省略部分系统目录)...4096 home // 目标文件所在上级目录 ...

6. 读取文件内容(以Hello.txt为例)

读取rootfs分区中/home/forlinx/Hello.txt文件,需按“确认存在→选内存地址→加载文件→查看内容”四步操作:

(1) 确认文件存在:通过ext4ls验证目标文件路径有效性:

=> ext4ls mmc 0:6 home/forlinx4096 .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............_.

四、需注意的关键事项

(1) 所有操作需在U-Boot控制台执行,确保开发板已正常进入控制台模式(非自动启动流程);

(2) MMC设备常用命令为ext4ls/ext4load/ext4write(ext4格式),USB设备常用fatls/fatload(FAT格式),需根据文件系统选择命令;

(3) 写入操作(如ext4write)存在数据风险,建议在调试环境中使用,生产环境避免启用;

(4) 若需在U-Boot源码中集成文件操作,可调用U-Boot提供的API(如ext4_read_file()、usb_storage_probe()),需确保对应驱动已编译。

以上就是如何在飞凌嵌入式RK3588开发板U-Boot控制台阶段,读取eMMC、TF 卡、U盘等各类存储设备文件内容的标准化方法,希望能够对大家有所帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9611

    浏览量

    394372
  • 嵌入式
    +关注

    关注

    5212

    文章

    20763

    浏览量

    338797
  • Linux
    +关注

    关注

    88

    文章

    11854

    浏览量

    219833
  • 开发板
    +关注

    关注

    26

    文章

    6507

    浏览量

    121363
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞芯微RK3588开发板RK3588 EVB和RK3588S EVB解读

    开发工程师Damon的解答。 RK3588开发板的两款产品分别为RK3588 EVB及RK3588S EVB。
    的头像 发表于 09-22 15:54 2.3w次阅读
    瑞芯微<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b><b class='flag-5'>RK3588</b> EVB和<b class='flag-5'>RK3588</b>S EVB解读

    搭载RK3588的迅为iTOP-3588开发板解读

    搭载RK3588的迅为iTOP-3588开发板解读 迅为RK3588开发板是基于瑞芯微RK3588
    的头像 发表于 09-28 18:19 7844次阅读
    搭载<b class='flag-5'>RK3588</b>的迅为iTOP-<b class='flag-5'>3588</b><b class='flag-5'>开发板</b>解读

    Rockchip rk3588 U-Boot详解 (二)

    Rockchip rk3588 U-Boot详解 (二) 专栏总目录 1.1 DM DM (Driver Model) 是 U-Boot 标准的 device-driver 开发模型,
    的头像 发表于 06-13 10:49 4893次阅读

    Banana Pi开源社区基于瑞芯微RK3588开发板,DeepSeek开发利器

    Banana Pi开源社区基于瑞芯微RK3588开发板,DeepSeek开发利器
    的头像 发表于 02-19 18:25 4624次阅读
    Banana Pi开源社区基于瑞芯微<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>,DeepSeek<b class='flag-5'>开发</b>利器

    RK3588 EVB 开发板介绍

    S EVB在接口及开发板尺寸上进行了优化,尺寸为20cmX14cm,适用于高端平板、AR/VR、个人移动互联网设备等产品。图:RK3588S EVB 系统框图 RK3588S同样配备
    发表于 03-16 16:39

    【飞凌RK3588开发板试用】源码编译

    开发环境主机:Ubuntu 20.04开发板:OK3588-C开发板1 准备源码1.创建工作目录$ mkdir -p ~/rk3588
    发表于 03-28 22:32

    Banana Pi BPI-W3 RK3588开发板基本使用文档

    /arch/arm64/boot/dts/rockchip/目录下。对于 armsom-w3 开发板来说,使用的设备文件为:rk3588
    发表于 11-02 12:33

    瑞芯微旗舰芯RK3588开发板开售 比亚迪为应达利颁奖

    瑞芯微旗舰芯RK3588开发板发售 比亚迪为应达利颁奖 瑞芯微旗舰芯RK3588开发板发售 近日,瑞芯微旗舰芯RK3588系列
    的头像 发表于 03-25 19:23 5978次阅读

    【首发开箱】揭开RK3588开发板的神秘面纱!

    教你玩转RK3588开发板硬声入驻企业:瑞芯微教程包含以下内容:1、开箱:EVB开箱接线2、外部接口:EVB硬件接口介绍。3、环境搭建:EVB使用及调试方法。4、系统升级:RK3588
    的头像 发表于 03-14 11:24 4976次阅读
    【首发开箱】揭开<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>的神秘面纱!

    迅为RK3588开发板-基于瑞芯微RK3588摄像头方案

    RK3588开发板
    的头像 发表于 06-09 11:09 7785次阅读
    迅为<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>-基于瑞芯微<b class='flag-5'>RK3588</b>摄像头方案

    rk3588有哪些开发板

    rk3588有哪些开发板 当前,rk3588开发板有RockPro64、Rock960 Plus、Rockchip Sapphire、Khadas VIM3 Pro和Firefly
    的头像 发表于 08-15 17:04 4172次阅读

    RK3588!黑神话悟空,启动?-迅为电子RK3588开发板

    RK3588!黑神话悟空,启动?-迅为电子RK3588开发板
    的头像 发表于 08-30 14:13 2672次阅读
    <b class='flag-5'>RK3588</b>!黑神话悟空,启动?-迅为电子<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>

    RK3588主板/开发板Android12系统APK签名文件生成的方法,干货满满

    本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能RK3588
    的头像 发表于 12-12 10:38 1657次阅读
    <b class='flag-5'>RK3588</b>主板/<b class='flag-5'>开发板</b>Android12系统APK签名<b class='flag-5'>文件</b>生成的<b class='flag-5'>方法</b>,干货满满

    RK3588原理图

    RK3588开发板原理图文件
    发表于 02-24 15:57 76次下载

    深入解析RK3588 U-Boot文件:evb_rk3588.c核心逻辑拆解

    在嵌入式开发领域,瑞芯微RK3588凭借超强的算力、丰富的接口和广泛的场景适配性,成为高端边缘计算、消费电子项目的热门选择。而U-Boot作为嵌入式系统的“第一道门”,负责硬件初始化、引导内核启动,其
    的头像 发表于 02-24 15:24 1090次阅读
    深入解析<b class='flag-5'>RK3588</b> <b class='flag-5'>U-Boot</b><b class='flag-5'>板</b>级<b class='flag-5'>文件</b>:evb_<b class='flag-5'>rk3588</b>.c核心逻辑拆解