EMMC介绍

本文详细介绍了eMMC,一种针对移动设备的内嵌式存储器,包括其组成(NANDFlash+控制器+标准封装)、工作原理、接口速度、BootArea和RPMB分区、HS200/HS400模式以及与UFS和传统NANDFlash的比较。还讨论了VCC和VCCQ电压的区别。
摘要由CSDN通过智能技术生成

eMMC是什么

eMMC (Embedded Multi Media Card)是MMC协会订立、主要针对手机或平板电脑等产品的内嵌式存储器标准规格。
由一个嵌入式存储解决方案组成,带有MMC(多媒体卡)接口、快闪存储器设备及主控制器,所有都在一个小型的BGA 封装。
接口速度高达每秒52MBytes,eMMC具有快速、可升级的性能。同时其接口电压可以是1.2V、1.8V或者是3.3V。
它是在NAND闪存芯片的基础上,额外集成了控制器,并将二者“打包”封装封成一颗BGA(全称为Ball Grid Array,中文名为球栅阵列,是一种集成电路封装技术。)芯片,从而减少了对PCB主板的空间占用,也是移动设备中普及度最高的存储单元。

简单地说,eMMC=Nand Flash+控制器+标准封装

eMMC 的整体架构

eMMC 的整体架构如下:

eMMC 内部是把NAND Flash芯片(Flash内存阵列) 、Device Controller芯片(也叫Flash控制器、eMMC控制器)封装在一块。
Flash控制器负责管理内存,并且提供标准接口,使得EMMC能够自动调整主机与从机的工作方式,没有位数限制,不需要处理其他繁杂的NAND Flash兼容性和管理问题,同时,控制器是其卡的应用和多媒体总线之间的联系介质,它能在应用程序总线和标准多媒体总线之前完成协议转换。他的通信基于先进的10个信号总线,通信协议被定义为这个标准的一部分,简称多媒体模式。 eMMC的主要用处,看看下面各模块的作用也基本可以清楚了。

各组成部分

NAND Flash

NAND Flash 是一种非易失性的存储器,通常在嵌入式系统中用于存放系统、应用和数据等,类似于PC 系统中的硬盘。eMMC 在内部对 NAND Flash 划分了几个主要区域,如下所示:

  • BOOT Area Partition 1 & 2
    此分区主要是为了支持从 eMMC 启动系统而设计的
    该分区的数据,在 eMMC 上电后,可以通过很简单的协议就可以读取出来。同时,大部分的 SOC 都可以通过 GPIO 或者 FUSE(用户空间文件系统( Filesystem in Userspace,简称 FUSE)是 操作系统中的概念,Linux用于支持用户空间文件系统的内核模块名叫FUSE,FUSE一词有时特指Linux下的用户空间文件系统。) 的配置,让 ROM 代码在上电后,将 eMMC BOOT 分区的内容加载到 SOC 内部的 SRAM 中执行所以启动分区的数据是需要MCU解析的。

  Boot Area包含两个Boot Aera Partions, 主要用于存储BootLoader,支持SOC从eMMC启动系统。这两个分区是由厂家在生产过程中配置好的,并且其大小是不能由AP进行配置的。两个Boot Area Partions的大小是完全一致的,由Extend CSD register的BOOT_SIME_MULT Field决定,大小的计算公式如下:Size = 128Kbytes x BOOT_SIZE_MULT。

一般情况下,Boot Area Partions的大小都是4MB,即BOOT_SIZE_MULT为32,部分芯片厂家会提供改写BOOT_SIZE_MULT的功能来改变Boot Area Partion的容量大小。即BOOT_SIZE_MULT最大可以为255,即BOOT Area Partion的最大容量可以为128KB*255=31.875MB。

Boot1和Boot2这两个区域在存储的稳定性、可靠性及擦除次数上都远比UDA要好,所以很多chipset上都会使用这两个区域来存放一下关键数据,如boot image,default配置参数等等。当然不通的chipset的配置方法也不尽相同。这个可以找chipset的工程师询问。据笔者所知:以大陆市占最大的两家chipset为例,MTK使用UDA来存放boot data,而使用boot area来存放配置参数;Qualcomm则使用Boot1来存放boot data,boot2来存放配置参数。

另外,不通的eMMC版本一般对Boot Area和RPMB的容量大小需求也不通,如下作一个简单的参考:

  • 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 等分区

Flash Controller

NAND Flash 直接接入 Host 时,Host 端通常需要有 NAND Flash Translation Layer,即 NFTL 或者 NAND Flash 文件系统来做坏块管理、ECC等的功能。
eMMC 则在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能

相比于直接将NAND Flash接入到Host端,eMMC屏蔽了NAND Flash的物理特性,可以减少Host端软件的复杂度,让Host端专注于上层业务,省去了对NAND Flash进行特殊的处理。同时,eMMC通过使用Cache、Memory Array等技术,在读写性能上也比NAND Flash要好很多。

传统Nand Flash与eMMC存储方案对比如下:

传统NAND FLASH一般使用SPI总线,而eMMC使用自己的总线协议。

标准接口

其中包括Card Interface(CMD,DATA,CLK)、Memory core interface,总线接口控制、电源控制、寄存器组。

eMMC与Host之间的通信线,如下:

eMMC的四类信号功能描述如下:

时钟信号

CLK:给eMMC提供数据交互的时钟;

控制信号

DS:DS是由eMMC向主控端传输,频率和CLK信号相同,用于同步从Device端输出的数据,在HS400模式下使用,在主控端实现数据同步功能。该信号在eMMC5.0中引入。

CMD: 命令交互信号,用户传输控制命令或者回应主机(发送Host的command和Device的response),双向信号。Host与eMMC之间的通信都是Host以一个Command开始发起的,针对不通的Command,Device会做出不通的响应。

RST_n: 复位信号。

数据信号:

DAT[7:0]: 双向接口,数据收发。

eMMC的双向数据总线,用于主机和设备之间的数据通信。它工作在应对快速的命令传输的推挽模式。

DAT线在某一时刻只能支持单项传输,只能被设备或eMMC HOST一方控制。默认下,当用户上电或者复位的时候,仅能用DAT0一根线传输数据。同时,用户可以自己配置想要的DAT线的数量,也可以选择4根或者8根。当用户选择4根时,eMMC设备会断开DAT1-3的内部上拉,如果用户选择8根,那么同理会断开DAT1-7的上拉。

电源信号:
VCC: eMMC的Core电源。
VCCQ: IO电源。

图中寄存器组的功能见下表:

CID

卡身份识别寄存器,128bit,只读,厂家号,产品好,串口,生产日期;

这是128bits的寄存器,里面存放单个设备独一无二的信息,它符合eMMC协议,当设备处于识别状态的时候,信息能够被主机访问。具体信息见下表:

RCA

卡地址寄存器,可写的16bit寄存器,存有Device identification模式由host分配的通信地址,host会在代码里面记录这个地址,MMC则存入RCA寄存器,默认值为0x0001。保留0x0000用来将all device设置为等待CMD7命令状态。

这是16bits的寄存器,一旦设备被识别,设备会被主机指定相对的地址,它存在其中。当传输数据的时候,主机利用这些信息选择设备,规定这个寄存器默认的值为0X0001。如果地址变成0X0000,那么只有发送CMD7指令才可让设备处于Stand-by State才可用。

CSD

卡专有数据寄存器部分,可读写128bit,卡容量,最大传输速率,读写操作的最大电流、电压、读写擦除块的最大长度等。

这是128bits的寄存器,它提供了主控如何去访问设备的信息。它规定了数据格式、错误类型、最大数据访问时间、数据传输速率、DSR寄存器是否可用等。其具体内容如下表:

DSR

驱动等级寄存器。

这是16bits的寄存器,它规定设备的等级,设备能通过主机进行设置来增强设备的性能,例如总线的长度、传输的速率等参数。在设备具体数据寄存器中包括了这个寄存器使用方式的内容。这个寄存器的默认值是0x404。

SCR

卡配置寄存器,可写的64bit,是否用Security特性,一句数据位宽(1bit或4bit)

OCR

这是32bits的寄存器,此寄存器包含eMMC Device支持的电压模式、数据寻址模式(按Byte寻址or按Sector寻址)以及Busy标志位。

卡操作电压寄存器32位,只读,每隔0.1V占1位,第31位表示卡上电过程是否完成。

eMMC电源设计

先了解什么是HS200和HS400模式

eMMC的HS200模式和HS400模式是比较特殊的工作情况,它们会影响eMMC的供电设计,我们先来看看这两个模式的细节。

HS200模式:

HS200是eMMC的高速通信模式,该模式下时钟频率为200MHz,数据在时钟单边沿有效,最大数据率吞吐率为200MB/s,此时IO电平为1.8V或者1.2V,时序图如下。

HS400模式:

HS400是eMMC的高速通信模式,时钟频率也为200MHz,数据在时钟双边沿有效,最大数据率吞吐率为400MB/s,此时IO电平为1.8V或者1.2V,时序图如下。

从上面总结下来,HS200和HS400都是高速模式,时钟都是200MHz,信号电平信号都仅支持1.8V和1.2V,HS400因为是时钟双边沿数据有效,所以速率相对HS200翻了一倍。

当然,eMMC的总线不止HS200和HS400模式,它还有另外的三种模式,另外的三种模式都兼容3V、1.8V、1.2V电平,如下。

电源设计

上面特地的先了解了HS200模式和HS400模式,目的是为了充分理解eMMC的复杂IO电平,上面我们知道,eMMC在HS200和HS400模式下,IO电平只能是1.8V或者1.2V,所以设计里如果主控芯片支持这两种模式控制,我们也想用这两种模式,那么IO的电源引脚VCCQ一定要使用1.8V或者1.2V供电,否则无法使用,如果不需要HS200或HS400模式,那就看主控的电平是什么就供什么电平电压,比如主控的IO电平是3.3V,那么就给eMMC的VCCQ供3.3V,如果主控的IO电平是1.8V,那么就给eMMC的VCCQ供1.8V。

eMMC VS Nand Flash

如前所述,eMMC是将Nand Flash和Flash Controller和eMMC接口等封装在一起的小型的存储系统,这样做的好处是:

1.简化系统存储设计,降低开发复杂度。生产Nand Flash的厂商众多,有samsung、hynix、micron等许多厂商,每家生产的产品的技术特性都稍有差异,需要针对这些特性做兼容开发,开发非常复杂;而eMMC则规定了统一的协议接口,我们只需要根据协议做开发,就能兼容各个厂商的eMMC产品,开发过程大大简化。

2.更新速度快。随着Nand Flash制程工艺的不断升级,主控的Flash Controller和NFTL也需要不停的更新,才能支持新的Nand Flash。而eMMC将Flash Controller和Nand Flash封装在了一起,屏蔽了由于Nand Flash制程工艺而带来的差异,主控的controller和driver不需要做过多修改就能支持。

3.读写性能更好。eMMC在Nand Flash的基础上,加入了Cache、Memory array等技术,大大提高了读写速度。

eMMC VS MMC

如前所述,eMMC即embedded MMC,就是从MMC拓展而来,做了小型化处理,方便嵌入到板上,且速度方面做了提升,从0 ~ 52MHz提升到了0 ~ 200MHz。

eMMC VS UFS

与eMMC一样,UFS也是一种将Nand Flash和Flash controller即协议接口封装在一起的存储系统。但是两者还是有很大的区别。

1.协议接口不一样。eMMC使用的是8bit的并行接口,而UFS使用的是串行接口。eMMC和主控之间只能进行半双工通信,而UFS与主控之间可以看下全双工通信。

2.UFS的读写性能比eMMC高很多。如前所述,由于eMMC使用的是并行接口,这就限制了它的最高工作频率,目前eMMC能支持的最高工作频率是200MHz,及它的最大传输带宽为400MB/s。而UFS使用的是串行接口,则可以突破这个限制,且能进行全双工通信,大幅提高了读写性能。以下就是eMMC与UFS的读写性能的对比图。

VCC和VCCQ的区别

VCC和VCCQ电压的区别主要体现在它们的应用和电压范围上。

VCC电压

VCC(Volt Current Condenser)通常是指电路中的正电源电压输入端,为芯片、模块或电路提供工作电压在不同的上下文中,VCC有不同的含义和电压值:

  • 在数字电路和模拟电路中,VCC通常指的是电路的供电电压,常见的电压值有3.3V和5V,但也可以有其他电压等级,如用于单片机电路中的+5V
  • 通常用于核心电压,如存储器部分电压。
  • 电压范围较宽,一般为2.7V至3.6V,适用于不同的设备和应用场景。
  • 在某些情况下,VCC电压需要大于或等于VCCQ电压,以确保设备的正常运行。

VCCQ电压

  • 主要用于接口电源及核电压,以及闪存输入输出和UFS控制器的供电。
  • 电压范围较窄,通常为1.8V或与VCC相同,但在某些情况下也可能为1.70V至1.95V。

VCCQ电压由CPU的数据总线的VCCIO决定,且eMMC总线VCCIO值必须与VCCQ(voltage core clamp quad)保持一致,VCCIO是CPU侧的电压,VCCQ是外设上的电压

总结来说,VCC和VCCQ电压虽然都是用于供电,但它们的应用场景和电压范围有所不同。VCC主要用于核心电路,而VCCQ则更多地用于接口和输入输出电路。了解这两种电压的区别对于正确设计和使用电子设备至关重要。VCC是给闪存电源供电的引脚,一般是3.3V;VCCQ是给存储器控制器供电的引脚。

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小白20200202

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值