eMMC¶
eMMC (Embedded Multi Media Card)是 MMC 协会订立、主要针对手机或平板电脑等产品的内嵌式存储器标准规格。
eMMC 在封装中集成了一个控制器,提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。
eMMC 具有快速、可升级的性能
eMMC=NAND 闪存 + 闪存控制芯片 + 标准接口封装
MultiMediaCard,即 MMC, 是一种闪存卡(Flash Memory Card)标准,它定义了 MMC 的架构以及访问 Flash Memory 的接口和协议。而 eMMC 则是对 MMC 的一个拓展,以满足更高标准的性能、成本、体积、稳定、易用等的需求。
接口电压: 1.8v、3.3v
接口速度: 每秒 52MBytes (1.0 版本)
在 NAND 闪存芯片的基础上,额外集成了控制器,并将二者 “打包” 封装封成一颗 BGA 芯片,从而减少了对 PCB 主板的空间占用,也是移动设备中普及度最高的存储单元。
缺点¶
需要先擦除再写入:
Flash Memory 写入数据时有一定的限制。 它只能将当前为 1 的比特改写为 0,而无法将已经为 0 的比特改写为 1,只有在擦除的操作中,才能把整块的比特改写为 1。
块擦除次数有限:
Flash Memory 的每个数据块都有擦除次数的限制(十万到百万次不等),擦写超过一定次数后,该数据块将无法可靠存储数据,成为坏块。 为了最大化的延长 Flash Memory 的寿命,在软件上需要做擦写均衡(Wear Leveling),通过分散写入、动态映射等手段均衡使用各个数据块。 同时,软件还需要进行坏块管理(Bad Block Management,BBM),标识坏块,不让坏块参与数据存储。 (注:除了擦写导致的坏块外,Flash Memory 在生产过程也会产生坏块,即固有坏块。)
读写干扰:
由于硬件实现上的物理特性,Flash Memory 在进行读写操作时,有可能会导致邻近的其他比特发生位翻转,导致数据异常。 这种异常可以通过重新擦除来恢复。 Flash Memory 应用中通常会使用 ECC 等算法进行错误检测和数据修正。
电荷泄漏:
存储在 Flash Memory 存储单元的电荷,如果长期没有使用,会发生电荷泄漏,导致数据错误。 不过这个时间比较长,一般十年左右。此种异常是非永久性的,重新擦除可以恢复。
区域划分¶
BOOT Area Partition 1 & 2:
此分区主要是为了支持从 eMMC 启动系统而设计的。 该分区的数据,在 eMMC 上电后,可以通过很简单的协议就可以读取出来。 同时,大部分的 SOC 都可以通过 GPIO 或者 FUSE 的配置, 让 ROM 代码在上电后,将 eMMC BOOT 分区的内容加载到 SOC 内部的 SRAM 中执行
RPMB Partition:
RPMB 是 Replay Protected Memory Block 的简称, 它通过 HMAC SHA-256 和 Write Counter 来保证保存在 RPMB 内部的数据不被非法篡改。 在实际应用中,RPMB 分区通常用来保存安全相关的数据,例如指纹数据、安全支付相关的密钥等。
General Purpose Partition 1~4:
此区域则主要用于存储系统或者用户数据。 General Purpose Partition 在芯片出厂时,通常是不存在的,需要主动进行配置后,才会存在。
User Data Area:
此区域则主要用于存储系统和用户数据。 User Data Area 通常会进行再分区,例如: Android 系统中,通常在此区域分出 boot、system、userdata 等分区。