最近产品的eMMC出了些问题,针对问题读了 Embedded Multi-Media Card (eMMC) Electrical Standard (5.1) JESD84-B51相关章节,对eMMC的启动流程记录如下。 上图为eMMC上电流程,步骤如下: 1. VCC和VCCQ上电,无时序要求; 2.上电后eMMC进入pre-idle状态,每种供电电压的启动时间必须在规定范围内(tPRU); 3. 如果eMMC不支持boot模式,或BOOT_PARTITION_ENABLE位被清除,进入idle状态,在此状态下,只响应CMD1指令,如果是v4.2或之前版本,上电后直接进入idle状态; 4. 如果BOOT_PARTITION_ENABLE被置位,eMMC进入pre-boot状态,然后等待boot初始化流程,在boot操作之后,eMMC进入idle状态。在pre-boot期间,如果eMMC收到除boot初始化序列和CMD1之外的命令,eMMC进入idle状态。如果eMMC收到boot初始化序列,那就开始boot操作。如果boot ack使能,eMMC在规定时间内对host发送010。boot操作完成后,eMMC进入idle状态并准备CMD1操作。如果eMMC在pre-boot阶段收到CMD1命令,开始对返回命令,进入card identification状态; 5. 在idle状态下,eMMC只响应CMD1命令; 6. CMD1是特定的同步指令,可用于协商电压范围,轮询设备状态直到完成上电。上电未完成的设备,其对CMD1的返回包括一个busy标志位,表示设备还在上电过程,还不能被识别。设备必须在收到第一个CMD1的1s内完成初始化流程,其电平必须在有效的OCR范围内。如果eMMC设备在之前被设置过EXT_CSD byte【155】 bit0 PARTITION_SETTING_COMPLETED,初始延时就不再是1s,而是由EXT_CSD byte【241】 INI_TIMEOUT_PA来计算。这个超时时间仅用于设置后的第一次启动,对于所有连续的初始化,还是使用1s超时。 7. 上电完成后,host开始发送CLK和CMD; 8. 每组总线master必须执行CMD1;