eMMC在启动模式,eMMC的host想要读取boot data,可以把CMD line 保持低电平74个clock周期或者发送CMD0带0xFFFFFFFA。至于是从哪个分区读取,是由PARTITION_CONFIG【179】(Extend CSD 【179】的bits【5~3】,power cycle后保留)决定。
Boot mode有两种:Boot Operation和Alternative Boot Operation。eMMC是否支持此两种方式,可以参考BOOT_INFO【228】,一般都设置为0x07,代表都支持两种Boot mode。
Boot Operation
如上是Boot Operation的示意图,可以化为以下Flow。
CMD line go low,保持74个clock(初始化成功,Nand准备送boot data给eMMC的host)→50ms内在DAT0 line发送acknowledge pattern“010”(如果PARTITION_CONFIG【179】的bit6有标记为1)→1s内发送第一笔boot data→发送完boot data,CMD line拉高→至少56个clock后,发送CMD1。
Alternative Boot Operation
如上是Alternative Boot Operation的示意图,可以化为以下Flow。
Clock稳定保持74个clock,发送CMD0带0xFFFFFFFA(初始化成功,Nand准备送boot data给eMMC的host)→50ms内在DAT0 line发送acknowledge pattern“010”(如果PARTITION_CONFIG【179】的bit6有标记为1)→1s内发送第一笔boot data→发送完boot data,发送CMD带0x00000000或者RESET→发送CMD1。
在Boot Operation时,要重点关注以下寄存器:
BOOT_SIZE_MULT【226】、BOOT_INFO【228】、BOOT_BUF_CONDITIONS【177】、
PARTITION_CONFIG【179】
Open Drain与Push Pull区别
OD最高支持400KHz,PP支持52MHz,Boot Operation需要read data,所以用PP;
CMD line可以在OD和PP工作;
DATA【7:0】、CLK、DS可以在PP工作;