eMMC基础技术8:操作模式1-boot mode

1.前言

eMMC总线操作包含:

  • boot mode
  • device identification mode
  • interrupt mode
  • data transfer mode

本文主要描述boot mode。

2. boot operation mode

2.1 boot mode状态机

 

图 eMMC boot mode state

  •  pre-idle state

. 三种方式可以进入pre-idle状态:(1)power on后;(2)GO_PRE_IDLE_STATE命令(CMD0+0xf0f0f0f0参数);(3)hw reset by host

. GO_PRE_IDLE_STATE或hw reset assert后,device端output bus将呈现高阻态,device的初始地址被设置为0x0001,bus会有默认的驱动能力

. device可以检测到rst_n产生一段脉冲信号,通过上升沿来确定device是否发生了reset操作

. 有两个boot分区,每个分区大小最小为128KB,boot分区与user area是分离的,单独编址

. 可以使用CMD6来设置BOOT_PARTITION_ENABLE=1从boot area启动(否则从user area启动),进入到pre-boot state,如果BOOT_PARTITION_ENABLE=0或不支持boot mode(4.2以前的版本)则直接进入到idle state

  • pre-boot state

. 上电或reset后且发送第一个命令CMD1之前,CMD LINE要保持至少74个周期的低电平,device识别到,进入boot state执行初始化,并准备boot data

  若是CMD lines没有保持74个时钟周期的LOW,又若是host在初始话过程之前发送任意的正常eMMC命令的话,slave应该没有任何反应且会退出boot mode到Idle State状态即card identification mode

注:CMD0+0xfffffffa执行alternative boot初始化是针对4.4的规范,CMD LINE不是保持74个周期的低电平,而是通过发送CMD0,并带有参数0XFFFFFFFA

  • boot state

主要进行boot数据的读取操作:

. host要读取的分区以及data size可以通过extended csd来设置

. 通过保持CMD line低电平或发送CMD0+0XFFFFFFFA来读取boot数据

. 在读取数据期间,cmd line必须保持低电平

. host必须采用push-pull模式,直到boot mode结束

. host可以采用single data rate(SDR)或dual data rate(DDR)

. HS200 & HS400在boot mode不支持

. host可以设置是否从device接收boot acknowledge

. 通过拉高CMD line则会终止boot mode进入idle state,从此离开boot mode 进入到card identification mode

注1:在SDR模式中,数据由设备发出的时钟控制而host则在时钟上升沿取样。而且每一个data line都有一个单独的CRC内容。
注2:在DDR模式中,数据则会在时钟的上升和下降沿同时取样,而且每一个data line有两个CRC内容。在这个模式下,block长度总是为512 bytes,而且数据会以4bit或者8bit模式交叉出现。奇数bytes(1,3,5……511)会被host在时钟上升沿取样,而偶数bytes(2,4,6……512)则被host在时钟的下降沿取样。设备会附加两个CRC16到每个有效地data line上(若是4bit数据模式,则有4个line是无效的),一个对应上升沿的奇数bytes,一个对应下降沿的偶数bytes。
注3:所有DAT lines的时序都应该按照DDR时序来。开始bit,结束bit 还有boot acknowledge只在时钟的上升沿有效。如果这些数据出现在下降沿是没用的。

2.2 boot mode时序

图 boot mode时序

进入boot state后:

. 若是boot acknowledge被激活,在CMD信号变LOW之后的50ms之内,slave必须发送acknowledge内容"010"到host。若是boot acknowledge没被激活,slave不会  发送;

.在CMD line变低的1S内,device 必须发出第一个数据给host;

.host必须保持CMD信号为LOW来读取所有的boot数据, host必须使用push-pull模式

.当boot数据读取操作完成,boot操作将会终止;

.通过拉高CMD line则会终止boot mode进入idle state,从此进入card identification mode

.当拉高CMD line后需要经过至少56个clock,才可以发送CMD1

注1:host选择从哪个partition读取boot数据是可以被提前设置的(EXT_CSD byte[179], bits[5:3]). Master可以读取的boot数据大小也是可以计算的(128KB x BYTE_SIZE_MULT (EXT_CSD byte[226]))

注2:host可以通过设置EXT_CSD byte[179],bit 6来选择是否从slave接受acknowledge,若是选择接受host可以通过acknowledge确认slave是在boot模式中运行。

注3:在数据传输阶段若是host把CMD拉高,slave必须在Nst个时钟周期内中终止数据或者acknowledge内容的传输。Nst值为一个数据周期和一个结束bit周期。若是在block传输过程中,master终止了boot模式,则slave必须在Nst个时钟周期内释放data lines。

3.参考文档

[1]http://www.jedec.org/sites/default/files/docs/JESD84-B51.pdf

[2]eMMC启动过程  http://blog.sina.com.cn/s/blog_6cb8cdbd0102vno5.html

 

转载于:https://www.cnblogs.com/smartjourneys/p/6663561.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EMMC Boot Mode,即Embedded Multi-media Card Boot Mode,是指一种基于嵌入式多媒体卡(EMMC)技术的启动模式,在这种模式下,设备能够利用EMMC内置的控制器直接从存储介质加载并运行操作系统或者引导程序。 EMMC是一种将存储器芯片、控制器、以及必要的信号处理电路集成在同一封装内的闪存解决方案。这种集成设计使得EMMC成为消费电子产品如智能手机、平板电脑等的理想选择,因为它提供了一种紧凑、可靠、低功耗的方式来存储大量的数据和操作系统映像。 在EMMC Boot Mode中,系统通常采用如下流程进行启动: 1. **电源上电**:当系统接通电源后,初始化过程开始。CPU首先检测是否有足够的电压供应,并准备启动过程。 2. **BIOS/UEFI查找**:在传统PC中,系统可能会通过传统的BIOS启动自检(BIOS POST)阶段来寻找启动项。而在基于EMMC的系统中,这一阶段被重新配置,系统不再依赖于物理硬盘或者其他非易失性存储器的BIOS芯片,而是直接从EMMC中获取引导程序的信息。 3. **查找引导扇区**:系统会查找预设的启动扇区。这个扇区包含了引导程序的位置和其他必要信息,指引系统如何从EMMC中加载操作系统的映像文件。 4. **加载并执行引导程序**:找到启动扇区后,系统将引导程序从EMMC加载到内存中。这通常是一个小型的二进制文件,负责解析启动参数、定位操作系统镜像位置、并将控制权移交给操作系统内核。 5. **启动操作系统**:一旦引导程序成功执行,它就会继续加载操作系统内核、驱动程序以及其他必要的系统组件,最终进入用户界面。 通过EMMC Boot Mode,现代移动设备能够实现快速启动、高效的电源管理以及紧凑的设计,这些都是基于传统硬盘或独立Flash存储解决方案难以达到的优势。随着技术的发展,EMMC也在不断进化,提供更大的容量、更快的速度以及更长的使用寿命。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值