linux系统中u-boot命令的EMMC和SD卡操作命令分析

news2024/10/6 10:27:46

今天给大家详细的介绍一下u-boot命令之EMMC和SD卡操作的mmc命令使用。希望这篇文章对大家有所帮助。

uboot 支持 EMMC 和 SD 卡,因此也要提供 EMMC 和 SD 卡的操作命令。一般认为 EMMC和 SD 卡是同一个东西,所以没有特殊说明,统一使用 MMC 来代指 EMMC 和 SD 卡。

uboot 中常用于操作 MMC 设备的命令为“mmc”。

mmc 是一系列的命令,其后可以跟不同的参数,在u-boot的命令行输入“?mmc”即可查看 mmc 有关的命令,如下:

=> ? mmc
mmc - MMC sub system

Usage:
mmc info - display info of the current MMC device
mmc read addr blk# cnt
mmc write addr blk# cnt
mmc erase blk# cnt
mmc rescan [mode]
mmc part - lists available partition on current mmc device
mmc dev [dev] [part] [mode] - show or set current mmc device [partition] and set mode
  - the required speed mode is passed as the index from the following list
    [MMC_LEGACY, MMC_HS, SD_HS, MMC_HS_52, MMC_DDR_52, UHS_SDR12, UHS_SDR25,
    UHS_SDR50, UHS_DDR50, UHS_SDR104, MMC_HS_200, MMC_HS_400, MMC_HS_400_ES]
mmc list - lists available devices
mmc wp [PART] - power on write protect boot partitions
  arguments:
   PART - [0|1]
       : 0 - first boot partition, 1 - second boot partition
         if not assigned, write protect all boot partitions
mmc hwpartition <USER> <GP> <MODE> - does hardware partitioning
  arguments (sizes in 512-byte blocks):
   USER - <user> <enh> <start> <cnt> <wrrel> <{on|off}>
        : sets user data area attributes
   GP - <{gp1|gp2|gp3|gp4}> <cnt> <enh> <wrrel> <{on|off}>
        : general purpose partition
   MODE - <{check|set|complete}>
        : mode, complete set partitioning completed
  WARNING: Partitioning is a write-once setting once it is set to complete.
  Power cycling is required to initialize partitions after set to complete.
mmc setdsr <value> - set DSR register value

从上面列出的参数详情可以看出, mmc 后面跟不同的参数可以实现不同的功能,如下所示:

命令功能
mmc info显示MMC/SD卡设备的详细信息,包括容量、速度等
mmc read从MMC/SD卡读取数据到指定的加载地址
mmc wirte将指定加载地址的数据写入MMC/SD卡的指定扇区
mmc erase擦除MMC/SD卡上指定扇区的数据
mmc rescan重新扫描MMC/SD卡设备,以便在U-Boot中重新识别它们mmc part显示当前选择的MMC/SD卡设备的分区表信息
mmc dev选择并初始化指定编号的MMC/SD卡设备
mmc list列出系统中检测到的所有MMC设备的信息
mmc wp设置 MMC/SD卡的写保护状态
mmc hwpartitionMMC/SD卡上进行分区操作
mmc setdsr设置MMC/SD卡的数据寄存器(DSR)的值

mmc命令中最常用的8个命令如下:

  1. mmc info 命令

  2. mmc rescan 命令

  3. mmc list 命令

  4. mmc dev 命令

  5. mmc part 命令

  6. mmc read 命令

  7. mmc write 命令

  8. mmc erase 命令

1、mmc info 命令

mmc info命令用于显示当前选定的 MMC 设备的相关信息,包括设备编号、制造商 ID、OEM、卡名称、总容量、总扇区数、块大小、传输速度、版本信息、是否支持高容量(High Capacity)等,如下所示:

=> mmc info
Device: FSL_SDHC
Manufacturer ID: 3
OEM: 5344
Name: SC16G 
Bus Speed: 49500000
Mode: SD High Speed (50MHz)
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 14.8 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes

每个字段的解释如下:

  • Device: FSL_SDHC:设备类型,这里是 FSL_SDHC,指示是由飞思卡尔(Freescale)提供的 SD 控制器

  • Manufacturer ID: 3:制造商 ID,表示制造商的标识号

  • OEM: 5344:OEM 信息,指示原始设备制造商的标识号

  • Name: SC16G:MMC 卡名称,这里是 SC16G

  • Bus Speed: 49500000:总线速度,表示数据传输的速率

  • Mode: SD High Speed (50MHz):模式,指示 MMC 卡所处的传输模式,这里是 SD 高速模式,传输速率为 50MHz

  • Rd Block Len: 512:读取块长度,表示 MMC 卡的块大小

  • SD version 3.0:SD 卡版本,这里是版本 3.0

  • High Capacity: Yes:是否支持高容量,指示 MMC 卡是否支持高容量存储

  • Capacity: 14.8 GiB:容量,表示 MMC 卡的总容量

  • Bus Width: 4-bit:总线宽度,表示 MMC 卡的数据传输总线宽度

  • Erase Group Size: 512 Bytes:擦除组大小,表示 MMC 卡的擦除操作的最小单位大小

输出中的信息可能会有所不同,具体取决于系统中存在的 MMC 设备和 U-Boot 版本。

2、mmc rescan 命令

mmc rescan命令用于重新扫描系统中的 MMC 设备,并更新设备的编号、容量、速度等信息。这对于在 U-Boot 中添加或移除 MMC 设备后进行设备状态更新很有用。

mmc rescan

3、mmc list 命令

mmc list命令用于列出检测到的 MMC 设备,如下所示:

=> mmc list
FSL_SDHC: 0 (SD)
FSL_SDHC: 1

从上面可以看出,当前开发板有两个 MMC 设备:

  • FSL_SDHC:0 是 SD卡

  • FSL_SDHC:1(eMMC)是 EMMC。

4、 mmc dev 命令

mmc dev命令用于将所选的 MMC 设备设置为当前设备,并在后续的操作中使用该设备。这对于在多个 MMC 设备存在的系统中选择要操作的设备非常有用。命令用法如下:

mmc dev [dev] [part]

参数含义如下:

  • [dev]用来设置要切换的MMC设备号

  • [part]是分区号

[part]分区号也可以不写,不写的话默认为0分区,如下所示:

=> mmc dev 1    /*切换到EMMC,0为SD卡, 1为eMMC*/
switch to partitions #0, OK
mmc1(part 0) is current device

切换到 eMMC 成功, mmc0 为当前的 MMC 设备,输入命令“mmc info”可查看 eMMC 的信息,如下所示:

=> mmc dev 1 
switch to partitions #0, OK
mmc1(part 0) is current device
=> mmc info
Device: FSL_SDHC
Manufacturer ID: 15
OEM: 0
Name: 8GTF4R 
Bus Speed: 49500000
Mode: MMC High Speed (52MHz)
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 7.3 GiB
Bus Width: 4-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 7.3 GiB WRREL
Boot Capacity: 4 MiB ENH
RPMB Capacity: 512 KiB ENH
Boot area 0 is not write protected
Boot area 1 is not write protected

每个字段的解释如下:

  • Device: FSL_SDHC: 设备类型,这里指示为飞思卡尔(Freescale)提供的 SD 控制器

  • Manufacturer ID: 15: 制造商 ID,表示制造商的标识号

  • OEM: 0: OEM 信息,指示原始设备制造商的标识号

  • Name: 8GTF4R: MMC 卡名称,这里是 "8GTF4R"

  • Bus Speed: 49500000: 总线速度,表示数据传输的速率

  • Mode: MMC High Speed (52MHz): 模式,指示 MMC 卡所处的传输模式,这里是 MMC 高速模式,传输速率为 52MHz

  • Rd Block Len: 512: 读取块长度,表示 MMC 卡的块大小

  • MMC version 5.1: MMC 卡版本,这里是版本 5.1

  • High Capacity: Yes: 是否支持高容量,指示 MMC 卡是否支持高容量存储

  • Capacity: 7.3 GiB: 容量,表示 MMC 卡的总容量

  • Bus Width: 4-bit: 总线宽度,表示 MMC 卡的数据传输总线宽度

  • Erase Group Size: 512 KiB: 擦除组大小,表示 MMC 卡的擦除操作的最小单位大小

  • HC WP Group Size: 8 MiB: 高容量写保护组大小,表示高容量 MMC 卡的写保护操作的最小单位大小

  • User Capacity: 7.3 GiB WRREL: 用户可用容量,表示用户可用的存储容量,考虑了保留区域和写保护

  • Boot Capacity: 4 MiB ENH: 引导区容量,表示 MMC 卡用于引导目的的存储容量

  • RPMB Capacity: 512 KiB ENH: RPMB(Replay Protected Memory Block)容量,表示 MMC 卡用于安全存储和认证的特定存储容量

  • Boot area 0 is not write protected: 引导区域 0 未写保护

  • Boot area 1 is not write protected: 引导区域 1 未写保护

5、mmc part 命令

mmc part命令用于查看当前 MMC 设备的分区信息,可以看到每个分区的起始扇区、大小和类型,如下所示:

=> mmc part

Partition Map for MMC device 1  --   Partition Type: DOS

Part    Start Sector    Num Sectors    UUID        Type
  1     20480           262144         e94b5ec8-01 0c
  2     282624          14987264       e94b5ec8-02 83

输出中的每一行表示一个分区的信息,包括以下字段:

  • Part: 分区编号

  • Start Sector: 分区的起始扇区

  • Num Sectors: 分区的扇区数量

  • UUID: 分区的唯一标识符

  • Type: 分区的类型

从上面可以看出,此时 EMMC 有两个分区:

  • 扇区 20480~ 262144 为第一个分区

  • 扇区 282644~14987264 为第二个分区。

如果 EMMC 里面烧写了 Linux 系统的话, EMMC 是有3 个分区:

  • 第 0 个分区存放 uboot,

  • 第 1 个分区存放 Linux 镜像文件和设备树,

  • 第 2 个分区存放根文件系统。

但是在上图中只有两个分区,那是因为第 0 个分区没有格式化,所以识别不出来,实际上第 0 个分区是存在的。一个新的 SD 卡默认只有一个分区,那就是分区 0。

6、mmc read 命令

mmc read命令用于从 MMC(多媒体卡)设备读取数据并将其加载到指定的内存地址。通过执行 mmc read 命令,您可以从 MMC 设备的指定扇区开始读取指定长度的数据,并将其加载到内存中供后续使用。命令如下所示:

mmc read addr blk# cnt

每个参数的含义如下:

  • addr 是数据读取到 DRAM 中的地址

  • blk 是要读取的块起始地址(十六进制),一个块是 512字节,这里的块和扇区是一个意思,在 MMC 设备中我们通常说扇区

  • cnt 是要读取的块数量(十六进制)

示例如下:

=> mmc read 0x80800000 0x600 0x10

MMC read: dev # 1, block # 1536, count 16 ... 16 blocks read: OK

从 EMMC 的第 1536(0x600)个块开始,读取 16(0x10)个块的数据到 DRAM 的0X80800000 地址处。

7、mmc write 命令

mmc write命令用于将数据从内存写入到 MMC 设备的指定扇区中。通过执行 mmc write 命令,您可以将指定内存地址处的数据写入到 MMC 设备的指定扇区中。命令如下所示:

mmc write addr blk# cnt

每个参数的含义如下:

  • addr 是要写入 MMC 中的数据在 DRAM 中的起始地址

  • blk 是要写入 MMC 的块起始地址(十六进制)

  • cnt 是要写入的块大小,一个块为 512 字节

示例如下:

=> mmc write 0x80800000 0x2 0x32E

MMC write: dev # 1, block # 2, count 814 ... 814 blocks written: OK

向 eMMC 中写入742 个块,如果有小数的话就要加 1 个块。使用命令“mmc write”从 eMMC 分区 0 第 2 个块(扇区)开始烧写,一共烧写 742(0x2E6)个块。扩展一下,u-boot可以利用 mmc write更新eMMC中的uboot,可以使用如下命令:

mmc dev 1 0                  //切换到 EMMC 分区 0
tftp 80800000 u-boot.imx     //下载 u-boot.imx 到 DRAM
mmc write 80800000 2 32E     //烧写 u-boot.imx 到 EMMC 中
mmc partconf 1 1 0 0         //分区配置, EMMC 需要这一步!

注:没事千万不要写 SD 卡或者 EMMC 的前两个块(扇区),里面保存着分区表!

8、mmc erase 命令

mmc erase命令用于在 MMC 设备上执行擦除操作。通过执行 mmc erase 命令,您可以擦除 MMC 设备上的指定扇区或分区。命令如下:

mmc erase blk# cnt

每个参数的含义如下:

  • blk 为要擦除的起始块

  • cnt 是要擦除的数量

注:没事不要用 mmc erase 来擦除 MMC 设备!!!

请注意,具体可用的命令和选项可能会根据所使用的 U-Boot 版本和硬件平台而有所不同。某些平台和版本可能不支持此命令。在使用此命令之前,请确保您的 U-Boot 版本和硬件平台支持它。您可以使用 U-Boot 的 help mmc 命令来获取更多关于 mmc 命令的详细信息和可用选项。

今天的内容到这就结束了,感谢大家的收看,如果觉得文章写的还不错,可以点击“赞赏”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/992041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#__基本的读写文件方式

// 代码注释 class Program{/// <summary>/// Path类&#xff1a;/// 不能实例化&#xff1b;提供了一些静态方法&#xff0c;更容易对路径名执行操作&#xff1b;(有兴趣可以自行了解)/// /// 读写文件&#xff1a;File类/// </summary>/// <param name"…

动态库的制作与使用及 动态库加载失败解决

加载动态库时有时会出现error while loading shared libraries&#xff1a;libcalc.so:可以通过lld命令查看动态库的依赖关系&#xff0c;发现libcalc.so时not found 原因 查找的优先级是DT_RPATH->LD_LIBRARY_PATH->/etc/ld.so.cache->/lib/,/usr/lib 找不到一个优…

macos系统综合清理优化 MacCleaner 3 Pro激活中文最新版

MacCleaner 3 Pro是一款用于优化和清理Mac系统的工具。它提供了一系列功能&#xff0c;旨在帮助用户清理无用文件、优化系统性能并保护隐私。 MacCleaner 3 Pro主要功能&#xff1a; 磁盘清理&#xff1a;该工具可以扫描和清理Mac硬盘上的无用文件和垃圾文件&#xff0c;包括…

【数据结构--二叉树】合并二叉树

/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/struct TreeNode* mergeTrees(struct TreeNode* root1, struct TreeNode* root2){if(root1NULL&&root2NULL)//两个二叉树都…

C语言课程作业

本科期间c语言课程作业代码整理&#xff1a; Josephus链表实现 Josephus 层序遍历树 二叉树的恢复 哈夫曼树 链表的合并 中缀表达式 链接&#xff1a;https://pan.baidu.com/s/1Q7d-LONauNLi7nJS_h0jtw?pwdswit 提取码&#xff1a;swit

【文字到语音的论文总结】

1.文字到语音的整个过程 文字到语音的一般整体结构 主要是下面这个流程&#xff0c;每个网络可能会把其中两者或是三者融合在一起来&#xff1b; 长度不同的问题 生成的语音可能和文字的长度并不一样&#xff0c;因此需要解决这个问题 Tactron使用的是交叉注意力的方式解…

无涯教程-JavaScript - IMREAL函数

描述 IMREAL函数以x yi或x yj文本格式返回复数的实系数。 语法 IMREAL (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the real coefficient.Required Notes Excel中的复数仅存储为文本。 当将格式为" a bi"或&q…

CH06_第一组重构(下)

封装变量&#xff08;Encapsulate Variable | 132&#xff09; 曾用名&#xff1a;自封装字段&#xff08;Self-Encapsulate Field&#xff09; 曾用名&#xff1a;封装字段&#xff08;Encapsulate Field&#xff09; let defaultOwner {firstName: "Martin", la…

Pointpillar 论文解读

Pointpillar 论文解读 主要贡献&#xff1a; 这篇文章的主要贡献在于 “Fast Encoder”, 也就是将点云稠密的Pillar(上文提到2847个)**输入给网络,**这才是这篇论文的精髓所在, 这大大提升了识别速度, 论文写可以达到62Hz.仅使用2D卷积层进行端到端学习PointPillars uses a n…

攻防世界题目练习——Web难度1(二)

题目目录 1. fileinclude2. fileclude3. easyphp4. file_include5. unseping 1. fileinclude 一道文件包含题&#xff0c;对文件包含还是不太懂&#xff0c;直接看flag.php文件什么都没有。 根据WriteUp提示先f12查看源码&#xff0c;发现了文件包含的漏洞点lan.php文件&#…

【LeetCode75】第五十题 无限集中的最小数字

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 这是我们在LeetCode75里遇到的第二道设计类题目&#xff0c;难度比上一次的设计题目要难上一些。 题目假设我们拥有一个从1开始的无限集…

Vivado XADC IP核 使用详解

本文介绍Vivado中XADC Wizard V3.3的使用方法。 XADC简介 XADC Wizard Basic Interface Options&#xff1a; 一共三种&#xff0c;分别是AXI4Lite、DRP、None。勾选后可在界面左侧看到相应通信接口情况。Startup Channel Selection Simultaneous Selection&#xff1a;同时监…

小米将推出中端手机,高通骁龙7系列再添一员,能否吸引消费者?

小米将于近日推出一款新的中端智能手机&#xff0c;该手机将搭载全新的处理器——骁龙SM7550。这个代号为“Crow”的处理器引起了广泛的关注和猜想&#xff0c;因为它是高通骁龙7系列的一员&#xff0c;但性能可能低于7 Gen 2&#xff0c;那么它的亮点和面向用户群体是什么呢&a…

字符串讲解

文章目录 字符串一.String概述二.创建String对象的两种方式三.Java的内存模型四.字符串的比较五.StringBuilder的基本操做六.StringJoiner概述七.字符串相关类的底层原理 字符串 一.String概述 1.String是Java定义好的一个类,定义在java.long包中,所以使用的时候不需要导包 …

群晖 NAS WebDAV服务手机ES文件浏览器远程访问【无公网IP内网穿透】

&#x1f4f1; iOS开发上架主页 在强者的眼中&#xff0c;没有最好&#xff0c;只有更好。我们是移动开发领域的优质创作者&#xff0c;同时也是阿里云专家博主。 ✨ 关注我们的主页&#xff0c;探索iOS开发的无限可能&#xff01; &#x1f525;我们与您分享最新的技术洞察和实…

解除百度安全验证

使用chrome浏览器用百度浏览时&#xff0c;一直弹百度安全验证&#xff1a; 在设置里进行重置&#xff1a; 然后重启浏览器就可以了。

算法通过村第六关-树青铜笔记|中序后序

文章目录 前言1. 树的常见概念2. 树的性质3. 树的定义与存储方式4. 树的遍历方式5. 通过序列构建二叉树5.1 前中序列恢复二叉树5.2 中后序列恢复二叉树 总结 前言 提示&#xff1a;瑞秋是个小甜心&#xff0c;她只喜欢被爱&#xff0c;不懂的去爱人。 --几米《你们 我们 他们》…

uni-app 之 表格设置

uni-app 之 表格设置 image.png <view style"padding: 3%; border: #1296db;"><table style"width: 100%; border-collapse: collapse; "><tr style"height: 50px;border: 2px solid;border-color: #F7F7F7;"><td style&qu…

企业架构LNMP学习笔记26

通过Keepalived可以实现主服务器整机不可用&#xff0c;实现VIP的切换。保证用户可以通过VIP进行访问服务。但是实际上&#xff0c;往往不是服务器整机不可用&#xff0c;只是对应的服务或者软件不可用。 比如说&#xff0c;nginx提供的web的服务&#xff0c;nginx进程关闭。 …

什么是JVM常用调优策略?分别有哪些?

目录 一、JVM调优 二、堆内存大小调整 三、垃圾回收器调优 四、线程池调优 一、JVM调优 Java虚拟机&#xff08;JVM&#xff09;的调优主要是为了提高应用程序的性能&#xff0c;包括提高应用程序的响应速度和吞吐量。以下是一些常用的JVM调优策略&#xff1a; 堆内存大小…