eMMC基础知识介绍ppt课件.pptx
eMMC基础知识介绍主要内容 eMMC的基本概念 eMMC总线和寄存器的相关介绍 eMMC的工作模式什么是eMMCueMMC全称是Embedded Multi Media Card(嵌入式多媒体卡)u由一个嵌入式存储解决方案组成,带有MMC接口、NAND Flash以及MMC控制器,这些结构都被封装在一个小型BGA中。u简单的来说,eMMC=NAND Flash + MMC控制芯片 + MMC标准接口。eMMC的优势ueMMC在内部集成了存储控制器,其中包含了协议、擦写均衡、坏块管理、ECC校验、电源管理、时钟管理、数据存取等功能。u相比于直接将NAND Flash接入到主机进行使用,eMMC屏蔽了NAND Flash的物理特性,这样减少了主机端软件的复杂度,让主机端专注于上层业务,省去了对NAND Flash 的特殊处理。u同时,eMMC还运用了缓存、存储阵列等技术,在读写性能上也比NAND Flash要好很多。u 因此,eMMC也逐渐成为了目前最常用的移动设备本地存储解决方案。eMMC与SD的关系eMMC和SD的技术本质是一样的,都是从MMC规范演化而来,使用相同的总线规范; u eMMC强调的是多媒体存储(MM,Multi Media); u SD强调的是安全和数据保护(S,Secure); 目前eMMC协议规范最新的版本是JESD84-B51,它规范了总线接口以及控制芯片,而对在系统架构中的主机和存储阵列部分的内容并没有未完全规定。 eMMC协议规范eMMC总线eMMC的总线由11条信号线组成,一条时钟信号线(CLK),一条数据选通信号线( Data Strobe ),一条命令信号线(CMD),八条数据信号线(DAT-7)。CLK用于从主机输出时钟信号,进行数据传输的同步和设备运作的驱动。在一个时钟周期内,CMD和DAT0-7上都可以支持传输 1 bit数据,即SDR(Single Data Rate)模式。此外,DAT0-7信号还支持配置为DDR (Double Data Rate)模式,在一个时钟周期内,可以传输 2 bits数据。Data Strobe是在eMMC 5.0中引入的一根时钟信号线。它是由eMMC发送给主机的,且频率与时钟线相同,用于和主机端进行数据接收的同步。该信号线只能在HS400模式下配置启用,启用后可以提高数据传输的稳定性。CMD线是双向命令通道信号线,用于主机向eMMC发送命令以及eMMC向主机回传应答。CMD线在上电后都是保持高电平状态,因此命令和应答数据的起始位都是“0”。下图就是命令和应答的具体格式。eMMC总线命令格式应答格式eMMC总线DAT线用于主机和eMMC之间的数据传输。在设备上电或者软复位后,只有DAT0可以进行数据传输,在eMMC完成初始化后,可通过命令CMD6配置DAT0-3或者DAT0-7进行数据传输,即将eMMC配置为 4 bits或者8 bits传输模式。但所有的传输模式下,数据块的结构都是大致相同的,都是由起始位“0”,数据,CRC16和停止位“1”这四部分组成的。以下是在不同传输模式下,数据块的格式。1bit SDR模式4bits SDR模式8bits SDR模式eMMC总线在双倍数据率模式下,DAT线在时钟的上升沿和下降沿都会传输数据,其中上升沿传输数据的奇数字节 (Byte 1,3,5 .),下降沿则传输数据的偶数字节(Byte 2,4,6 .),每条DAT线上都有两个相互交织的CRC16,上升沿的CRC比特组成 odd CRC16,用于校验该DAT线上所有上升沿比特组成的数据。下降沿的CRC比特组成even CRC16,用于校验该DAT线上所有下降沿比特组成的数据。8bits DDR模式4bits SDR模式eMMC传输速率随着eMMC协议的版本迭代,eMMC总线的速率越来越高。为了兼容旧版本的设备,所有设备在上电或者重启后,都会先进入兼容速率模式。在完成设备的初始化后,主机可以通过命令CMD6,让设备进入其他高速率模式。目前eMMC支持的传输速率如下表所示。主机就是通过命令对控制芯片的寄存器进行读写,来完成对eMMC的操作。控制芯片的寄存器主要有以下部分:OCR,工作条件寄存器,存放设备的电压信息概况和访问模式;CID,设备识别寄存器,存放设备在识别阶段所使用到的设备识别信息。每个设备都有一个独一无二的识别号;RCA,相对地址寄存器,存放设备在识别阶段主机分配的设备地址。此地址用于设备识别之后主机与设备之间的寻址通讯;CSD,数据寄存器,寄存着设备内容访问方式的信息,其中定义了数据格式、读写数据块的大小、最长数据访问时间、数据传输速度、DSR寄存器是否可用等。EXT_CSD,扩展数据寄存器,定义了设备属性和选定的模式。它长512 字节,高320位字节是属性段,定义了设备能力,不能被主机更改。低192位字节是模式段,定义了设备的工作配置。主机可以被通过SWITCH命令(CMD6)改变这些配置。DSR,驱动寄存器,用于扩展操作条件以提高总线性能(取决于总线长度、传输速率或设备数等参数)。QSR,队列状态寄存器,存储着在特定时间点队列中的任务状态。eMMC控制芯片eMMC标准中,内部的存储空间被划分为了4类区域,最多可以支持8个硬件分区。u 引导分区,存储引导信息;u RPMB分区,存储一些有防止非法篡改需求的数据,如:手机上指纹支付相关的公钥、序列号等;u 通用分区, 属于可选分区,可以为分区设置一些额外的属性,比如:提高该分区的读写性能、寿命以及稳定性或者将这些用来作为存放操作系统类的、很少进行擦写更新的分区等。u 用户数据分区;eMMC分区eMMC启动流程1、上电eMMC上电后,会进入到pre-idle状态,除此之外,eMMC还可以通过以下两种方法进入到pre-idle状态1)软件复位,设备收到从主机发来的GO_PRE_IDLE_STATE命令(参数为 0 xF0F0F0F0的CMD0);2)硬件复位,可以通过主机拉高RST_n信号线来触发。、eMMC确认是否需要进入引导模式eMMC的寄存器位BOOT_PARTITION_ENABLE(EXT_CSD byte 179)中有引导配置。eMMC可以通过这些配置确认是否需要进入引导模式以及引导分区。如果没有启用引导模式,那么eMMC将直接进入到idle状态。eMMC启动流程3、eMMC进入引导模式如果启用了引导模式,并且检测到CMD线被拉低了74个时钟周期后,eMMC就会进入引导模式,并开始准备向主机发送引导数据。在CMD线被拉低1秒之内,eMMC开始在DAT线上向主机发送引导数据。主机在读取引导数据时,必须保持CMD线为低。如果eMMC启用了引导确认,那么eMMC必须在CMD线被拉低50ms之内向主机发送 数据“010”,确认引导模式。当引导数据全部发送到主机后,引导操作将结束。在执行引导操作之后,主机需要通过发送CMD1,启动eMMC的正常初始化流程。 4、替代的引导操作 如果启用了引导模式,并且检测到CMD线维持在高电平74个时钟周期后,收到了参数为0 xFFFFFFFA的CMD0命令,eMMC同样会进入引导模式,并开始准备向主机发送引导数据。eMMC启动流程eMMC启动流程5、idle状态eMMC在退出引导模式后,会进入到设备识别模式中的idle状态。如果没有启用引导模式,上电、硬件重置或软件重置后,都会使eMMC进入 Idle状态。在idle状态下,eMMC会进行内部初始化,此时主机需要持续发送 CMD1命令,查询eMMC是否已经完成初始化,同时确认eMMC的工作电压和寻址模式。 主机发送的CMD1命令中,包含了主机所支持的工作电压和寻址模式信息,eMMC在接收到这些信息后,会进行匹配。如果 eMMC和主机所支持的工作电压和寻址模式不匹配,那么eMMC会进入 Inactive状态。要访问已经处于Inactive状态的eMMC,主机就必须通过关断并重开电源来进行硬复位。eMMC启动流程5、设备识别模式eMMC完成内部初始化后,会进入Ready状态。主机可以通过发送CMD2广播命令获取总线上所有进入Ready状态的eMMC的CID。总线上所有处于Ready状态的eMMC在接收到CMD2后,都会发送其CID,同时逐比特地监视其输出的比特流,那些在任何一个比特周期内,输出的CID比特与CMD线上相应比特不匹配的设备,会立即停止发送其CID,并等待下一个识别循环。由于每张eMMC的CID都是唯一的,因此最后只会有一张eMMC能成功地发送完整的CID到主机,并进入到Identification状态。 接下来,主机发送CMD3赋予这个eMMC一个相对设备地址(RCA) ,使设备进入到Stand-by状态 。到这里,主机就可以对eMMC进行正常的读写操作了。eMMC传输模式 主机可以通过命令CMD7,将指定的eMMC从Stand-by状态切换到Transfer状态,然后对eMMC进行读写操作。主机向eMMC发送读取命令后,eMMC会根据命令参数,向主机发送对应的数据块,发送结束后,eMMC会重新进入Transfer状态。主机向eMMC发送写入命令后,eMMC会根据命令参数,接收从主机发来的数据块,每接收一个数据块,eMMC都会进行CRC校验,校验无误后,eMMC会进入Programming状态,将数据块烧录进NAND Flash里,同时还会将DAT0信号拉低,直到烧录结束。烧录结束后,eMMC返回到Transfer状态。eMMC传输模式主机从eMMC读取数据的流程图。eMMC传输模式主机从eMMC写入数据的流程图。Thank you !