eMMC简介

eMMC是embedded MultiMediaCard的简称。MultiMediaCard,即MMC,是一种闪存卡(Flash Memory Card)标准,它定义了MMC的架构以及访问Flash Memory的接口和协议。而eMMC则是对MMC的一个拓展,以满足更高标准的性能、成本、体积、稳定、易用等的需求。

eMMC的整体架构如下图片所示:

eMMC简介_第1张图片

图. eMMC整体框架

eMMC内部主要可以分为Flash Memory、Flash Controller以及Host Interface三大部分。

1.Flash Memory

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

目前,绝大部分手机和平板等移动设备中所使用的eMMC内部的Flash Memory都属于NAND Flash,关于NAND Flash的更多细节可以参考Flash Memory章节。

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

eMMC简介_第2张图片

                     图. eMMC内部分区

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

eMMC简介_第3张图片

                                 图. NAND Flash与eMMC

3.Host Interface

eMMC与Host之间的连接如下图所示:

eMMC简介_第4张图片

                                       图. eMMC接口

各个信号的用途如下所示:

CLK:用于同步的时钟信号。

Data Strobe:此信号是从Device端输出的时钟信号,频率和CLK信号相同,用于同步从Device端输出的数据。该信号在eMMC5.0规范中引入。

CMD:此信号用于传输Host的command和Device的response。

DAT0-7:用于传输数据的8bit总线。

Host与eMMC之间的通信都是Host以一个Command开始发起的。针对不同的Command,Device会做出不同的响应。详细的通信协议相关内容,请参考eMMC总线协议章节。

4.参考资料

1.Embedded Multi-Media Card (e•MMC) Electrical Standard (5.1) [PDF]

本文转自:蜗窝科技

你可能感兴趣的:(Linux驱动)