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
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的更多相关文章
- eMMC基础技术2:eMMC概述
0.前言 本文主要参考eMMC规范,从总体上对eMMC 进行简要介绍.主要包含如下的内容: (1)eMMC系统的总体架构 (2)eMMC的总线协议 (3)device controller (4)fl ...
- eMMC基础技术3:eMMC总线token
1.前言 本文主要介绍eMMC 总线协议相关的内容,主要包括: (1)command token format (2)response token format (3)data packet form ...
- emmc基础技术8:操作模式3-interrupt mode
1. 前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述inte ...
- emmc基础技术8:操作模式2-device identification mode
1.前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述devic ...
- emmc基础技术8:操作模式4-data transfer mode
1.前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述data ...
- eMMC基础技术9:分区管理
[转]http://www.wowotech.net/basic_tech/emmc_partitions.html 0.前言 eMMC 标准中,将内部的 Flash Memory 划分为 4 类区域 ...
- eMMC基础技术11:flash memory
[转]http://www.wowotech.net/basic_tech/367.html 0.前言 eMMC 是 Flash Memory 的一类,在详细介绍 eMMC 之前,先简单介绍一下 Fl ...
- eMMC基础技术1:MMC简介
[转]http://www.wowotech.net/basic_tech/mmc_sd_sdio_intro.html 1. 前言 熟悉Linux kernel的人都知道,kernel使用MMC s ...
- eMMC基础技术4:eMMC command
1.前言 本文主要对eMMC的command进行详细介绍,主要包含如下内容: (1)command类型 (2)command格式 2.command类型 command类型 说明 bc 不带respo ...
随机推荐
- 【LOJ#572】Misaka Network 与求和(莫比乌斯反演,杜教筛,min_25筛)
[LOJ#572]Misaka Network 与求和(莫比乌斯反演,杜教筛,min_25筛) 题面 LOJ \[ans=\sum_{i=1}^n\sum_{j=1}^n f(gcd(i,j))^k\ ...
- SqlServer存储过程详解
SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...
- [POI2012]BON-Vouchers----你敢模拟吗?
链接:https://www.luogu.org/problemnew/show/P3536 题意: 定义n个数为幸运数字,一共有n批人,设第i批人有x个,则它们会依次取走余下的x的倍数中最小的x个, ...
- servlet3.0获取参数与文件上传代码示例
转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98 package com.igeek.servlet; import ...
- (string find) 亲和串 hdu2203
亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- nginx 耗时原因定位总结
这几天在优化服务器的响应时间,在根据 nginx 的 accesslog 中 $request_time 进行程序优化时,发现有个接口,直接返回数据,平均的 $request_time 也比较大.原来 ...
- python自动化运维之路~DAY8
python自动化运维之路~DAY8 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.线程进程介绍 为了方便我们队线程和进程的理解,我们来画2组图,方便我们对python中的线程 ...
- python---session(最终版)__setitem__和__getitem__方法
一般来说对于其他语言session值一般获取方法为session['name'],赋值使用session['name']=val 对于python类中含有一些魔术方法__setitem__,__get ...
- spring-data-jpa初步认识
什么是spring data jpa? spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的[方法命名规则]写dao层接口,就可以在不写接口实现的情况下,实现对数据 ...
- Spark记录-SparkSQL相关学习
$spark-sql --help 查看帮助命令 $设置任务个数,在这里修改为20个 spark-sql>SET spark.sql.shuffle.partitions=20; $选择数据 ...