1.前言
本文主要从总体上对eMMC 进行简要介绍。主要包含如下的内容:
(1)eMMC系统的总体架构
(2)eMMC的总线协议
(3)分区管理
(4)设备寄存器
2.eMMC系统总体架构
图1 eMMC 系统总体架构
eMMC规范主要定义了Device Controller和接口的相关规范,如图中蓝色部分标识
- power部分
(1)VCCQ主要用于IO的供电也就是给eMMC内部的flash memory,VCC主要用于eMMC内部的Device Controller供电;
VCCQ和VCC分为两种电压,一种电压是high voltage(2.7v~3.6v),一种电压是dual voltage(1.70v~1.95v和2.7v~3.6v)
(2)VSSQ是IO的地也就是eMMC内部的flash memory的地,VCC是eMMC内部的Device Controller的地;
- bus部分
有11条数据线
(1)clk, 0~200MHZ,每个cycle可以在上升沿或下降沿传输,也可以在上升沿和下降沿都传输;
(2)data strobe,由slave device 发送给host controller,主要用在HS400 mode,频率与clk一致,用于同步接收device的data,response和CRC status;
(3)cmd,双向信号线,用于从host发送命令给device和device发送response给host,有两种操作模式:open drain和push pull
(4) 8 bit data bus,双向信号线,工作在push pull mode,支持 1bit, 4bit, 8bit传输,默认上电或reset后只有DATA0用于数据传输,可以通过命令配置。在device内部,DAT1~DATA7包含上拉电阻,平时不使用时保持上拉状态(也就是高电平??),使用时则断开上拉。
- Host Controller
通过发送CMD读写device端数据,并通过CMD对device端进行配置
- eMMC device controller
实现对memory的管理,接收bus端的CMD
3. eMMC总线协议
(1)包含三种token
command: 任何操作都要以CMD开始,只能由host发往device,且要串行完成;
response: 在接收到host端发送的CMD,device作为回应将通过command line发送一个response,只能有device发往host,且只能通过command line串行传输;
data: data可由host发送device(写)可以由device发往host(读),data线可采用1线,4线,8线传输,对于每条data线,可以选择单沿传输(single data rate)还是双 沿传输 (dual data rate)
注1:有些CMD是不需要发送respnse回应的,后面会有讲述
(2)device地址采用session地址,由host controller在初始化阶段指定???
(3)device通过CID进行识别;
(4)bus操作由CMD,response,data中的一种或几种组成,包括三种:CMD;CMD+response;CMD+response+data;
(5)读(写)数据时,data block后跟CRC bits,支持单个data block读(写)和multi blocks读(写),当multi blocks读(写)时,command发送stop命令表示读(写)结束;
(6)写数据时,device通过DATA0 的busy位来告知host当前block写入是否完成;
3.1 command token format
图2 cmd token format
总长度48bits;
固定以0开始,以1结束;
transmiter bit表示数据的传输方向,1代表从host to device;
通过CRC7保护,device 端在接收到CMD时同样会计算一个CRC值,如果与host发送的CRC不一致,则被认为是传输错误;
详情请参加 eMMC command
3.2 response token format
图3 response token format
有5种格式,使用哪种格式依赖于CMD,长度为48bits或136bits;
start bit 总是0,end bit总是1;
transmitter bit代表传输方向,0表示device to host;
详情请参见 eMMC response
3.3 1bit/4bit/8bit & sdr/ddr传输协议
(1) 1bit sdr传输
图4 1bit bus sdr传输
start bit + data + crc + end bit
1bit sdr只使用了DATA0数据线,对于1个block(block length=512BYTE)来讲,需要花费block length * 8 cycles
(2)4bit sdr传输
图5 4bit bus sdr传输
对于1个block(block length=512BYTE)来讲,需要花费block length * 8 / 4 = block length *2 cycles
(3)8bit sdr传输
图5 8bit bus sdr传输
对于1个block(block length=512BYTE)来讲,对于1个block(block length=512BYTE)来讲,需要花费block length * 8 / 8 = block length cycles
(4)4bit bus ddr传输

图6 4bit bus ddr传输
ddr传输时,上升沿和下降沿都会传输数据,对于1个block(block length=512BYTE)来讲,需要花费block lenght * 8 / 4 * 2 = block length cycles
(5)8bit bus ddr传输
ddr传输时,上升沿和下降沿都会传输数据,对于1个block(block length=512BYTE)来讲,需要花费block lenght * 8 / 8 / 2 = block length / 2 cycles
(6)8bit ddr for hs400
hs400 高电平或低电平用于传输数据,对于1个block(block length=512BYTE)来讲,需要花费block lenght * 8 / 8 / 2 = block length / 2 cycles
3.4 bus speed mode
3.5 eMMC操作模式
主要有5种操作模式:
1. boot mode
有三种情况会进入boot mode:上电;硬件reset信号;发送CMD0并带参数0xf0f0f0f0
2.device identification mode
如果boot mode完成或者host/device不支持boot mode,则会进入此模式,接收到CMD3(SET_RCA)会退出此模式
3. interrupt mode
4.data transfer mode
指定完RCA后,device进入此模式;host在identify device后进入此模式
5.inactive mode
三种途径进入此模式:操作电压非法;访问模式非法;通过CMD15(GO_INACTIVE_MODE)命令
4.分区管理
5. device 寄存器
