eMMC(一)——基本架构

1. eMMC是什么

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

1.1 个人理解

     看了很多文章,上来就开始列概念,例如上面一段,接着讲原理,自己看的很含糊,不清楚自己到底看了个啥玩意儿,也不知道它长什么样、用在哪、主要干嘛用的,就讲怎么开发设计,很散没有目的。经过一段时间总结,对这个eMMC了解了一些,首先,我觉得我得知道它在现实生活中用在哪?我知道的有以前的手机上、某些多媒体设备上;再者,长什么样子?答:一种黑色不算大的芯片,贴在板子上。用它干嘛?答:存储某些东西,例如启动程序(电脑BIOS程序是固化在主板上的)、系统(电脑系统在硬盘的C盘)、用户数据(硬盘上的某个磁盘)等。想想手机的ROM(平时说的手机内存)是干嘛的就知道一些eMMC的作用了。

1.2 eMMC 的整体架构

    eMMC 的整体架构如下:

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

2. 各组成部分

2.1 NAND Flash

      NAND Flash 是一种非易失性的存储器,通常在嵌入式系统中用于存放系统、应用和数据等,类似与 PC 系统中的硬盘。

      eMMC 在内部对 NAND Flash 划分了几个主要区域,如下所示:

  1. BOOT Area Partition 1 & 2
    此分区主要是为了支持从 eMMC 启动系统而设计的。
    该分区的数据,在 eMMC 上电后,可以通过很简单的协议就可以读取出来。同时,大部分的 SOC 都可以通过 GPIO 或者 FUSE 的配置,让 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
    此区域则主要用于存储系统和用户数据。
    User Data Area 通常会进行再分区,例如 Android 系统中,通常在此区域分出 boot、system、userdata 等分区。

2.2 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 要好很多。

2.3 标准接口

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

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

总线上信号用途如下:

(1)CLK

用于同步的时钟信号。

(2)Data Strobe

此信号是从 Device 端输出的时钟信号,频率和 CLK 信号相同,用于同步从 Device 端输出的数据。该信号在 eMMC 5.0 中引入。

(3)CMD

此信号用于发送 Host 的 command 和 Device 的 response。

(4)DAT0-7

eMMC的双向数据总线,用于主机和设备之间的数据通信。它工作在应对快速的命令传输的推挽模式。DAT线在某一时刻只能支持单向传输,只能被设备或eMMC HOST一方控制。默认下,当用户上电或者复位的时候,仅能用DAT0一根线传输数据。同时,用户可以自己配置想要使用的DAT线的数量,也可以选择4根或者8根。当用户选择4根时,eMMC设备会断DAT1-3的内部上拉,如果用户选择的是8根,那么同理会断开DAT1-7的上拉。

Host 与 eMMC 之间的通信都是 Host 以一个 Command 开始发起的。针对不同的 Command,Device 会做出不同的响应。

eMMC标准接口总结如下:

Name Type1 Description
CLK I Clock
DS O/PP Data Strobe
DAT02 I/O/PP Data
DAT1 I/O/PP Data
DAT2 I/O/PP Data
DAT3 I/O/PP Data
DAT4 I/O/PP Data
DAT5 I/O/PP Data
DAT6 I/O/PP Data
DAT7 I/O/PP Data
CMD I/O/PP/OD Command/Response
RST_n I Hardware reset
VCC S Supply voltage for Core
VCCQ S Supply voltage for I/O
VSS S Supply voltage ground for Core
VSSQ S Supply voltage ground for I/O

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

      CID: 卡身份识别寄存器 128bit,只读, 厂家号,产品号,串号,生产日期。

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

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

      SCR: 卡配置寄存器, 可写的 64bit 是否用Security特性(LINUX不支持),以及数据位宽(1bit或4bit)。

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

参考:eMMC官方协议

猜你喜欢

转载自blog.csdn.net/yangguoyu8023/article/details/110832698
今日推荐