uboot常用命令之eMMC/SD卡命令

news2025/5/30 14:10:13

eMMC和SD卡(TF卡)是同一类设备,以下命令二者是通用,本章节主要以eMMC举例说明命令的使用。

使用help mmc可以看到mmc相关命令列表以及其对应命令用法:

=> help mmc

一、mmc dev

使用mmc list可以看到当前系统挂载的所有mmc设备:

=> mmc list

FSL_SDHC: 0

FSL_SDHC: 1 (eMMC)

本系统的mmc设备有设备0和设备1,设备1是eMMC设备,设备0就是TF卡设备。

使用mmc dev命令可以查看当前选中正在使用的mmc设备,mmc dev使用方法为:

mmc dev [dev] [part]

[dev]是指要选择的设备;

[part]是指所选设备的分区;

如果不加[dev]和[part]两个参数,则显示当前选中设备,如果不加[part]参数,则默认使用所选设备的0分区。

=> mmc dev

switch to partitions #0, OK

mmc1(part 0) is current device

当前选中正在使用的是mmc1设备的0分区,即eMMC Flash的0分区,此处的0分区其实是指eMMC Flash的用户分区(用户分区的概念在以下mmc write章节会有说明)。

使用mmc dev切换到使用TF卡设备:mmc dev 0:

=> mmc dev 0

switch to partitions #0, OK

mmc0 is current device

切换成功之后,现在使用的就是TF卡设备,此时使用的mmc命令都是对TF卡进行的操作。为了使用eMMC进行命令使用举例演示,我们再将mmc设备更换为eMMC:

mmc dev 1:

=> mmc dev 1

switch to partitions #0, OK

mmc1(part 0) is current device

二、mmc info

该命令是查看当前mmc设备相关信息:mmc info或者mmcinfo:

=> mmc info

Device: FSL_SDHC

Manufacturer ID: 45

OEM: 100

Name: DG400

Tran Speed: 52000000

Rd Block Len: 512

MMC version 4.0

High Capacity: Yes

Capacity: 7.3 GiB

Bus Width: 8-bit

Erase Group Size: 512 KiB

三、mmc read

mmc read命令是读mmc中的数据到内存地址。

使用方法为mmc read addr blk# cnt:

addr是将要存放数据的内存地址;

blk#是要读的mmc的起始块号;

cnt是块数目;

举例,从mmc第5块开始读取2块的数据到内存0x80800000:mmc read 80800000 5 2:

=> mmc read 80800000 5 2

MMC read: dev # 1, block # 5, count 2 ... 2 blocks read: OK

每一块是512个字节,读取2块,就是读取2*512=1024个字节。

四、mmc write

顾名思义,mmc write是向mmc中写入数据,mmc write addr blk# cnt:

addr是存放数据的内存地址;

blk#是要写的mmc的起始块号;

cnt是块数目;

举例,我们现在使用mmc write将最新编译的u-boot.imx更新到mmc中。

第一步,我们需要先将新的u-boot.imx存放到内存中,前面章节我们讲过使用tftp将Ubuntu的tftp共享文件夹中的文件下载到内存中,我们现在就使用tftp将u-boot.imx文件下载到内存0x80800000地址。然后第二步,就是用mmc write命令将u-boot.imx写入到mmc的指定uboot分区中。

我们通过操作eMMC设备演示mmc write命令的使用,在进行操作之前,我们先简单了解一下eMMC分区的相关知识,eMMC设备一般是由BOOT Area Patrtition1、BOOT Area Patrtition2、RPMB Partition、General Purpose Partitions(可分4个) 、User Data Area这几个物理分区组成,对于RPMB Partition、General Purpose Partitions这两种分区我们没有涉及到这里不作介绍,我们涉及到的是BOOT Area Patrtition1、BOOT Area Patrtition2、User Data Area,其中BOOT Area Patrtition1、BOOT Area Patrtition2是存放uboot镜像的分区,两者选其一作为实际存放uboot的分区,ElfBoard使用的是BOOT Area Patrtition1;User Data Area (UDA)用户分区通常是eMMC中最大的一个分区,是实际产品中最主要的存储区域,ElfBoard在烧写时,会对此用户分区进行软件分区,分成RAW、fat和ext3格式的三个逻辑分区。

了解了eMMC分区的相关概念之后,我们就可以进行如下操作,验证测试mmc write命令。按照前面tftp命令章节,配置好tftp网络环境之后,我们重新编译一个uboot.imx镜像,并且放入到Ubuntu的tftp共享文件夹中,并保证网络连接状态良好,在开发板使用tftp将新的uboot镜像下载到内存0x80800000处:

=> tftp 80800000 u-boot.imx

下载完成,之后使用mmc write写入到eMMC分区BOOT Area Patrtition1中,根据mmc write addr blk# cnt使用方法,addr=80800000,blk#是要烧写的起始地址, uboot在eMMC boot分区的偏移为1K=2*512字节,即 blk#=2,cnt是烧写的数据长度,根据tftp传输完成之后的打印信息,知道uboot.imx镜像大小为429056字节=838*512字节,所以cnt应该等于838,十六进制为0x346。

选择mmc设备及BOOT Area Patrtition1分区(最后一个参数为“1”,表示BOOT Area Patrtition1分区,为“2”时,表示选择的是BOOT Area Patrtition2分区,为“0”时,表示选择的是UDA用户分区):

=> mmc dev 1 1

switch to partitions #1, OK

mmc1(part 1) is current device

=> mmc write 80800000 2 346

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

烧写完成之后,使用reset开发板,根据uboot编译时间可以看出,uboot已经替换为刚刚编译的:

五、mmc erase

mmc erase是擦除mmc中数据。使用方法:

mmc erase blk# cnt,其中blk#是要擦除的mmc起始地址,cnt要擦除的块数量。一般情况很少使用mmc erase命令进行mmc擦除操作。

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

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

相关文章

知识宇宙-学习篇:学编程为什么从C语言开始学起?

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、C语言的历史地位与影响力1. 编程语言的"鼻祖"2. 现代技术的基础 二、…

Mybatis-入门程序、 数据库连接池、XML映射配置文件、MybatisX

一. Mybatis 1. Mybatis是一款优秀的持久层框架,用于简化jdbc的开发 2. Mybatis本是Apache的一个开源项目iBatis,2010年这个项目有Apache迁移到了Google code,并且改名为MyBatis,2013年11月迁移到Github 3.官网:MyBat…

BUUCTF [ZJCTF 2019]EasyHeap

前置知识点: unlink知识点和手法-CSDN博客 [ZJCTF 2019]EasyHeap [ZJCTF 2019]EasyHeap 1.准备 2.ida分析 main函数 int __fastcall __noreturn main(int argc, const char **argv, const char **envp) {int n3; // eaxchar buf[8]; // [rsp0h] [rbp-10h] BYREFunsigned …

机器学习AI精准预测复合材料性能、材料结构设计优化;数据驱动加速新材料研发,百年难遇的组合打破科研壁垒!

在人工智能与复合材料技术融合的背景下,复合材料的研究和应用正迅速发展,创新解决方案层出不穷。从复合材料性能的精确预测到复杂材料结构的智能设计,从数据驱动的材料结构优化到多尺度分析,人工智能技术正以其强大的数据处理能力…

apache http client连接池实现原理

在java开发中我们经常会涉及到http 请求接口,一般有几种方式: java自带的 HttpURLConnectionokHttpClientapache http client 一般我们使用apache http client会比较多点,在代码中会进行如下调用方式: private static class Htt…

MD5加密(Java)

首先来看数据库里的一张员工信息表: 问题: 员工表中的密码是明文存储,安全性太低。 解决思路: 将明文密码加密后存储,提高安全性。 加密方式有很多,这里简单介绍 MD5加密方式 : (详细解释请转…

[攻防世界] easyphp writeup

知识点 科学计数法的妙用 9e9 指定结尾MD5值的爆破array_search() 函数用于在数组中搜索某个值,并返回对应的键名。如果找不到该值,则返回 false 默认值匹配:可以利用整数绕过字符串匹配机制stricttrue时,数据类型和值都需要匹配…

如何不规范的设置密码

上来就干 当我们使用服务器的时候,有时候需要一些非常简单的密码,来方便使用,但是自己完全可控的环境下,我们希望我们的密码足够的简单,比如,可能它的密码就是123,或者是1? 但是当你…

分享全国数字人才技能提升师资培训班 第五期邀请函

线下(广州班): 大模型与AIGC多模态技术应用实战 线下(青岛班): Deepseek教学应用与智能体开发实战 线上班(十二大专题): DeepSeek大模型教学应用实战 大模型与AIGC技…

【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析

【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析 前言 在人工智能应用开发领域,大语言模型(LLM)的集成能力至关重要。NVIDIA作为全球领先的GPU厂商,其LLM API提供了对Meta Llama-3.…

Redis实战-缓存篇(万字总结)

前言: 今天结合黑马点评这个项目,讲下有关Redis缓存的一些内容,例如缓存更新策略,缓存穿透,雪崩和击穿等。 今日所学: 什么是缓存缓存更新策略缓存穿透缓存雪崩缓存击穿缓存工具封存 目录 1.什么是缓存…

Python学习笔记--Django 表单处理

注意:本笔记基于python 3.12,django 5版本,不同版本使用上有些许差别。 HTML表单是网站交互性的经典方式。下面介绍如何用Django对用户提交的表单数据进行处理。 HTTP 请求 HTTP协议以"请求-回复"的方式工作。客户发送请求时&am…

历年福州大学保研上机真题

2025福州大学保研上机真题 2024福州大学保研上机真题 2023福州大学保研上机真题 在线测评链接:https://pgcode.cn/problem?classification1 螺旋矩阵 题目描述 给定一个整数 n n n,要求打印出一个 n n n \times n nn 的螺旋矩阵。 例如&#xff…

大模型学习笔记day2 LoRA微调

LORA的核心思想基准模型不进行变化,我额外引入一部分参数来做专属内容处理,同时加上原有模型的推理能力,这部分新增加的的内容就是要训练出来的参数矩阵。 本征维度(Intrinsic Dimension):是指数据或空间中…

Maven-概述-介绍安装

目录 1.项目对象模型 2.依赖管理模型 3.仓库:用于存储资源,管理各种jar包 4.本地仓库路径 5.Maven配置本地仓库 5.1在Maven路径下新建文件夹用于本地仓库存储 5.2 复制本地仓库路径 5.3 找到配置文件路径,使用VSCode方式打开 5.4 新…

GitHub Page填写域名显示被占用

问题描述 在Github上使用github page搭建个人博客,在项目中的Settings->Pages页面里面填写个人的域名时,出现如下报错信息,显示域名被占用情况 The custom domain example.com is already taken. If you are the owner of this domain, c…

java高级 -动态代理

动态代理的概念 动态代理是一种在运行时生成代理对象的机制,无需手动编写代理类。 代理就类似于中介公司,为明星置办各种前期准备。例如歌声需要开演唱会唱歌,那么此时就需要代理对象进行置办场地,设备,然后明星只需要…

机器学习算法:线性回归

1. 基础概念 线性回归是一种用于建模连续型目标变量(如价格、销量、温度)与一个或多个特征变量(如面积、广告投入、时间)之间线性关系的统计方法。 核心思想:找到一条直线(或超平面)&#xff0…

常见小问题(Open Folder as PyCharm Project)

1.删除pycharm鼠标右键快捷键打开项目 winr键打开,输入regedit,运行注册器 找到下面的路径:计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\PyCharm 删除即可

第四十四节:目标检测与跟踪-模板匹配

一、引言 模板匹配的核心思想是通过在输入图像中搜索与预定义模板最相似的区域来定位目标。这种方法计算效率高、实现简单,特别适用于目标外观变化不大且背景相对简单的场景。本文将深入探讨模板匹配的原理、OpenCV中的实现方法、优化技巧以及实际应用案例。 二、模板匹配基础…