嵌入式多媒体卡(eMMC)电气标准简介
1.eMMC介绍
eMMC(嵌入式多媒体卡,embedded MultiMedia Card)是一种基于NAND闪存的存储技术,广泛应用于智能手机、平板电脑、数码相机、汽车娱乐系统等消费电子产品和嵌入式设备中。与SD卡类似,eMMC通过标准接口与主机连接,但通常是直接焊接在设备主板上,作为内部存储解决方案。它提供较低至中等容量的存储,通常从4GB到128GB不等,能够满足大多数中低端设备的存储需求。eMMC的传输速度相对较快,但其性能不如UFS(通用闪存存储,Universal Flash Storage)等更先进的存储技术,因此在高端设备中逐渐被更高性能的解决方案所替代。尽管如此,eMMC因其制造成本低、技术成熟、接口标准化,依然在一些低端和中端设备中得到广泛应用。它的优势在于较低的成本、较好的兼容性以及适中的性能,尤其适合对存储要求不高、对成本敏感的产品。
2.eMMC设备和系统
2.1eMMC系统概况
eMMC主要包括NAND Flash芯片(Flash内存阵列)、Device Controller芯片(也叫Flash控制器、eMMC控制器)两部分。eMMC规范主要覆盖接口和Flash控制器的行为,对于Flash内存阵列并未做要求,eMMC系统结构如图1所示。

图1 eMMC 系统概况
2.2 存储器寻址
eMMC规范的早期实现(至v4.1的版本)是采用32-bit域实现字节寻址(即存储单元按字节(8位)进行编号。在这种模式下,存储设备的每一个字节都有一个独立的地址,系统通过字节地址来直接访问存储器中的数据)。的。这种寻址 机制允许最大2 GB的eMMC容量。 为了支持更大的容量,寻址机制升级到支持扇区寻址(每个扇区都有一个唯一的地址,系统通过扇区地址来访问数据,最高支持4k扇区)。对所有容量大于 2 GB 的设备应使用扇区地址。要确定所用的寻址模式,主机应读取OCR寄存器的bit [30:29]。
2.3 eMMC 设备概况
eMMC设备通过可配置的数据总线信号数传输数据。通讯信号有:
CLK:此信号的每一周期控制命令线上的1 bit传输,以及所有数据线上1 bit(1x) 或2 bit(2x)传输。频率可从0至最高时钟频率之间改变。
CMD:此信号是双向命令通道,用于设备初始化和命令传输。CMD信号有两种工 作模式:用于初始化模式开漏模式和快速命令传输推拉模式。命令从eMMC主机 控制器发往设备,应答从设备发往主机。
DAT0-DAT7:这些是双向的数据通道。DAT信号以推拉模式工作。一个时间内只有设备或主机驱动这些信号。缺省的,在上电或复位后,只有DAT0用于数据传 输。可以通过eMMC主机控制器配置更宽的数据总线来进行数据传输,采用DAT0 - DAT3 或DAT0 - DAT7。eMMC设备在数据线DAT1 - DAT7上内含上拉。 在 进入4-bit 模式后,设备立即断开DAT1、DAT2和DAT3线的内部上拉。相应地, 在进入8-bit模式后,设备立即断开DAT1 – DAT7线的内部上拉。eMMC接口信号在表中说明。
表1 eMMC 接口

2.4 总线速度模式
eMMC 定义了几种总线速度模式。表2汇总了各种模式。
表2 eMMC总线速度模式

3.eMMC 功能说明
3.1 eMMC操作模式
主机和设备之间的所有通讯都由主机控制。主机发送命令,引起设备的应答。 在eMMC系统(主机和设备)定义了5种操作模式:
引导模式: 上电周期后,接受参数为0xF0F0F0F0的CMD0或硬件复位信号有效,设备处于引导 模式。
设备识别模式 在引导模式结束或主机、设备不支持引导操作模式时,设备处于设备识别模式。设备将 在此模式下,直至接收到SET_RCA命令(CMD3)。
中断模式 主机与设备同时进入中断模式。在中断模式下没有数据传输。唯一允许的消息是来自主 机或设备的中断服务请求。
数据传输模式 一旦分配了RCA,设备就进入数据传输模式。主机在识别总线上的设备后即进入数据 传输模式。
非活动模式 如果设备工作电压范围或访问模式无效,则设备进入非活动模式。设备也可以通过使用 GO_INACTIVE_STATE命令(CMD15)进入非活动模式。上电周期后,设备将复位到Pre- idle 模式。
下表显示了总线模式、工作模式和设备状态的关系。eMMC状态图中的每一种状态都关联到一种总线模式和一种工作模式。
表3总线模式概况

3.2 引导工作模式
在引导工作模式下,主机可以通过保持CMD线低电平或在发送CMD1 之前发送有0xFFFFFFFA 参数的 CMD0,从从机(eMMC设备)读取数据。数据可以从引导区或用户区读取,取决于寄存器设置。
设备可以通过下列4个机制之一进入Pre-idle状态:
a)被主机上电后,设备(即使是处于Inactive状态)处于eMMC模式,并进入Pre-idle 状态。
b)GO_PRE_IDLE_STATE 命令(参数为0xF0F0F0F0的CMD0)是软件复位命令,并 将设备置入Pre-idle状态。
c)硬件复位可被主机用于复位设备,将设备送入Pre-idle状态并禁止在复位发生前设置为 上电期间写保护的块取消上电期间写保护。
d)当设备在sleep状态接收到GO_PRE_IDLE_STATE命令(参数为0xF0F0F0F0的 CMD0)或硬件复位信号生效,设备也进入Pre-idle状态。图2 为eMMC引导模式的状态图
图2 eMMC 状态图(引导模式)
3.3设备识别模式
在设备识别模式下,主机复位设备,验证工作电压范围和访问模式,识别设备并为总线 上的设备分配相对设备地址(RCA)。在设备识别模式下的所有数据通讯都仅采用命令线 CMD。
在接收到命令GO_IDLE_STATE(参数为0x00000000的CMD0)之后,设备进入Idle 状态。
以下为设备进入Idle状态的其他情况:
a)完成引导操作之后
b)在pre-idle 下,CMD线路低电平持续时间小于74个时钟后
c) 上电之前设备未使能引导模式
在此情况下,设备输出总线驱动器处于高阻状态,且设备初始化为缺省的相对设备地址 (0x0001)和缺省的驱动器状态寄存器设置。参数为0x00000000的CMD0在除Inactive的所有状态下都是有效的。在Inactive状态下,设备不接受参数为0x00000000的CMD0。为了向后兼容,在除Inactive的任何状态下如果设备接收到参数为0xFFFFFFFA或 0xF0F0F0F0 以外的CMD0,设备将其按照设备复位命令来处理,并进入Idle状态。参数 为0xFFFFFFFA的CMD0是Pre-boot状态下的引导初始化命令,但如果主机在除Inactive 状态和Pre-boot状态之外的任何状态下发送此命令,设备将其按照设备复位命令来处理, 并进入Idle状态。图3为eMMC 设备识别模式状态图。

图3 eMMC 状态图(设备识别模式)
3.4 中断模式
eMMC 系统的中断模式使主机能够向从机(设备)授予同时传输的许可。这种模式减 少了主机轮询的负担,因而降低了系统功耗,同时保持了主机对设备服务请求的足够的责任。 支持eMMC中断模式是可选的,对主机和设备都是如此。 中断模式下的系统行为在图4的状态图中描述。
在发送GO_IRQ_STATE(CMD40)之前,主机必须保证设备是处于Stand-By状态。 当等待设备的中断应答时,主机必须保证时钟信号有效。时钟频率可以根据所需的应答 时间改变。 主机利用GO_IRQ_STATE(CMD40)命令将设备置于中断模式。处于Wait-IRQ 状态的设备一直在等待一个内部的中断触发事件。一旦该事件发生,该设备开始向主机发送其应答。此应答以开漏模式发送。在等待内部中断事件的同时,设备也等待命令线上的起始位。一旦检测到起始位,设备就放弃中断模式并切换到stand-by状态。无论赢得还是失去了总线控制,设备都要在CMD40应答期间切换到stand-by状态(与CMD2相反)。 接收到中断应答后,主机返回到标准通讯例程。
如果主机想在接收到中断应答之前结束中断模式,它可以利用保留的RCA地址0x0000 自己生成CMD40应答(设备比特 = 0);这将使设备从Wait-IRQ状态回到stand-by 状态。现在主机就可以恢复到标准通讯例程了。
图4 eMMC 状态转换图(中断模式)
3.5数据传输模式
当设备处于stand-by状态,在CMD和DAT线上的通讯都将以推拉模式执行。主机发送SEND_CSD(CMD9)来获取设备专用数据(CSD寄存器),如块长度、设备存储容量、最大时钟速率等等。 广播命令SET_DSR(CMD4)配置设备的驱动器段。它编程其DSR寄存器以便与应用 总线布局(长度)和数据传输频率相适应。
当设备处于Stand-by状态时,CMD7被用于通过参数中包含设备的相对地址来选定设 备并将其置于Transfer状态。如果设备此前已经被选定并处于Transfer状态,则当CMD7 通过参数中不等于该设备自己相对地址的任意地址来取消选定时,它与主机的连接被释放, 并返回 Stand-by 状态。当 CMD7 以保留的相对设备地址 0x0000 发送时,该设备返回 Stand-by 状态。处于Transfer 状态的设备接收到有设备自己的相对地址的CMD7时,将忽略该命令,也可能当作非法命令来处理。在设备被分配了一个RCA之后,就不再应答识别命令——CMD1、CMD2和CMD3。
当设备处于Disconnect状态时,CMD7被用通过参数中包含设备的相对地址来将设备 置入Programming状态。如果设备此前已经被选定并处于Programming状态,则当CMD7 通过参数中不等于该设备自己相对地址的任意地址来取消选定时,它与主机的连接被释放,并返回Disconnect 状态。处于 Programming 状态的设备接收到有设备自己的相对地址的 CMD7时,将忽略该命令,也可能当作非法命令来处理。
图5为 eMMC 数据传输模式的状态转换图。

图5 eMMC 状态转换图(数据传输模式)
3.6 命令
定义了4种命令来控制eMMC:
a)无应答广播命令(bc)
b)有应答广播命令(bcr)
c)寻址(点对点)命令(ac),无DAT线数据传输
d)寻址数据传输(点对点)命令(adtc),数据在DAT线传输
所有命令和应答都通过eMMC总线的CMD线发送。命令发送总是从对应于命令编码的比特串最左比特开始。
eMMC命令格式如表4所示,所有命令都为固定的48-bit编码长度。
表4 命令格式

命令详细说明
下列各表详细定义了所有eMMC总线命令。
表5基本命令和流读命令(Class 0 和Class 1)

表6块读命令(Class 2)

4.设备寄存器
在设备接口内部定义了6个寄存器:OCR、CID、CSD、EXT_CSD、RCA和DSR。 这些寄存器只能用相应的命令来访问。OCR、CID、CSD承载了设备和内容专有信息,而RCA和DSR寄存器是配置寄存器,存储实际的配置参数。EXT_CSD寄存器承载设备专有信息和实际配置参数。
4.1 OCR 寄存器
32 比特的工作条件寄存器(OCR)寄存着设备的VDD电压概况和访问模式指示。另 外,此寄存器包括一个状态信息位。此状态位当设备上电例程结束时置位。所有设备均应实现OCR寄存器。

表7 OCR寄存器定义
4.2 CID 寄存器
设备识别寄存器(CID)长度128 bit。它保存了设备识别阶段(eMMC 协议)所用的 设备识别信息。每一张Flash或I/O设备都有一个独一无二的识别号。eMMC ROM设备的每个类型(由内容定义)都应有一个独一无二的识别号。表8列出了这些识别符。
表8 CID域

4.3 CSD 寄存器
设备专用数据寄存器(CSD)提供设备内容访问方式的信息。CSD定义了数据格式、 纠错类型、最长数据访问时间、数据传输速度、DSR寄存器是否可用等等。寄存器可编程 的部分(标有W或E的项目,见下)可以用CMD27命令更改。CSD寄存器项目类型编 码如下: R: W: R/W: W/E: R/W/E: R/W/C_P: R/W/E_P: W/E_P: 只读 可一次编程且不可读 可一次编程且可读 可多次写,其值在掉电、硬件复位和任何CMD0复位后保持,不可读 可多次写,其值在掉电、硬件复位和任何CMD0复位后保持,可读 在掉电和硬件复位清除值后(值不被CMD0复位清除)可写,可读 可多次写,其值在掉电、硬件复位和任何CMD0复位后复位,可读 可多次写,其值在掉电、硬件复位和任何CMD0复位后复位,不可读
4.4 扩展CSD寄存器
扩展CSD寄存器定义了设备属性和选定的模式。它长512字节。高320字节是属性段, 定义了设备能力,不能被主机更改。低192字节是模式段,定义了设备的工作配置。这些 模式可以被主机通过SWITCH命令改变。
4.5 RCA 寄存器
可写的16-bit 设备相对地址(RCA)寄存器,载有在设备识别期间主机分配的设备地 址。此地址用于设备识别例程之后寻址的主机-设备通讯。RCA寄存器缺省值是0x0001。 值0x0000是为将所有设备以CMD7置于Stand-by状态而保留的。
4.6 DSR 寄存器
16-bit 驱动器段寄存器(DSR)它可选地用于扩展操作条件以提高总线性能(取决于总线长度、传输速率或设备数等参数)。CSD寄存器载有有关DSR 寄存器使用的信息。DSR寄存器的缺省值是0x404。
5.错误保护
CRC 用来保护eMMC命令、应答和数据传输来防止eMMC总线上的传输错误。为每 一条命令都要生成一个CRC,并要检查CMD线上的每一个应答。对数据块,每一个传输 块都要生成一个CRC。
5.1 纠错码(ECC)
为了检查设备上的数据缺陷,主机可以在载荷数据中包含纠错码。对无错误设备,不需 要此功能。通过设备外实现的纠错码,可以达成优化的硬件分享。在另一方面,必须限制系统中编码的差异,否则需要可编程的ECC控制器,它就超出eMMC连接器的意向了。 如果eMMC需要外部的纠错(外部意味着在设备之外),则ECC算法必须由eMMC 主机来实现。CSD寄存器中缺省_ECC域定义了设备推荐的ECC算法。
5.2 循环冗余编码(CRC)
CRC 用来保护eMMC命令、应答和数据传输,以防止eMMC总线上的传输错误。要 为CMD线上的每一条命令生成CRC,并要校验每一个应答的CRC。对于数据块,每条数 据线每个数据块都要生成一个CRC。
本文内容参考《EMBEDDED MULTI-MEDIA CARD (e•MMC), ELECTRICAL STANDARD (5.1) | JEDEC》
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)