原创 eMMC Boot流程

2023-8-31 17:14 1897 10 6 分类: 处理器与DSP 文集: 存储
根据JESD84-B51描述,eMMC支持两种boot方式,拉低CMD并读取boot数据,或者发送CMD0参数为0xFFFFFFFA。在V4.4之后,eMMC需要支持两种boot方式。
Boot分区
eMMC默认分区包括存储数据的User Data Area,2个可能的Boot Area(规格由存储器制造商制定),和以认证和应答保护的方式来管理数据的Reply Protected Memory Block Area Partition。
每个Boot分区的最小单位是128KB,可以通过寄存器 EXT_CSD byte【226】来设置大小。
eMMC通过配置EXT_CSD byte【179】,Master通过CMD6来选择boot启动区域。
Boot操作
在上电或复位之后,如果没有其他命令发送,保持CMD拉低并至少持续74个时钟周期之后(或者发送参数为0xF0F0F0F0的CMD0,或者配置完EXT_CSD byte【162】 bit【1:0】之后使用硬件复位),slave开始初始化boot mode,开始内部准备boot data。
在CMD拉低的1s内,slave开始在data线上发送boot data,master在读取boot data期间要保持CMD为低。master在boot操作期间保持push-pull模式。
Master可以选择后向兼容的单倍数据速率接口时序,也可以选择双倍速率接口时序,通过EXT_CSD byte【177】 bit【4:3】来配置。
Boot期间不支持HS200和HS400。
通过设置EXT_CSD byte 179 bit 6 为 1,master可以选择接收boot ACK,master可以确认slave在boot模式。
如果使能boot ACK,slave必须在CMD拉低的50ms内发送“010”。如果boot ACK没有被使能,slave将不会发送 “010”。
在单倍数据速率模式下,device发送data,host在clk上升沿采样,每个数据线都有单独的CRC。
在双倍数据速率模式下,device发送data,host在clk上升沿和下降沿采样,每个数据线有两个CRC。在这种模式下,每个block的长度为512bytes,bytes以4bit或8bit交替出现,奇数bytes在clk上升沿采样,偶数bytes在clk下降沿采样。
所有DAT线上的时序都要符合DDR时序,开始位,结束位和boot ACK都是上升沿有效。
Master将CMD拉高时可以中止boot模式,如果master在数据传输阶段拉高CMD,slave会中止数据传输或者在Nst时钟周期(一个数据周期和结束位周期)内确认模式。如果Master在连续传输时中止boot模式,slave必须在Nst个时钟周期内释放数据线。
在所有boot数据发送到master后,boot操作就会终止。在boot操作执行之后,slave会准备好接收CMD1,master需要开始发送CMD1指令。

以上为标准的Boot流程,还有一种Boot方式是将CMD来低改为CMD0参数为0xFFFFFFFA的方式来完成,其他相同,方式如下图。

作者: durid, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3879560.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /3 下一条