Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式
By: Ailson Jack
Date: 2023.11.19
个人博客:http://www.only2fire.com/
本文在我博客的地址是:http://www.only2fire.com/archives/164.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。
微信公众号:
嵌入式那些事
综述
Host和eMMC设备之间的所有通信都由Host控制。总线上的所有通信都是以Host发送一个Command给eMMC开始的,eMMC对于收到的不同Command会做出不同的response,当然了eMMC对于收到的部分Command可以不做response。
eMMC总线协议定义了5种操作工作模式,包括:引导模式(Boot mode),设备识别模式(Device identification mode),数据传输模式(Data transfer mode),中断模式(Interrupt mode),非活动模式(Inactive mode)。各个模式的描述如下:
- 引导模式(Boot mode):当eMMC设备在上电后或者eMMC设备接收到命令参数为0xF0F0F0F0的CMD0命令或者eMMC设备检测到复位信号时,eMMC设备将处于引导模式(Boot mode)。在引导模式(Boot mode)下,eMMC设备会将boot data发送给Host,boot data的内容通常情况下是系统的引导程序。
- 设备识别模式(Device identification mode):在boot mode工作模式完成或者eMMC设备不支持boot mode工作模式时,eMMC设备将处于设备识别模式(Device identification mode)。在设备识别模式下,Host会对eMMC设备做一些初始化的工作,比如设置eMMC设备的工作电压,配置eMMC设备的寻址模式,给eMMC设备分配RCA地址等。eMMC设备将一直处于设备识别模式,直到eMMC设备收到SET_RELATIVE_ADDR(CMD3)命令。
- 数据传输模式(Data transfer mode):一旦eMMC设备的RCA地址被分配之后,eMMC设备就会进入数据传输模式(Data transfer mode),也就是说设备识别模式(Device identification mode)结束之后eMMC设备就直接进入数据传输模式(Data transfer mode)。当Host识别到eMMC总线上的eMMC设备之后,Host也将进入数据传输模式(data transfer mode)。
- 中断模式(Interrupt mode):Host和eMMC设备同时进入或者退出中断模式(Interrupt mode)。在中断模式下,不会有数据传输。在中断模式下,唯一允许的消息是来自Host或者eMMC设备的中断服务请求。
- 非活动模式(Inactive mode):当eMMC设备在操作电压范围或者访问的模式无效时,eMMC设备将进入非活动模式(Inactive mode)。Host使用GO_INACTIVE_STATE(CMD15)命令也可以让eMMC设备进入非活动模式(Inactive mode)。eMMC设备在上电后将进入到pre-idle状态。
下图显示了总线模式,操作模式和设备状态之间的关系。每个eMMC设备状态都与一个总线模式和一个操作模式相关联的。

引导模式(Boot mode)
在引导模式下,Host可以从eMMC设备读取boot data,在Host发送CMD1之前,通过保持CMD线为低或者发送参数为0xFFFFFFFA的CMD0命令。boot data可以从boot area或者user area读取,这取决于寄存器的设置。
引导模式包含3个状态,分别是pre-idle状态,pre-boot状态和boot状态。
引导分区(Boot partition)
eMMC设备存在两个引导分区。引导分区的最小容量为128KB。引导分区的容量计算如下:
Maximum boot partition size = 128KB x BOOT_SIZE_MULT
BOOT_SIZE_MULT是EXT_CSD寄存器的[226]字节的内容。
引导分区和用户区域是分开的,如下图所示:

Host可以通过SWITCH(CMD6)命令设置EXT_CSD寄存器的[179]字节(PARTITION_CONFIG域)来选择引导分区。eMMC设备可以被配置为从用户区域引导,通过设置EXT_CSD寄存器[179]字节的BOOT_PARTITION_ENABLE位域的值为111b。EXT_CSD寄存器[179]字节的内容如下:

引导总线宽度和数据访问配置
Host可以通过配置EXT_CSD寄存器的[177]字节(BOOT_BUS_CONDITIONS域)来设置引导模式下的速率模式和总线宽度。BOOT_BUS_CONDITIONS域的内容如下:


在引导模式下,Host通过对BOOT_BUS_CONDITIONS域的配置,可以设置3种速率模式。在引导模式下,eMMC总线支持的速率模式如下:
| Mode Name | Data Rate | Bus Width | Frequency | Max Data Transfer (implies x8 bus width) |
|---|---|---|---|---|
| Backwards Compatibility with legacy MMC card | Single | 1, 4, 8 | 0-26 MHz | 26 MB/s |
| High Speed SDR | Single | 1, 4, 8 | 0-52 MHz | 52 MB/s |
| High Speed DDR | Dual | 4, 8 | 0-52 MHz | 104 MB/s |
HS200 and HS400 is not supported during BOOT operation.
在引导模式下,Host可以通过对BOOT_BUS_CONDITIONS域的RESET_BOOT_BUS_CONDITIONS位域配置,来选择在退出引导模式后,是复位还是保留当前总线的配置。如果RESET_BOOT_BUS_CONDITIONS的值为0,表示退出引导模式后会复位总线的设置,退出引导模式后总线会被复位为兼容模式(单速率,1bit总线宽度)。如果RESET_BOOT_BUS_CONDITIONS的值为1,表示退出引导模式后会保留引导模式的总线配置。
Host通过配置EXT_CSD寄存器的[177]字节(BOOT_BUS_CONDITIONS域)来设置引导模式的总线配置,Host通过配置EXT_CSD寄存器的[185]字节(HS_TIMING域)和EXT_CSD寄存器的[183]字节(BUS_WIDTH域)来设置其他模式的总线配置。
EXT_CSD寄存器的[177]字节(BOOT_BUS_CONDITIONS域)是非易失性的,掉电之后配置不会丢失。
EXT_CSD寄存器的[185]字节(HS_TIMING域)和EXT_CSD寄存器的[183]字节(BUS_WIDTH域)是易失性的,掉电之后配置会丢失。
引导操作(Boot operation)
在引导模式下,Host有两种方式可以让eMMC设备进入boot state,这两种方式分别定义为Original Boot和Alternative Boot,描述如下:
-
Original Boot:拉低CMD信号并保持至少74个时钟周期。
-
Alternative Boot:拉高CMD信号并保持至少74个时钟周期后,发送参数为0xFFFFFFFA的CMD0命令。
Host可以通过SWITCH(CMD6)命令设置EXT_CSD寄存器的[179]字节(PARTITION_CONFIG域)的BOOT_ACK位段来选择是否eMMC设备发送boot acknowledge给Host。eMMC设备发送boot acknowledge以便于Host能够识别到eMMC设备处于引导模式。
EXT_CSD寄存器[179]字节的内容如下:

对于Original Boot,如果EXT_CSD寄存器[179]字节的BOOT_ACK设置为1,eMMC设备要在Host触发eMMC设备进入引导模式的50ms内,在DAT[0]数据线上发送"010"格式的boot acknowledge给Host。Original Boot的时序图如下所示:

在引导模式下,拉低CMD信号并保持至少74个时钟周期,eMMC设备会进入boot state。在Host将CMD信号线变为高电平并准备发送下一个命令之前,至少需要56个时钟(8 clocks + 48 clocks)周期间隔。
对于Alternative Boot,如果EXT_CSD寄存器[179]字节的BOOT_ACK设置为1,eMMC设备要在接收到参数为0xFFFFFFFA的CMD0命令的50ms内,在DAT[0]数据线上发送"010"格式的boot acknowledge给Host。Alternative Boot的时序图如下所示:

对于Original Boot或者Alternative Boot,在eMMC设备发送boot acknowledge给Host之后,eMMC设备就会发送boot data给Host。
引导模式下的状态图如下图所示:

从引导模式下的状态图可知:
1、在eMMC设备传输boot data给Host的过程中,Host可以打断数据的传输,提前结束boot state,具体方法如下:
-
Original Boot:boot data传输过程中,Host拉高CMD信号;
-
Alternative Boot:boot data传输过程中,Host发送参数为0x00000000的CMD0命令;
2、在eMMC设备上电之后,会进入pre-idle状态:
- 当EXT_CSD寄存器的[179]字节(PARTITION_CONFIG域)的BOOT_PARTITION_ENABLE位段的值为0,表示eMMC设备不使能引导功能,此时eMMC设备会直接从引导模式的pre-idle状态进入到设备识别模式的idle状态。
- 当EXT_CSD寄存器的[179]字节(PARTITION_CONFIG域)的BOOT_PARTITION_ENABLE位段的值选择了引导分区,表示eMMC设备使能引导功能,eMMC设备会从引导模式的pre-idle状态进入到引导模式的pre-boot状态。
欢迎关注博主的公众号(微信搜索公众号:嵌入式那些事),可以扫描下面的公众号二维码:

如果文中有什么问题欢迎指正,毕竟博主的水平有限。
如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^。
排版更好的内容见我博客的地址:http://www.only2fire.com/archives/164.html
注:转载请注明出处,谢谢!^_^
相关文章:
Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式
By: Ailson Jack Date: 2023.11.19 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/archives/164.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。…...
2342. 数位和相等数对的最大和 --力扣 --JAVA
题目 给你一个下标从 0 开始的数组 nums ,数组中的元素都是 正 整数。请你选出两个下标 i 和 j(i ! j),且 nums[i] 的数位和 与 nums[j] 的数位和相等。 请你找出所有满足条件的下标 i 和 j ,找出并返回 nums[i] num…...
linux如何重置root密码
目录 当我们想要重置root管理员密码时,我们可以有两种方法进行: 方法一、init方法 1、重启系统,在下图所示界面按e键 2、随后进入以下界面,、将ro修改为rw,在行末尾添加init/bin/sh。编辑 3、随后按Ctrlx启动到s…...
Java 类之 java.util.Properties
Java 类之 java.util.Properties 文章目录 Java 类之 java.util.Properties一、简介二、主要功能1、存储键值对2、读取文件与属性代码示例运行结果截图 3、设置属性并保存文件代码示例结果截图 4、遍历属性代码示例运行结果 关联博客:《基于 Java 列举和说明常用的外…...
我遇到的bug(活动)
目录 方向一:身为程序员遇到过的奔溃瞬间 方向二:如何解决遇到的奔溃瞬间 方向三:在解决完后获得的收获和体会 方向一:身为程序员遇到过的奔溃瞬间 在一个项目中,我负责实现一个复杂的图像处理算法。经过几天的努力…...
MIB 6.1810实验Xv6 and Unix utilities(3)pingpong
Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题_Isana_Yashiro的博客-CSDN博客 Write a user-level program that uses xv6 system calls to ping-pong a byte between two processes over a pair of pipes, one for each direction. The parent should send a byte to…...
压力测试总共需要几个步骤?思路总结篇
在运维工作中,压力测试是一项很重要的工作。比如在一个网站上线之前,能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验。今天我们就来深入了解下压力测试! 1、首先,什么是压力测试&…...
03_面向对象高级_多态
多态 1. 什么是多态? “多态” 是在 “继承” 的基础上实现的一种现象,具体表现为:对象多态、行为多态。 public class HelloWorld {public static void main(String[] args) {// 1. 对象多态Human h1 new Student();Human h2 new Teach…...
【Kingbase FlySync】界面化管控平台:2.配置数据库同步之KES>KES
【Kingbase FlySync】界面化管控平台:3.配置数据库同步之KES->KES 部署KES数据库到KES数据库同步服务1.登录KFS管理平台2.开始配置数据节点信息(1)配置node1数据节点(2)配置node2数据节点 3.KFS拓扑图配置4.开始部署5.启动同步程序并查验是否运行正常 测试同步1.从node1数据…...
企业计算机服务器中了mallox勒索病毒怎么解决,勒索病毒解密文件恢复
随着科技技术的不断发展,网络技术得到了快速提升,但网络安全威胁也不断增加,近期,云天数据恢复中心陆续接到很多企业的求助信息,企业的计算机服务器遭到了mallox勒索病毒攻击,导致企业的所有业务中断&#…...
Sonar生成PDF错误Can‘t get Compute Engine task status.Retry..... HTTP error: 401
报错及修改: 报错:INFO: Can’t get Compute Engine task status.Retry… org.sonarqube.ws.connectors.ConnectionException: HTTP error: 401, msg: , query: org.apache.commons.httpclient.methods.GetMethod7a021f49 ERROR: Problem generating PD…...
storage和正则表达式
一、Storage 1.认识Storage WebStorage主要提供了一种机制,可以让浏览器提供一种比cookie更直观的key、value存储方式: localStorage:本地存储,提供的是一种永久性的存储方法,在关闭掉网页重新打开时,存…...
【数据结构】图的广度优先遍历
一.广度优先遍历的基本思想 (1)访问顶点v; (2)依次访问v的各个未被访问的邻接点v1,v2,v3……,vk; (3)分别从v1,v2,v3……...
AM@函数展开成幂级数@间接法@常用麦克劳林幂级数展开公式
文章目录 间接法推导幂级数展开常用麦克劳林幂级数展开公式应用例例例 间接法推导幂级数展开 已知函数的幂级数展开公式间接推导其他函数幂级数 使用原始的推导公式推导函数的幂级数展开是繁琐不便的,需要分别计算各项系数 a n f ( n ) ( 0 ) n ! a_{n}\frac{f^{(n)}(0)}{n!}…...
LeetCode994.腐烂的橘子
看完题我觉得这不是和上一道岛屿的题一样简单嘛,然后写了将近2个小时才写出来,我的思路就是,用check()先对grid检查一下,是否有以下情况: (如果有1的周围都是空,则这个位置用不腐烂,…...
【开源】基于Vue和SpringBoot的康复中心管理系统
项目编号: S 056 ,文末获取源码。 \color{red}{项目编号:S056,文末获取源码。} 项目编号:S056,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…...
【音视频基础】AVI文件格式
AVI文件采用的是RIFF文件结构方式。波形音频wave,MIDI和数字视频AVI都采用这种格式存储。 AVI文件的整体结构如下图所示 构造RIFF文件的基本单元叫做数据块(Chunk),每个数据块包含3个部分 4字节的数据块标记(或者叫…...
图书馆整理I(从尾到头打印列表),剑指offer,力扣
目录 题目地址: 我们直接看题解吧: 解题方法: 难度分析: 审题目事例提示: 解题思路(辅助栈): 代码(递归): 代码(列表插入): 相似题目对…...
C++编写的多线程自动爬虫程序
目录 引言 一、程序的设计 二、程序的实现 三、程序的测试 四、优化与改进 五、代码示例 总结 引言 随着互联网的快速发展,网络爬虫程序已经成为数据采集、信息处理的重要工具。C作为一种高效的编程语言,具有高效的并发处理能力和丰富的网络编程…...
SMB信息泄露的利用
一、背景 今天分享SMB信息泄露,SMB(Server Message Block)网络通信协议,早些时候被用于Web链接和客户端与服务器之间的信息通信,现在大部分Web页面使用HTTP协议,在web领域应用较少。另一方面SMB协议还是被…...
DownKyi架构深度解析:高效B站视频下载工具的技术实现与实战指南
DownKyi架构深度解析:高效B站视频下载工具的技术实现与实战指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印…...
京东云GPU服务器省钱攻略:如何根据业务需求灵活选择计费模式和虚拟化方案
京东云GPU服务器成本优化实战指南:精准匹配业务需求的选型策略 在AI与高性能计算领域,GPU服务器已成为企业技术基础设施的核心组件。然而,面对复杂的计费模式、多样的硬件配置以及差异化的虚拟化方案,许多技术决策者常常陷入"…...
KKManager终极指南:三步轻松管理你的游戏Mod和插件
KKManager终极指南:三步轻松管理你的游戏Mod和插件 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager KKManager是一款专为Illusion系列游戏设计的M…...
零基础玩转Llama-3.2-3B:Ollama部署+实战问答全流程
零基础玩转Llama-3.2-3B:Ollama部署实战问答全流程 1. 模型介绍与准备 1.1 Llama-3.2-3B模型概述 Llama-3.2-3B是Meta公司开发的多语言大型语言模型(LLM),属于Llama 3.2系列中的3B参数版本。这个纯文本模型经过指令微调优化&am…...
Phi-3 Forest Laboratory创意图像提示词生成效果:将抽象概念转化为视觉描述
Phi-3 Forest Laboratory创意图像提示词生成效果:将抽象概念转化为视觉描述 你有没有过这样的经历?脑子里冒出一个特别酷的画面,比如“赛博朋克风格的孤独”,或者“初夏清晨的宁静”,感觉特别有味道,但就是…...
6个高效突破内容访问限制的开源工具使用指南
6个高效突破内容访问限制的开源工具使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,优质内容常常被付费墙限制访问。本文将系统介绍基于开源…...
StarWind V2V Image Converter实战:轻松将IMG镜像转换为VMware VMDK格式
1. 为什么需要IMG转VMDK? 虚拟机镜像格式转换是IT运维中的常见需求。我遇到过不少这样的情况:手头有一个现成的IMG格式镜像文件,但当前虚拟化环境用的是VMware。这时候就需要把IMG转换成VMware原生支持的VMDK格式。 IMG是一种通用的磁盘镜像格…...
探索粗糙表面波动模型生成:打造不规则之美
粗糙表面,波动模型生成,用于在物体表面生成不规则的粗糙表面,或面表面的波动边界等,可自定义波动分布与赋值。在图形学和模拟领域,生成物体表面的粗糙质感或是波动边界常常是一个有趣又具有挑战性的任务。今天咱们就聊…...
百度网盘提速全攻略:从限速对抗到效能优化的实战指南
百度网盘提速全攻略:从限速对抗到效能优化的实战指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 诊断限速瓶颈:从协议层破解速度封印 原理图解&am…...
使用现代 Java 技术栈构建企业级 AI 应用
使用现代 Java 技术栈构建企业级 AI 应用 引言 随着人工智能技术的快速发展,企业级 AI 应用的需求也迅速增长。Java 作为一门成熟的企业级编程语言,其生态系统在 AI 应用开发中扮演着重要角色。本文将探讨如何利用 Java 技术栈构建生产级 AI 应用&#x…...
