uboot常用命令之eMMC/SD卡命令
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擦除操作。
相关文章:

uboot常用命令之eMMC/SD卡命令
eMMC和SD卡(TF卡)是同一类设备,以下命令二者是通用,本章节主要以eMMC举例说明命令的使用。 使用help mmc可以看到mmc相关命令列表以及其对应命令用法: > help mmc 一、mmc dev 使用mmc list可以看到当前系统挂载的所有mmc设备ÿ…...
【Kafka】编写消费者开发模式时遇到‘未解析的引用‘SIGUSR1’’
在编写消费者开发模式时,不要用简单的consumer,会导致消费数据不全的情况,需要用ConsumerGroup。 代码可以参考官方实例:https://github.com/Shopify/sarama/tree/main/examples/consumergroup 问题描述: 编写消费者开…...
DeepSeek 赋能教育游戏化:AI 重构学习体验的技术密码
目录 一、引言:教育游戏化与 DeepSeek 的相遇二、DeepSeek 技术剖析2.1 核心架构2.2 关键技术 三、教育游戏化设计的奥秘3.1 概念与意义3.2 常见方法与元素3.3 成功案例借鉴 四、DeepSeek 在教育游戏化设计中的多面应用4.1 个性化学习路径打造4.2 智能教学辅助工具4…...
Docker run命令-p参数详解
端口映射基础语法 docker run -p <宿主机端口>:<容器端口> 操作示例 docker run -d --restartalways --namespug -p 5000:80 registry.aliyuncs.com/openspug/spug参数解析 -d:后台运行容器--restartalways:设置容器自动重启--namespug&…...

知识宇宙-学习篇:学编程为什么从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…...
互联网大厂Java求职面试:Spring Cloud微服务架构设计中的挑战与解决方案
互联网大厂Java求职面试:Spring Cloud微服务架构设计中的挑战与解决方案 面试场景设定 郑薪苦是一位拥有丰富实战经验的Java开发者,他正在参加一场由某知名互联网大厂的技术总监主持的面试。这场面试将围绕Spring Cloud微服务架构展开,涵盖…...

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…...
如何做好一份网络安全技术文档?
在网络安全领域,技术文档是沟通、记录和分享专业知识的桥梁。它不仅帮助团队成员理解系统设计和安全策略,也为未来的维护和更新提供了宝贵的参考。对于编写网络安全技术文档来说,结构清晰、内容准确以及易于理解是至关重要的。本文将介绍如何…...
Android Studio 介绍
如何关闭或彻底删除一个工程 基于Android Studio的android入门——如何关闭或彻底删除一个工程 搜索内容 Android Studio高效指南:快速查找技巧大揭秘 build命令:gradle app:assembleDebug 命令解析 1. 命令结构与作用 核心功能:该命令…...

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

[攻防世界] easyphp writeup
知识点 科学计数法的妙用 9e9 指定结尾MD5值的爆破array_search() 函数用于在数组中搜索某个值,并返回对应的键名。如果找不到该值,则返回 false 默认值匹配:可以利用整数绕过字符串匹配机制stricttrue时,数据类型和值都需要匹配…...
力扣热题100之LRU缓存机制
题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返…...

如何不规范的设置密码
上来就干 当我们使用服务器的时候,有时候需要一些非常简单的密码,来方便使用,但是自己完全可控的环境下,我们希望我们的密码足够的简单,比如,可能它的密码就是123,或者是1? 但是当你…...
数据安全与纵深访问控制:构建数字时代的安全防线
在当今数字经济蓬勃发展的时代,数据已成为与土地、劳动力、资本同等重要的生产要素,被誉为 “21 世纪的石油”。然而,数据在推动社会进步的同时,也面临着前所未有的安全威胁。从 Facebook 超 5.33 亿用户数据泄露,到万…...

分享全国数字人才技能提升师资培训班 第五期邀请函
线下(广州班): 大模型与AIGC多模态技术应用实战 线下(青岛班): Deepseek教学应用与智能体开发实战 线上班(十二大专题): DeepSeek大模型教学应用实战 大模型与AIGC技…...
Linux三剑客之grep命令使用教程
grep命令选项详解:从基础到进阶的实用指南 一、基本选项 1. -i:忽略大小写(Case Insensitive) 含义:搜索时不区分字母大小写。用法示例: 搜索包含"hello"的行,无论大小写:grep -i "hello" file.txt示例数据(file.txt):Hello World hello ther…...
Kotlin 极简小抄 P8(不可空类型、可空类型、注意事项、非空断言 !!)
Kotlin 概述 Kotlin 由 JetBrains 开发,是一种在 JVM(Java 虚拟机)上运行的静态类型编程语言 Kotlin 旨在提高开发者的编码效率和安全性,同时保持与 Java 的高度互操作性 Kotlin 是 Android 应用开发的首选语言,也可…...

【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析
【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析 前言 在人工智能应用开发领域,大语言模型(LLM)的集成能力至关重要。NVIDIA作为全球领先的GPU厂商,其LLM API提供了对Meta Llama-3.…...
git 删除某个远程库的分支
要删除 Git 远程仓库中的特定分支,可以通过以下步骤操作(综合多个文档中的核心方法): 1. 查看远程分支列表 首先确认目标分支是否存在: git branch -r # 显示所有远程分支(格式为 origin/分支名&am…...

Redis实战-缓存篇(万字总结)
前言: 今天结合黑马点评这个项目,讲下有关Redis缓存的一些内容,例如缓存更新策略,缓存穿透,雪崩和击穿等。 今日所学: 什么是缓存缓存更新策略缓存穿透缓存雪崩缓存击穿缓存工具封存 目录 1.什么是缓存…...
QT5.15 MacOS 打包指南
QT5.15 MacOS 打包指南 在 MacOS 上打包 QT5.15 应用程序需要几个步骤,以下是详细说明: 1. 使用 macdeployqt 工具 QT 自带的 macdeployqt 工具可以自动处理大部分依赖关系: macdeployqt YourApp.app -dmg这会: 自动复制所需…...
Nginx location匹配模式详解
以下是对 Nginx location 匹配模式的详细说明及代码示例,包含注释解析: 1. 精确匹配(Exact Match) 语法: location /path { ... } 优先级: 最高,仅当请求路径与 /path 完全一致时触发。 location /login {# 仅匹配…...
Vue 3 路由传参使用指南
目录 一、路由传参概述 二、动态路由参数(params) 2.1 基础用法 2.2 传递参数 2.3 获取参数 2.4 可选参数 2.5 多个参数与正则约束 2.6 多 params 的详细用法 多个可选参数的使用 路由配置 获取可选参数 三、查询参数(Query&#x…...
vscode使用ssh链接服务器
vscode SSH vscode先下载remote ssh的插件,随后在左边的菜单栏里选择远程。 点击新建连接,输入用户名和地址,-p参数指定端口 ssh ubuntu{ip} -p xxx 随后就可以正常连接了,这里使用普通用户的用户名密码,别用root。 配…...
企业批量处理刚需PrintPDF 网络财务办公打印 网页到 Office 一键转 PDF
各位软件小达人,咱今天来唠唠PrintPDF。你知道吗,这玩意儿在好多软件和工具里都有,主要干这俩事儿。 先说说发票打印辅助工具。这东西可牛啦,它能专门快速打印发票、送货单这些票据。还能自己设定纸张大小,像A5、140…...

Python学习笔记--Django 表单处理
注意:本笔记基于python 3.12,django 5版本,不同版本使用上有些许差别。 HTML表单是网站交互性的经典方式。下面介绍如何用Django对用户提交的表单数据进行处理。 HTTP 请求 HTTP协议以"请求-回复"的方式工作。客户发送请求时&am…...
Python - 文件部分
- 第 101 篇 - Date: 2025 - 05 - 26 Author: 郑龙浩/仟墨 Python - 文件部分 学习时间: 2025-05-19 文章目录 Python - 文件部分一 文件与路径1 文本文件2 二进制文件3 编码格式① 常见编码格式② 指定编码格式③ 最佳格式④ 处理编码错误 4 绝对路径5 相对路径基本写法返回…...