1.前言

eMMC总线操作包含:

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

本文主要描述device identification  mode,本模式下所有的数据通信都只在cmd line上完成,主要完成:

  • host reset device
  • 检查操作电压范围和访问模式
  • 识别设备
  • 指定bus上的device RCA(relative device address)

2.device identification mode

图 device identification mode

2.1 概要说明

  • 四种情况会进入idle state

. 完成boot操作;

. boot mode下cmd line保持电平时间少于74个时钟;

. power on后,如果不支持boot启动;

. 直接发送CMD0+0x00000000均将进入idle state,从此进入device identification mode的领地

  • 进入idle state后

. 输出总线将保持高阻态

. device的RCA 地址会被初始化为0x0001

. 驱动能力设置为默认;

. host提供clock时钟,此时钟为identification clock rate(fod)

  • CMD0+0x00000000

除了inactive state, CMD0+0x00000000在任何state下都是有效的,可以将device reset到idle state

注:为了向后兼容,除inactive state,任何状态下如果收到CMD0且参数不是0xffffffa或0xf0f0f0f0,device都将执行reset到idle state;

host在除了Inactive和Pre-boot状态之外使用CMD0+0xFFFFFFFA命令,设备会认为是重启命令且变为Idle状态。

  • 访问模式

. SEND_OP_COND(CMD1)命令和OCR寄存器包含了两个位来指明memory所支持的访问模式。

. CMD1内的两个位表明了host是否有能力处理sector寻址,而OCR寄存器内的两个位表明了设备是否支持sector寻址。

OCR寄存器的两个位只有在CMD1命令的最后一个      response中有效(也就是设备进入Ready状态后才有效)

若是host没有指明是否有处理sector寻址的能力的话,大约2GB的memory会把状态切换为Inactive

从OCR寄存器的两个位中,host可以把设备从其他byte寻址的设备中区别开来

. host发送CMD1时,如果device处于busy状态(power up/reset过程中),device会发送固定内容给host, 0x00FF8080(容量小于2GB)或者是0x40FF8080(容量大于2GB),  且不会变化到Inactive state,此时host必须重复发送CMD1直到busy bit被清除

. 若设备在进入Ready state时,表明CMD1执行完毕,device应该给主机回应0x80FF8080(容量小于2G)或0xC0FF8080( 容量大于2G)来表明大小

  • 工作电压

. host可能会改变设备的电压。若是host把设备的电压范围设置到一个新的范围,设备应该完全的关闭且以新的电压范围重新启动。 若是电压范围 1.95V-2.7V被使用,双电压设备可能会失败

. 初始化过程中不允许改变电压范围,如果确实需要改变电压范围,host必须要reset device(通过CMD0+0x000000000)然后重新执行初始化进程

. 如果要访问处于inactive state的device,必须执行硬件reset(掉电然后上电)

  • inactive state

在data transfer mode下,除sleep state外,其它任何状态下发送CMD15可在需要的时候让device进入inactive state

2.2 设备识别过程

图 设备识别过程

结合上图实例介绍device identification mode过程,环境说明如下:

. 有多个device

. 且向前兼容到规范4.0

. 开始执行devie identification过程时,host必须处在open-drain模式(CMD line为open-drian则允许在设备识别阶段多个设备并行操作)

. identification clock为fod

1.device被激活后(bus一般是进入idle state)后,host发送CMD1请求device发送它的有效的操作电压范围,如果不兼容的设备将进入inactive state,如果兼容设备将发送回应给host告知其电压操作条件

2.host发送CMD2,要求所有device回复它的CID,任何未识别设备(如处于ready state)一个一个发送CID给host

3.若是有些设备发送的CID和它们标示的CID不符合,则立即停止发送CID且必须等待下一个识别周期(保持在Ready状态), 因为CID是每个设备的唯一识别码,应只有一个设备成功的发送其全部的CID数字到host。此设备随即进入到Identification状态

4. 此后host发送CMD3(SET_RELATIVE_ADDR)命令来给此设备指定一个RCA(Relative Device Address),此RCA比CID码短且会在将来data transfer mode(一般clock rate会高于fod)中用于寻址设备

6.一旦device 收到RCA,device将进入stand by state, 且设备不会对未来的识别周期做出任何反应

7.device将open-drain调整为push-pull

8.host重复其识别过程,即,CMD2和CMD3命令,如果没有设备响应这个命令(通过识别超时),则认为所有device识别结束。

注:识别超时是发送CMD2之后超过Nid时钟周期之后没有device回应start位,则判定为识别超时。

3.参考文档

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

emmc基础技术8:操作模式2-device identification 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:操作模式1-boot mode

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

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

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

  6. eMMC基础技术4:eMMC command

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

  7. eMMC基础技术11:flash memory

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

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

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

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

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

随机推荐

  1. 洛谷 P2149 [SDOI2009]Elaxia的路线 解题报告

    P2149 [SDOI2009]Elaxia的路线 题目描述 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. Elaxia ...

  2. UVALive - 6439(思维题)

    题目链接:https://vjudge.net/contest/241341#problem/F 题目大意:给你一个字符串,你可以用任意单个字符代替其中的一个子串,使它形成一个回文串,要求形成的回文串 ...

  3. NOIP 普及组 2016 回文日期

    传送门 https://www.cnblogs.com/violet-acmer/p/9859003.html 题解: 思路1: 相关变量解释: year1,month1,day1 : date1对应 ...

  4. poj 3276(反转)

    传送门:Problem 3276 参考资料: [1]:挑战程序设计竞赛 先献上AC代码,题解晚上再补 题意: John有N头牛,这些牛有的头朝前("F"),有的朝后("B ...

  5. advancedsearch.php织梦高级自定义模型字段无法调用解决方案

    advancedsearch.php织梦dedecms 高级自定义模型字段无法调用解决方案 ,具体步骤如下: 1  打开修改puls/advancedsearch.php文件,找到复制代码(不同版本可 ...

  6. SQL Server 操作XML数据

    .xml.exist 输入为XQuery表达式,返回0,1或是Null.0表示不存在,1表示存在,Null表示输入为空 .xml.value 输入为XQuery表达式,返回一个SQL Server标量 ...

  7. python中的位运算符

    按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下,下表中变量 a 为 60,b 为 13,二进制格式如下: a = 0011 1100 b = 0000 1101 ----- ...

  8. 即将上线的YARN服务器面临的一系列填坑笔记

    即将上线的YARN服务器面临的一系列填坑笔记 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 折腾了一个星期,终于让开发将数据跑起来了,可通过yarn的webUI界面,发现这里的核心 ...

  9. 函数和常用模块【day05】:不同目录间进行模块调用(八)

    本节内容 1.背景 2.函数功能解释 3.绝对路径和相对路径 4.不同目录间进行模块调用 一.背景 之前写了软件开发目录规范这篇博客,相信很多人都已经知道,我们在写程序时需要遵循一定的规范,不然,就算 ...

  10. ElasticSearch 例子

    ElasticSearch是一个接近实时的搜索平台,它利用Lucese进行文档索引. 本文会写个可以运行的简单例子,方便大家上手,日后深入了解. 需要引入maven依赖 <dependency& ...