EMMC框架和分区管理介绍
一、EMMC的框架
eMMC的全称是Embedded MultiMedia Card,MMC协会所制定的内嵌式存储器标准规格,主要应用于智能手机和移动嵌入式产品。eMMC是一种嵌入式非易失性存储系统,由标准MMC接口、主控制器和NAND Flash三部分组成,采用JEDEC标准BGA封装。
eMMC的这种将Nand Flash芯片和控制芯片封装在一起的设计概念,就是为了简化产品内存储器的使用,客户只需要采购eMMC芯片放进产品中,不需要处理其它复杂的Nand Flash兼容性和管理问题,减少研发成本和研发周期。
图1-1 EMMC的框架
二、EMMC的分区
EMMC的分区主要分为四个部分,支持的硬件分区可以达到8个,具体的如下图所示:
图1-2 分区示意图
1、BOOT1&BOOT2 ROM
此分区的主要作用是支持emmc启动系统而设计的。该分区的数据,在EMMC上电后,可以通过很简单的协议读取出来,同时在各个platform中都可以支持将ROM代码在上电之后,将EMMC BOOT分区的内容加载到SOC内部的SRAM中执行。
2、RPMB partition
RPMB 是 Replay Protected Memory Block 的简称,它通过 HMAC SHA-256 和 Write Counter 来保证保存在 RPMB 内部的数据不被非法篡改。在实际的应用中,RPMB分区通常用来保存安全相关的数据,例如指纹数据、安全支付相关的秘钥等。
3、General Purpose Partition 1~4
此区域则主要用于存储系统或者用户数据。General Purpose Partition 在芯片出厂时,通常是不存在的,需要主动进行配置后,才会存在。
4、User Data Area
此区域则主要用于存储系统和用户数据。UDA分区通常会进行更加细致的划分,在安卓系统中,通常会在此区域中分出BOOT/system/userdata等分区。
上面介绍的BOOT分区和RPMB的容量大小通常都为4MB,部分芯片厂家也会提供配置的机会,GPP分区在出厂时默认不被支持,即不支持这些分区,需要用户主动去使能,并配置其所有使用的GPP容量的大小,GPP的数量可以为1-4,各个GPP的容量大小可以不一样,UDA的分区的容量的大小则为总容量的大小减去其它分区所占用的容量。
三、BOOT area partitons
Boot Area 包含两个 Boot Area Partitions,主要用于存储 Bootloader,支持 SOC 从 eMMC 启动系统。
两个 Boot Area Partitions 的大小是完全一致的,由 Extended CSD register 的 BOOT_SIZE_MULT Field 决定,大小的计算公式如下:
Size = 128Kbytes x BOOT_SIZE_MULT
一般情况下,Boot Area Partition 的大小都为 4 MB,即 BOOT_SIZE_MULT 为 32,部分芯片厂家会提供改写 BOOT_SIZE_MULT 的功能来改变 Boot Area Partition 的容量大小。BOOT_SIZE_MULT 最大可以为 255,即 Boot Area Partition 的最大容量大小可以为 255 x 128 KB = 32640 KB = 31.875 MB。
四、RPMB
RPMB(Replay Protected Memory Block)Partition 是 eMMC 中的一个具有安全特性的分区。
eMMC 在写入数据到 RPMB 时,会校验数据的合法性,只有指定的 Host 才能够写入,同时在读数据时,也提供了签名机制,保证 Host 读取到的数据是 RPMB 内部数据,而不是攻击者伪造的数据。
RPMB 在实际应用中,通常用于存储一些有防止非法篡改需求的数据,例如手机上指纹支付相关的公钥、序列号等。RPMB 可以对写入操作进行鉴权,但是读取并不需要鉴权,任何人都可以进行读取的操作,因此存储到 RPMB 的数据通常会进行加密后再存储。
两个 RPMB Partition 的大小是由 Extended CSD register 的 BOOT_SIZE_MULT Field 决定,大小的计算公式如下:
Size = 128Kbytes x BOOT_SIZE_MULT
一般情况下,Boot Area Partition 的大小为 4 MB,即 RPMB_SIZE_MULT 为 32,部分芯片厂家会提供改写 RPMB_SIZE_MULT 的功能来改变 RPMB Partition 的容量大小。RPMB_SIZE_MULT 最大可以为 128,即 Boot Area Partition 的最大容量大小可以为 128 x 128 KB = 16384 KB = 16 MB。
使用 eMMC 的产品,在产线生产时,会为每一个产品生产一个唯一的 256 bits 的 Secure Key,烧写到 eMMC 的 OTP 区域(只能烧写一次的区域),同时 Host 在安全区域中(例如:TEE)也会保留该 Secure Key。
在 eMMC 内部,还有一个RPMB Write Counter。RPMB 每进行一次合法的写入操作时,Write Counter 就会自动加一 。
通过 Secure Key 和 Write Counter 的应用,RMPB 可以实现数据读取和写入的 Replay Protect。
五、GPP
eMMC 提供了 General Purpose Partitions (GPP),主要用于存储系统和应用数据。在很多使用 eMMC 的产品中,GPP 都没有被启用,因为它在功能上与 UDA 类似,产品上直接使用 UDA 就可以满足需求。
六、UDA
User Data Area (UDA) 通常是 eMMC 中最大的一个分区,是实际产品中,最主要的存储区域。
UDA的容量大小不需要设置,在配置完其他分区大小后,再扣除设置Enhanced attribute所损耗的容量,剩下的就是UDA的容量。
软件分区:
为了更合理的管理数据,满足不同的应用需求,UDA 在实际产品中,会进行软件再分区。目前主流的软件分区技术有 MBR(Master Boot Record)和 GPT(GUID Partition Table)两种。这两种分区技术的基本原理类似。
软件分区技术一般是将存储介质划分成了多个SW partitions,然后通过一个partiton table来维护这些SW partitions,在partiton table中,每个条目都保存着一个SW partition的起始地址、大小等属性信息,软件系统在系统后,会去扫描partition table,获取存储介质上的各个SW partition信息,然后根据这些信息,将各个partitions加载到系统中,进行数据存储。
七、EMMC的分区实例
在一个 Android 手机系统中,各个分区的呈现形式如下:
1、mmcblk0为eMMC的块设备
2、mmcblk0boot0和mmcblk0boot1对应两个BOOT分区
3、mmcblkrpmb则为RPMB partiton
4、mmcblk0px则为UDA划分出来的SW partitions
5、如果存在GPP,名称则为mmcblk0gp1/mmcblk0gp2/mmcblk0gp3/mmcblk0gp4
每一个分区会根据实际的功能来设定名称。
SD NAND与eMMC优劣势对比
最近我们接触到一些客户,本来客户计划使用eMMC,但总觉得哪里不满意。后来跟客户做了深入沟通。你们真实的想要什么样的eMMC呢?他们给出的答案有:尺寸最小的eMMC; 最方便焊接的eMMC; 最小容量的eMMC; pin脚最少的eMMC; 功耗最低的eMMC; 擦写寿命最长的eMMC; 使用SLC NAND 晶圆的eMMC; 性能最稳定的eMMC等。
我们根据客户的要求进行了分析,觉得CS创世 SD NAND更适合这些客户。CS创世 SD NAND是迷你型eMMC; 6*8mm 尺寸小巧; 容量最小128MB,成本更优; 8pin脚,方便焊接; 内置SLC晶圆,10万次擦写寿命; 兼容SDIO,即贴即用; SD NAND和 eMMC在架构上,类似亲兄弟,都是内置NAND Flash晶圆+NAND Flash控制器+Firmware。
关于CS创世 SD NAND详细信息可以参考链接:http://www.longsto.com/product/31.html。那SD NAND和eMMC又有哪些不一样呢?在这里把CS创世 SD NAND和eMMC特性列出来:
可以看到客户有如下需求时,选择SD NAND会比eMMC更合适一些:
1:需要芯片尺寸小。贴片式SD卡是 6*8mm;eMMC是11.5*13mm;
关于它们的尺寸大小和封装,给大家看一张这个产品实物图的对比(从左往右)
2:要求小容量。SD NAND是128MB-4GB;eMMC容量≥16GB;
3:要求擦写寿命长,耐擦写。SD NAND是内置SLC NAND Flash晶圆,擦写次数可以达到5~10万次; eMMC使用MLC晶圆,擦写寿命3千次 (非主流),TLC晶圆,擦写寿命一般是500次左右(主流)。
4:要求方便焊接,pin脚少的。 SD NAND LGA-8封装,机贴手帖都方便; eMMC是153 Ball,BGA封装,焊接难度加大了不少。
5: 客户采用的CPU本身不支持eMMC接口,又需要大容量存储。这点在MCU平台上经常会碰到。这时候CS创世 SD NAND是不二选择 。
6:对PCB板层数要求比较少。很多客户做一些类似玩具,小家电等产品。基本上2层板就够用了。如果这个时候使用eMMC,那PCB板至少要变成4层。会增加硬件的布线难度和PCB的成本。
那什么情况下使用eMMC比较合适呢?
1,容量需求比较大。>= 8GB时。
2,主控支持eMMC。
3,PCB板面积够大且层数> 4层。使用eMMC,需要预留11.5*13mm的空间‘PCB至少4层板,需要埋盲孔;BGA 153个ball,0.5mm的pin间距。
想了解CS创世 SD NAND更多信息,请点击链接:http://www.longsto.com/product/31.html。
亲爱的卡友们,欢迎光临雷龙官网,如果看完文章之后还是有疑惑或不懂的地方,请联系我们,自己去理解或猜答案是件很累的事,请把最麻烦的事情交给我们来处理,术业有专攻,闻道有先后,雷龙发展专注存储行业13年,专业提供小容量闪存解决方案。
相关问答
从形状怎么区分 emmc 和 nand ?一般emmc比nand尺寸要小,另外可以从芯片上的型号或者从形状的端子类型去区分,一般emmc的端子类型是BGA全局引脚,而nand的端子类型是LGA下沉引脚或者GBGA伴送引...
emmc与nand flash哪个好?1、NANDFlash是一种存储介质,要在上面读写数据,外部要加主控和电路设计。2、eMMC是NANDflash+主控IC,对外的接口协议与SD、TF卡类似;对厂家而言简化了电...
emmc 和闪存的区别?eMMC和闪存的区别主要有以下几点:结构不同:eMMC是由NAND闪存芯片和主控制器组成的,而闪存则没有主控制器。这意味着eMMC可以在一个芯片内实现存储和控制器功...
华为内存 eMMC 和UFS闪存哪个更好 eMMC 和UFS是什么-ZOL问答4条回答:【推荐答案】是闪存的两种标准。简单说ufs的读写速度更快但是价格也高,一般旗舰机全用这种。emmc的读写速度慢一些,但是成本低一般千元机全采用这种。...
华为闪存到底有多强?华为闪存非常强大,拥有出色的性能和可靠性。其采用的NVMe协议和PCIe接口,可实现高速数据传输和读写速度,比传统的SATASSD快上数倍。同时,其采用的三维NAND闪...
魅族15和15plus的运行内存用的是 emmc 还是ufs?谢谢邀请,很高兴参与答题。首先回答下题主的问题:在闪芯片规格上,❶魅族15用的是eMMC5.1❷魅族15Plus用的是USF2.1然后纠正下题主的问题:eMMC5.1也...组成,...
三星也被告了,ZeniMax是不是耍流氓?根据旭日大数据统计,2016年eMMC4.x、eMMC5.x、UFS的产能比例大约是2:7:1。回首2016年,内存、闪存的缺货涨价势头持续上扬,闪存价格一路飙升到2015年年初水...
MTD是什么意思?说到NANDflash类文件系统,不得不提到之前的Yaffs2以及UBIFS。这两种文件系统都是基于linux的MTD层而实现的。MTD层就是linux对于NANDflashdriver封装的一...
手机闪存是什么意思?闪存是电子可擦除只读存储器(EEPROM)的变种,闪存与EEPROM不同的是,EEPROM能在字节水平上进行删除和重写而不是整个芯片擦写,而闪存的大部分芯片需要块擦除。...
ufs3.0和12G内存哪个对流畅运行影响大?我们看下不同规格闪存的传输速度,中低端手机较为常见的eMMC5.0/5.1规格,速度仅为400MB/s,当前主流的UFS2.0/2.1规格,速度为11.6Gbps/s,UFS3.0的规格,速度......