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

eMMC基础技术8:操作模式1-boot mode的更多相关文章

  1. eMMC基础技术2:eMMC概述

    0.前言 本文主要参考eMMC规范,从总体上对eMMC 进行简要介绍.主要包含如下的内容: (1)eMMC系统的总体架构 (2)eMMC的总线协议 (3)device controller (4)fl ...

  2. eMMC基础技术3:eMMC总线token

    1.前言 本文主要介绍eMMC 总线协议相关的内容,主要包括: (1)command token format (2)response token format (3)data packet form ...

  3. emmc基础技术8:操作模式3-interrupt mode

    1. 前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述inte ...

  4. emmc基础技术8:操作模式2-device identification mode

    1.前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述devic ...

  5. emmc基础技术8:操作模式4-data transfer mode

    1.前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述data ...

  6. eMMC基础技术9:分区管理

    [转]http://www.wowotech.net/basic_tech/emmc_partitions.html 0.前言 eMMC 标准中,将内部的 Flash Memory 划分为 4 类区域 ...

  7. eMMC基础技术11:flash memory

    [转]http://www.wowotech.net/basic_tech/367.html 0.前言 eMMC 是 Flash Memory 的一类,在详细介绍 eMMC 之前,先简单介绍一下 Fl ...

  8. eMMC基础技术1:MMC简介

    [转]http://www.wowotech.net/basic_tech/mmc_sd_sdio_intro.html 1. 前言 熟悉Linux kernel的人都知道,kernel使用MMC s ...

  9. eMMC基础技术4:eMMC command

    1.前言 本文主要对eMMC的command进行详细介绍,主要包含如下内容: (1)command类型 (2)command格式 2.command类型 command类型 说明 bc 不带respo ...

随机推荐

  1. LOJ #6202. 叶氏筛法(min_25 筛)

    题意 求 \([L, R]\) 之间的素数之和 . \(L≤10^{10},2×10^{10} \le R \le 10^{11}\) 题解 一个有点裸的 min_25筛 ? 现在我只会筛素数的前缀和 ...

  2. 投入机器学习的怀抱?先学Python吧

    前两天写了篇文章,给想进程序员这个行当的同学们一点建议,没想到反响这么好,关注和阅读数都上了新高度,有点人生巅峰的感觉呀.今天趁热打铁,聊聊我最喜欢的编程语言——Python. 为什么要说Python ...

  3. [虚树模板] 洛谷P2495 消耗战

    题意:给定树上k个点,求切断这些点到根路径的最小代价.∑k <= 5e5 解:虚树. 构建虚树大概是这样的:设加入点与栈顶的lca为y,比较y和栈中第二个元素的DFS序大小关系. 代码如下: i ...

  4. jar文件放在桌面上双击启动不了,但放在其它任何文件夹里都可以双击启动

    今天本来是想尝试一下Java Network Launching Protocol (JNLP,java网络加载协议) 的,写了一个简单的窗口程序,打包成jar保存到桌面上,双击等了半天没显示出来. ...

  5. javascript高级程序设计第一章有感

    第一章JavaScript简介 Javascript的诞生最早是为了处理表单数据验证的问题,以前主要是使用perl这个强大的服务端脚本语言处理的.在未诞生javascript之前, 人们每次提交表单就 ...

  6. 安装office自定义项,安装期间出错

    由于安装vs2013,导致excel打开时出现问题 [解决方案] 开始菜单-excel图标处,右键快捷菜单-以管理员身份运行-新建空白工作簿 文件-选项-加载项-管理中选择COM加载项,转到-删除Lo ...

  7. mysql -- 索引补充

    .unique索引补充:联合唯一 unique(name,email)是name和email这两列联合起来唯一,不再试某个字段唯一 .主键索引,类似唯一索引,也是允许联合多个字段作为主键,例如:pri ...

  8. ajax跨域原理和cors跨域资源共享

    不需要设置前端太多,只需要在服务端是在请求头,使服务端的回复数据可以正常通过浏览器的限制,进入网站 首先说下简单请求和非简单请求: 简单请求:必须满足下列条件 1.请求方式:head,get,post ...

  9. JAVA记录-POST与GET方式区别

    1.get是从服务器上获取数据的一种请求,post是向服务器提交数据的一种请求. 2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到 ...

  10. js event 冒泡和捕获事件详细介绍【转】

    冒泡和捕获 冒泡: 事件从内向外,从下向上执行 (默认行为) 捕获: 事件从外向内,从上向下执行 vue之capture 捕获事件 capture.html <!DOCTYPE html> ...