emmc 5.1 spec 学习-----2

寻址
e•MMC 规范的历史实现(到v4.1版本)使用 32 位字段实现字节寻址。 这种寻址机制允许 e•MMC 密度达并包括 2 GB。
为了支持更大的密度,更新了寻址机制以支持扇区地址(512 B 扇区)。 扇区地址应用于容量大于 2 GB 的所有设备。
要确定寻址模式,主机应读取 OCR 寄存器中的位 [30:29]。

5.3 device概述
host有三种方式复位device:上下电、reset信号、发专用command。
5.3.1 总线协议
上电复位之后,host通过基于消息的总线协议初始化设备,消息是由3种令牌的其中之一组成,3种令牌分别为command、response、data。
设备寻址是使用在初始化阶段由总线控制器分配给连接设备的会话地址来实现的。设备由其 CID 号标识。此方法要求设备具有唯一的 CID 号。为确保 CID 的唯一性,CID 寄存器包含由 JEDEC/MMCA 定义的 24 位(MID 和 OID 字段,参见 7.2)(按前文描述CID有16byte,所以还有些什么?)。每个设备制造商都需要申请一个唯一的 MID(以及可选的 OID)编号。
e•MMC 命令是面向块的命令:这些命令发送一个数据块,后面是 CRC 位(每一个块都带CRC位,CRC是7bit checksum加1bit结束位“1”)。读取和写入操作都允许单块或多块传输。当停止命令跟随在 CMD 线上时,与顺序读取类似,多块传输终止。
command令牌为48bit,一个起始位“0”+表示host command的位“1”+38bit的content+7bit CRC+结束位“1”。
response令牌根据其内容有5种编码方案,其中R2为136bit,其余R1 R3 R4 R5是48bit。一个起始位“0”+表示card response的位“0”+38或134bit content+7bit CRC+结束位“1”。
由于顺序数据传输没有预定义的结束,因此在这种情况下不包括 CRC 保护。 块数据的 CRC 保护算法是一个 16 位 CCITT 多项式。 所有使用的 CRC 类型都在 0 中描述。
数据传输是先传LSByte,DAT0里传lsbit,DAT7传msbit。
多bit位宽时,DATA交织,但CRC不交织。
双边沿数据传输时,开始位和结束位不采用双边沿,仅在上升沿采样或输出。
写数据是双边沿采样,奇数沿采奇数byte,偶数沿采偶数byte。
HS400的读数据时strobe高电平时输出奇数byte,低电平时输出偶数byte。
CRC status是一种tocken,不是CRC?那它是在什么场景下传输?

5.3.2 速率模式
兼容历史MMC卡的模式--单边沿--1.2/1.8/3V--1,4,8--0~26M--26MB
高速SDR--单边沿--1.2/1.8/3V--1,4,8--0~52M--52MB
高速DDR--双边沿--1.2/1.8/3V--4,8--0~52M--104MB
HS200--单边沿--1.2/1.8V--4,8--0~200M--200MB
HS400--双边沿--1.2/1.8V--8--0~200M--400MB

5.3.3~5.3.4 HS200
支持4档驱动力强度
对于读操作,时钟和数据方向是相反的; Host 接收到的读取数据会受到往返延迟、输出延迟和Host 和 Device 的延迟的影响。 对于读取,主机需要有一个可调节的采样点才能可靠地接收传入的数据。
主机可以使用可调采样来确定正确的采样点。 主机可以使用存储在设备中的预定义调整块来帮助找到最佳数据采样点。 Host 可以使用 CMD21 调整命令来读取调整块。

5.3.5 HS400
支持5档驱动力强度

6 emmc功能描述
6.1 emmc概述
emmc系统定义了五种操作模式:
boot模式
接收到参数为 0xF0F0F0F0 的 CMD0 或硬件复位信号置位,device重启,然后便会进入boot模式。
设备识别模式
引导操作模式完成后或主机和/或设备不支持引导操作模式时,设备将处于设备识别模式。 设备将处于此模式,直到收到 SET_RCA 命令 (CMD3)。
中断模式
主机和设备同时进入和退出中断模式。 在中断模式下没有数据传输。 唯一允许的消息是来自设备或主机的中断服务请求。
数据传输模式
分配 RCA 后,设备将进入数据传输模式。 主机识别总线上的设备后进入数据传输模式。
非活动模式
如果器件工作电压范围或访问模式无效,器件将进入非活动模式。 设备还可以使用 GO_INACTIVE_STATE 命令 (CMD15) 进入非活动模式。

device状态和操作模式是两个不同的概念,每一种操作模式都对应者多种可能的device状态,同时也对应着CMD信号线的状态(推挽或开漏)。

6.2 分区管理
6.2.1 概述
内存块区域可以分为以下几类:
•两个引导区分区,大小是128 KB 的倍数,可以从e•MMC 执行引导。
•通过受信任机制访问的一个RPMB 分区,其大小定义为128 KB 的倍数。
•四个通用区域分区用于存储敏感数据或用于其他主机使用模型,其大小是写保护组的倍数。
引导和 RPMB 区域分区的大小和属性由内存制造商定义(只读),而通用区域分区的大小和属性只能由主机在设备生命周期内编程一次(一次性可编程) 。
6.2.2 command限制
每类分区都有command限制,即有其不支持或者非法的command类型。
6.2.3 扩展分区属性
通用分区可以设置扩展属性,有三种类型:
•默认:不设置扩展属性
•系统代码:很少更新并包含重要系统文件的分区(例如,包含主机操作系统的可执行文件)
•非持久性:用于临时信息的分区(例如,交换文件以扩展主机虚拟内存空间)
单个分区不能同时为其设置增强属性和扩展属性。
 

6.3 boot操作模式
在引导操作模式下,主设备(e•MMC 主机)可以通过在发出 CMD1 之前保持 CMD 线为低电平或发送带有参数(argument) + 0xFFFFFFFA 的 CMD0 来从从设备(e•MMC 设备)读取引导数据。 根据寄存器设置,可以从引导区或用户区读取数据。
6.3.1 设备复位到pre-idle态
设备可以通过以下四种机制中的任何一种进入 Pre-idle 状态:
•主机上电后,设备(即使它一直处于Inactive 状态)处于Pre-idle 状态。
•GO_PRE_IDLE_STATE 命令(CMD0带参数0xF0F0F0F0)是软件复位命令,将器件置于Pre-idle 状态。
•硬件复位信号。
•当设备在睡眠状态下接收到 GO_PRE_IDLE_STATE 命令或硬件复位信号assert时,设备也会进入 Pre-idle 状态。
复位期间,设备的输出总线驱动处于高阻抗状态,设备使用默认的相对设备地址(0x0001)和默认的寄存器配置进行初始化。
6.3.2 boot分区
有两个boot分区,分区大小可以在扩展CSD里设置。boot相关配置如从哪个分区引导,是否使能应答等也是在扩展CSD里设置。
6.3.3 boot操作
如果 CMD 线在上电或复位操作后保持低电平大于等于 74 个时钟周期(通过带有 0xF0F0F0F0 参数的 CMD0 或 e•MMC 的硬件复位断言,如果它在扩展 CSD 寄存器字节 [162 ],位 [1:0]被使能) 在发出第一个命令之前,从设备识别出正在启动引导模式并开始在内部准备引导数据。
可以使用 EXT_CSD 字节 [179]、位 [5:3] 预先选择从主设备读取引导数据的分区。 主机在启动操作期间可以读取的数据大小可以计算为 128KB × BOOT_SIZE_MULT (EXT_CSD byte [226])。 在 CMD 线变为低电平后 1 秒内,从机开始通过 DAT 线向主机发送第一个引导数据。 主机必须保持 CMD 线为低电平才能读取所有启动数据。 主机必须使用推挽模式,直到引导操作终止。
Host可以通过设置EXT_CSD 寄存器字节 [177 ] 位 [4:3]来选择使用哪种速率模式。 EXT_CSD 寄存器字节 [228],位 2 告诉主机设备是否支持boot期间的高速时序。
通过在 EXT_CSD 寄存器字节 [177]、位 [4:3] 中设置“10”,主机还可以选择在引导期间使用具有表 208 所示接口的双数据速率模式。 EXT_CSD 寄存器字节 [228],位 1 告诉主机设备是否支持boot期间的双数据速率模式。
引导操作期间不支持 HS200 和 HS400 模式。
在单数据速率模式下,数据由设备输出并由主机在时钟的上升沿采样,每条数据线有一个 CRC。
在双数据速率模式下,数据在时钟的上升沿和时钟的下降沿同时输出,每条数据线附加两个 CRC。在此模式下,块长度始终为 512 字节,4 位或 8 位位宽时,字节交织。奇数字节 (1,3,5, ... ,511) 应由主机在时钟的上升沿采样,偶数字节 (2,4,6, ... ,512) 应由主机在时钟的下降沿采样。该设备将在每条有效数据线上附加两个 CRC16,一个对应于主机在时钟上升沿采样的 256 个奇数字节的位,第二个对应于块的 256 个偶数字节的剩余位由主机在时钟的下降沿采样。
DAT 线上的所有时序都应遵循 DDR 时序模式。 起始位、结束位和boot应答位仅在时钟的上升沿有效。 不保证下降沿的值。
主机可以拉高CMD 线来终止boot模式。 如果主机在数据传输过程中将 CMD 线拉高,从机必须在NST时钟周期(一个数据周期和结束位周期)内终止数据传输或应答pattern。 如果主机在连续块之间终止引导模式,从机必须在NST时钟周期内释放数据线。
概括下,在寄存器配好的情况下,整个时序为CMD拉低最多50ms后,device在DAT0上回应答pattern“010”(必须在EXT_CSD 寄存器中使能boot应答),拉低最多1s后,device开始传boot数据。然后CMD拉高至少56个时钟后,主机开始发CMD1启动正常的 MMC 初始化序列。
如果 CMD 线在上电后在发出 CMD1 之前保持低电平少于 74 个时钟周期,或者主机在启动引导模式之前发送除 CMD0带参数0xFFFFFFFA 以外的任何正常的 e•MMC 命令,从机不应响应(与下段的情况矛盾,是不是应该描述为大部分时候不应相应),直到下一次电源循环或硬件复位应被锁定在引导模式之外,并应进入Idle状态。
当 BOOT_PARTITION_ENABLE 位被设置并且主机发送 CMD1 (SEND_OP_COND) 时,从机必须进入设备识别模式并响应命令。 如果从机不支持引导操作模式,根据 v4.2 或更早版本,或者 BOOT_PARTITION_ENABLE 位被清除,从机在上电后自动进入空闲状态。
 

6.3.4 替代boot操作
在v4.4之后,这个模式device必须被支持,相应的寄存器配置位强制1。
跟常规boot的操作基本一致,差别为:
1、起始条件不是仅在至少74个时钟周期后拉低CMD,而是改为在上电后在至少74个时钟周期后发CMD0带参数0xFFFFFFFA。
2、结束条件不是拉高CMD,而是发CMD0/Reset。
6.3.5 Access to boot partition
device进入传输状态后,host可以访问boot分区,也可编程引导分区。
6.3.6 Boot bus width and data access configuration
在引导操作期间,总线宽度可以通过扩展 CSD 寄存器字节 [177] 位 [0:1] 中的非易失性配置位进行配置。 寄存器字节 [177] 中的位 2 确定从机在启动操作后是否返回到 x1 总线宽度和单数据速率模式,或者它是否在正常操作期间保持配置的启动总线宽度。 寄存器字节 [177] 中的位 [4:3] 确定在引导操作期间,数据线是否配置为使用单数据速率或双数据速率模式。 如果不执行引导操作,则从机将以正常 x1 总线宽度、单数据速率操作进行初始化,而与寄存器设置无关。
6.4 Device identification mode
在设备识别模式下,主机复位设备,验证工作电压范围和访问模式,识别设备并将相对设备地址 (Relative device Address ,RCA) 分配给总线上的设备。
设备识别模式下的所有数据通信仅使用CMD线。
6.4.1 Device reset 
收到命令 GO_IDLE_STATE(CMD0 参数为 0x00000000)后,设备进入空闲状态。 以下是设备进入空闲状态的时机。
•完成boot操作后,
•在pre-boot状态下,CMD 线低电平少于 74 个时钟后,
•如果设备未启用boot,则在上电后。
在这种状态下,设备的输出总线驱动器处于高阻抗状态,设备使用默认的相对设备地址 (0x0001) 和默认的驱动器级寄存器设置进行初始化。
主机以识别时钟速率fOD为总线提供时钟。参数为 0x00000000 的 CMD0 在所有状态下都有效,但Inactive状态除外(该状态下,设备不接受参数为 0x00000000 的CMD0)。
出于向后兼容的原因,如果设备在除非活动状态外的任何状态下接收到参数不是 0xFFFFFFFA 或 0xF0F0F0F0 (这是软件复位命令,跟设备复位命令不同?)的 CMD0,设备应将其视为设备复位命令(Device reset command)并进入空闲状态。 参数为 0xFFFFFFFA 的 CMD0 是 Pre-boot 状态下的boot启动命令,但如果主机在除 Inactive 状态和 Pre-boot 状态之外的任何状态下发出该命令,设备应将其视为休息命令并进入空闲状态。
6.4.2 Access mode validation (higher than 2GB of densities) 
对于 e•MMC 器件,CMD1 中的电压范围不再有效。 无论主机指示的电压范围如何,如果设备忙,e•MMC 设备都应以 0x00FF 8080(容量小于或等于 2GB)或 0x40FF 8080(容量大于 2GB)的固定模式响应,并且它们 不得进入非活动状态。
SEND_OP_COND (CMD1) 命令和 OCR 寄存器包含两个位,用于指示支持的内存访问模式。 CMD1 命令参数中专门设置的位向内存指示主机能够处理扇区类型的寻址。 OCR 寄存器中相应设置的位指示设备需要使用扇区类型的寻址。
OCR 寄存器的这些特定位仅在设备对 CMD1的最后一次response中(设备进入ready状态)有效。
6.4.3 From busy to ready 
设备可以使用 CMD1 响应中的忙位告诉主机它仍在执行其上电/复位过程(例如,从内存字段下载寄存器信息)并且尚未准备好进行通信。 在这种情况下,主机必须重复 CMD1,直到忙位被清除。
在初始化过程中,主机不允许更改工作电压范围或访问模式设置。 设备应忽略此类更改。 如果操作条件发生真正的变化,主机必须复位设备(使用参数为 0x00000000 的 CMD0)并重新启动初始化程序。 然而,为了访问已经处于非活动状态的设备,必须通过关闭电源然后重新打开来完成硬重置。
命令 GO_INACTIVE_STATE (CMD15) 可用于将已寻址设备配置到非活动状态。 当主机明确想要停用设备时使用此命令。
命令 CMD1 应被本标准定义的所有设备执行。

6.4 设备识别模式
在设备识别模式下,主机复位设备,验证工作电压范围和访问模式,识别设备并将相对设备地址 (Relative device Address ,RCA) 分配给总线上的设备。
设备识别模式下的所有数据通信仅使用CMD线。
收到命令 GO_IDLE_STATE(CMD0 参数为 0x00000000)后,设备进入空闲状态。 以下是设备进入空闲状态的时机:
•完成boot操作后,
•在pre-boot状态下,CMD 线低电平少于 74 个时钟后,
•如果设备未启用boot,则在上电后。
在这种状态下,设备的输出总线驱动器处于高阻抗状态,设备使用默认的相对设备地址 (0x0001) 和默认的驱动器级寄存器设置进行初始化。
主机以识别时钟速率fOD为总线提供时钟
主机发CMD1,如果设备忙,e•MMC 设备应以固定pattern响应:0x00FF 8080 或 0x40FF 8080,0x80FF8080(容量小于或等于 2GB)或 0xC0FF8080(容量大于 2GB),CMD1一直发到busy清除为止。
然后主机发出广播命令 ALL_SEND_CID (CMD2),向设备询问其唯一的设备标识 (CID) 编号。
设备(即处于ready状态的设备)同时开始串行发送它们的 CID 号,设备然后进入识别状态。
此后,主机发出 CMD3 (SET_RELATIVE_ADDR) 为该设备分配一个相对设备地址 (RCA),该地址比 CID 短,并且将用于在未来的数据传输模式下对设备进行寻址(通常时钟速率高于fOD)。一旦接收到 RCA,设备状态将变为Stand-by状态。此外,该器件将其输出驱动器从开漏切换到推挽。
识别过程完成的超时条件是在发送 CMD2 后超过NID个时钟周期没有起始位。

6.5 中断模式
e•MMC 系统上的中断模式使host能够同时向slave(device)授予传输许可。 这种模式减少了主机的轮询负载,从而降低了系统的功耗,同时保持了主机对设备服务请求的充分响应。 主机和设备都可以选择支持 e•MMC 中断模式。
•中断模式期间的系统行为在图 26 中的状态图中进行了描述。
•主机在发出GO_IRQ_STATE (CMD40) 命令之前必须确保设备处于Stand-by态。 在等待来自设备的中断响应时,主机必须保持时钟信号有效。 时钟频率可以根据所需的响应时间而改变。
•主机使用GO_IRQ_STATE (CMD40) 命令将设备设置为中断模式。
•处于Wait-IRQ-State 的设备正在等待内部中断触发事件。 一旦事件发生,设备开始向主机发送响应。 此响应以开漏模式发送。
•在等待内部中断事件的同时,设备也在等待CMD线上的起始位。 检测到起始位后,设备将中止中断模式并切换到stand-by态。
•无论在 CMD40 响应期间赢得或失去总线控制权,设备都会切换到stand-by态(与 CMD2 相对)。
•主机收到中断响应后,主机返回标准数据通信程序。
•如果主机想要在收到中断响应之前终止中断模式,它可以使用保留的RCA地址0x0000自行产生CMD40响应(Device bit = 0); 这将使设备从 Wait-IRQ-State 回到 Stand-by-State。 现在主机可以恢复标准的通信程序。
 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
eMMC 5.1规范是嵌入式多媒体卡(eMMC)的最新版本,旨在为嵌入式设备提供高速、可靠的闪存存储解决方案。以下是关于eMMC 5.1规范的一些要点: 1. 性能提升:eMMC 5.1规范在前一版本的基础上提供了性能的显著提升。它支持更高的数据传输速度,最高可达到400 MB/s的顺序读取速度和200 MB/s的顺序写入速度,相对于eMMC 5.0而言,读取速度提高了3倍,写入速度提高了2倍。这使得在嵌入式设备中进行大容量数据传输的速度更快。 2. 功耗优化:eMMC 5.1规范还引入了功耗优化的特性,这对于嵌入式设备的电池寿命非常重要。通过在操作过程中减少功耗,eMMC 5.1可以帮助延长设备的续航时间。 3. 引入SLC Mode:eMMC 5.1规范将SLC Mode引入到了嵌入式闪存中。SLC(Single-Level Cell)存储方式相较于MLC(Multi-Level Cell)存储方式具有更高的速度和更低的功耗。此外,SLC Mode还提供了更高的数据保持时间和更低的闪存擦除次数,从而提高了存储器的耐久性。 4. 强化可靠性和安全性:eMMC 5.1规范还增加了一些功能来增强存储器的可靠性和安全性。例如,它提供了一种新的错误修复机制,能够自动检测和纠正闪存中的错误。此外,它还增加了数据完整性检查和加密功能,以保护数据免受未经授权的访问和篡改。 综上所述,eMMC 5.1规范在性能、功耗、存储耐久性和安全性方面都有所提升。它为嵌入式设备提供了更快速、更可靠的闪存存储解决方案,并满足了现代嵌入式系统对高性能存储器的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值