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 NameData RateBus WidthFrequencyMax Data Transfer
(implies x8 bus width)
Backwards
Compatibility with
legacy MMC card
Single1, 4, 80-26 MHz26 MB/s
High Speed SDRSingle1, 4, 80-52 MHz52 MB/s
High Speed DDRDual4, 80-52 MHz104 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

注:转载请注明出处,谢谢!^_^

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用websocket+node.js实现pc后台与小程序端实时通信

如何使用websocketnode.js实现pc后台与小程序端实时通信 一、使用node.js创建一个服务器二、pc后台连接ws三、小程序端连接ws四、实现效果 实现功能:实现pc后台与小程序端互发通信能够实时检测到 一、使用node.js创建一个服务器 1.安装ws依赖 npm i ws2.创建index.js const…

知道数字孪生发展的四个阶段,你就能明白数字孪生的真正价值了

数字孪生的发展经历了四个阶段。以下是每个阶段的详细描述: 1、数字孪生萌芽期:这个阶段以模型仿真驱动为特征。20世纪80年代以来,CAD、CAE、CAM等计算机建模、模拟仿真技术开始迅猛发展,并在制造业领域广泛应用。该阶段主要通过…

【C语言期末不挂科——指针初阶篇】

C语言指针初阶 文章目录 C语言指针初阶**什么是指针?**   **1)初识指针**  **2)地址的大小**  **3)指针变量** **指针的类型**   **1)指针对整数加减运算**  **2)指针的解引用** **野指针**  **1&#xff…

【LLM】基于LLM的agent应用(上)

note 在未来,Agent 还会具备更多的可扩展的空间。 就 Observation 而言,Agent 可以从通过文本输入来观察来理解世界到听觉和视觉的集成;就 Action 而言,Agent 在具身智能的应用场景下,对各种器械进行驱动和操作。 Age…

Java Swing垃圾分类器

内容要求 1) 本次程序设计是专门针对 Java 课程的,要求使用 Java 语言进行具有一定代码量的程序开发。程序的设计要结合一定的算法,在进行代码编写前要能够设计好自己的算法。 本次程序设计涉及到 Java 的基本语法,即课堂上所介绍的变量、条件语句、循…

如何从Android恢复出厂设置后的手机恢复数据

如果您已使用出厂设置删除了Android设备上的所有数据,或者有一段时间未使用,则需要恢复出厂设置以从Android设备中检索数据。 奇客数据恢复安卓版是一个有用的工具,可以在重置后检索Android数据。 将Android设备恢复出厂设置 如果您需要将A…

Java集合大总结——Collection接口

集合概述 Java 集合可分为 Collection 和 Map 两大体系: Collection接口:用于存储一个一个的数据。 List子接口:用来存储有序的、可以重复的数据(主要用来替换数组,也被称作"动态"数组) 实现类…

麻将馆电脑计费系统,棋牌室怎么用电脑控制灯计时,佳易王计时计费系统软件下载

麻将馆电脑计费系统,棋牌室怎么用电脑控制灯计时,佳易王计时计费系统软件下 棋牌室电脑灯控系统,需要安装一个灯控器,软件发出开灯和关灯的指令,相应的灯就打开或关闭。在点击开始计时的时候,开灯&#xff…

fusion 360制作机械臂

参考教程:Industrial Robot ( PART - 5) - FUSION 360 TUTORIAL_哔哩哔哩_bilibili

Synchronized 关键字的底层原理

目录 synchronized 同步语句块的情况 synchronized 修饰方法的的情况 synchronized 关键字底层原理属于JVM 层面 synchronized 同步语句块的情况 public class SynchronizedDemo {public void method() {synchronized (this) {System.out.println("synchronized 代码块…

Alien Skin Exposure2024免费版图片颜色滤镜插件

Alien Skin Exposure一款非常专业的图片后期处理软件,内含500多种照片滤镜。是一款图片后期处理功能非常强大的软件。这款软件可以对图片的后期效果做很好的处理。 打开Alien Skin Exposure软件,会显示下面这个界面,如图1. ExposureX8win-安…

原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列7(承接系列6)

文章目录 前言一、原始代码---保存原型点,加载原型点二、代码逐行解释 前言 此部分为原型网络的两个函数,分别为保存原型点函数和加载原型点函数,与之前的系列相承接。 一、原始代码—保存原型点,加载原型点 def save_center(self,path):datas []for …

黔院长 | 为什么要调经络?原来通经络对人体健康如此重要!

人体的组成较为复杂,在外有皮肤、毛发;在内有经络、五脏;其他还有我们看不到的精气、津液等等,也因此人体会生各种各样的疾病。 为什么说经络畅通对人体健康如此重要?身体内外始终是一个统一的整体,内外之间…

2023全球边缘计算大会深圳站-核心PPT资料下载

一、峰会简介 边缘计算,是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安…

原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列8

文章目录 前言一、原始代码二、对每一行代码的解释:总结 前言 这是该系列原型网络的最后一段代码及其详细解释,感谢各位的阅读! 一、原始代码 if __name__ __main__:##载入数据labels_trainData, labels_testData load_data() # labels_…

【AI】行业消息精选和分析(23-11-19)

行业动态 1、对标GPTs,微软连夜发布100多项更新!微软CEO:Copilot时代来了 2、英伟达联手微软推出AI代工服务 3、全新雅虎搜索将于 2024 年上线,未来还会推出更多 AI 和高级功能 4、Instagram 推出定制 AI 贴纸和滤镜功能&#xff…

适用于全部安卓手机的 5 大免费 Android 数据恢复

您是否面临这样一种情况,即在Android设备上丢失了一些重要文件,但不知道应该选择哪种Android数据恢复来取回它们? 如果您以前从未备份过Android数据,则很难解决问题。 本文将介绍排名前5位的免费Android数据恢复软件。 您可以获…

【教3妹学编程-算法题】三个无重叠子数组的最大和

2哥 : 3妹,咋啦?一副苦大仇深的样子? 3妹:不开心呀不开心,羽生结弦宣布离婚。 2哥 : 羽生什么? 3妹:羽生结弦! 2哥 : 什么结弦? 3妹:羽生结弦!&am…

理论与实践相结合之Cisco Packet Tracer网络模拟器安装教程

简介 Packet Tracer是由思科设计的跨平台可视化仿真工具,它允许用户创建网络拓扑以模仿计算机网络和使用命令行界面来模拟配置思科路由器和交换机。Packet Tracer的用户界面为拖放式,允许用户根据自己的需要添加和删除模拟的网络设备。 Packet Tracer很…