eMMC(embedded MultiMedia Card)是MMC协会制定,针对手机和平板电脑的内嵌式存储器标准规范。
1、背景介绍
纵观Nand Flash发展史,最开始闪存市场被三星和东芝霸占,各闪存生产商没有一套统一的设计标准。为了反抗三星和东芝的霸权,在旧金山IDF论坛上成立了ONFI(Open Nand Flash Interface)联盟,主要是其他闪存生产商联合起来抢三星和东芝的蛋糕。参与ONFI联盟的包括Intel,Micron,Hynix, SanDisk等厂家,他们制定了ONFI标准。三星和东芝也联合起来,制定了Toggle标准。同时,三星允许东芝生产和制造自己旗下的OneNAND和Flex-OneNAND闪存芯片,东芝开放自己的LBA-NAND和mobileLBA-NAND闪存芯片技术给三星。Nand Flash世界进入了ONFI和Toggle楚汉相争的时代。
ONFI同步模式下使用时钟,数据、命令、地址都要与时钟同步。但是DQS,Clock都不是差分信号,所以边沿容易受干扰。
Toggle同步模式下不使用时钟,写数据用DQS差分信号跳变沿触发,读数据根据主控发的REN差分信号跳变沿发读请求,DQS跳变沿输出数据。
Nand Flash的标准不统一严重拖累了产品的研发周期,而且各Nand Flash无法保持兼容,因此无法顺利地实现器件替代。
MMC协会看到了这些痛点,因此,革命性地制定了eMMC标准,eMMC中集成了一个控制器,它提供标准接口并管理Nand Flash。
简言之,eMMC通过集成一个控制器,统一了对外的接口标准,把各Nand Flash的差异屏蔽在了eMMC内部,由各制造商自己解决,在手机和平板电脑领域结束了纷争。这也印证了计算机领域的一个真理——所有的问题都可以通过增加一个中间层解决。
2、eMMC和Nand Flash
Nand Flash通常需要在Host侧通过软件实现Flash Translation Layer用于坏块处理、擦写均衡、ECC校验等功能,所以Nand Flash驱动比较复杂。
eMMC则在其内部实现了FTL层的功能,这样Host侧的eMMC驱动实现就相对简单了。
3、eMMC总线
eMMC采用串行差分信号进行数据传输,数据传输位宽可配置,默认为1位,即DAT0有效;可以配置为4位或者8位。
CLK - 同步时钟信号
Data Strobe - eMMC卡输出的同步时钟信号,在eMMC通过DAT信号线输出数据时,锁存数据
CMD - 同MMC/SD协议,Host发送的Command和eMMC卡回复的Response只通过CMD信号交互
DAT0~7 - 数据传输信号
4、eMMC存储区
eMMC内部将Flash Memory划分为几个区域:
4.1、Boot Area Partition
当系统上电时,通过特定的时序,可以让系统从主备启动分区启动。
4.2、RPMB(Replay Protected Memory Block) Partition
RPMB通过HMAC SHA-256和Write Counter来保证保存在RPMB内部的数据不被非法篡改。
在实际应用中,RPMB分区通常用来保存安全相关的数据,例如指纹数据、安全支付相关的密钥等。
4.3、GPP(General Purpose Partition)
默认情况下,GPP分区是不存在的,需要通过软件进行特殊的配置,才能激活GPP分区。
4.4、UDA(User Data Area)
此区域通常用来存放系统和用户数据,很多应用场景中,只有User Data Area区域被使用。UDA区域通常使用MBR或者GPT格式进行分区。