[元带你学: eMMC协议详解 11] Data transfer mode 数据传输模式

news2025/6/8 20:22:31

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载

所在专栏 《元带你学: eMMC协议详解》

全文2300 字, 主要介绍数据传输模式,本节数据传输模式图非常重要。数据传输模式图可以说是我查对过最频繁的图之一了。eMMC 限定了这么多State, 什么命令要在什么State 下? 下了什么命令后又变成什么State? 都是严格规定的。很多时候命令出现异常应首先排查这里。


当设备处于待机状态时,通过CMD和DAT线的通信将以推拉模式进行。主机发出SEND_CSD (CMD9)来获取设备特定数据(CSD寄存器),例如块长度、设备存储容量、最大时钟速率等。

 图 eMMC state 图(data transfer mode)

这张图可以说是我查对过最频繁的图之一了,eMMC 要说一点也不简单,就这个图, 搞了五六年也不一定全记得全, 关键时刻还是要对照图看看。

吐槽一下

eMMC 限定了这么多State, 什么命令要在什么State 下? 下了什么命令后又变成什么State? 都是严格规定的。有点自缚, 限制了自己。无论是主机端和设备端, 都被这个束缚住, 但又不能不遵守。又一步不对就是踩到红线了。

为什么要遵守协议?

协议就是行业里的规范,商业合同一般都会写上,如果有品质问题, 以协议为标准, 谁没有遵照协议谁就赔钱。就好比A 家生产螺丝钉, B 家生产螺帽, 如果有一家不遵照螺丝行业协议, 螺丝钉就套不进螺帽。

怎么保证是在正确的 State 发送的命令呢?

发生命令前, 先发送 CMD13 查询下当前的状态是什么? 基本上CMD13 在很多状态下都可以下的, 它可以返回当前eMMC 在什么State。 如果当前State 不满足,就一直发生 CMD13 查询。

再比如eMMC 现在在收发数据, 如果不想要它执行这笔任务了,想让它提前终止回到传输模式, 主机可以下CMD12 来Stop. 这样即可快速回到 transfer state, 继而可以发送下一个命令。

在prg状态下,busy (会把DAT0 拉low)一直处于active状态。由于遗留原因,在prg状态(忙时为活动状态)期间,设备可能仍然将CMD24/25视为合法或非法命令。当设备处于prg状态和busy时,主机不应该发送CMD24/25。

 

当设备处于待机状态时,CMD7通过设备的相对地址来选择设备并将其置于传输状态。如果设备之前被选中并且处于传输状态,那么它与主机的连接将被释放,并且当CMD7使用不等于设备自己的相对地址的地址, 取消选择设备时,它将移回备用状态(Stby)。当CMD7带地址“0x0000”(保留的相对设备地址)时,设备被放回到待机状态。

在设备被分配RCA后,它将不再响应识别命令——CMD1、CMD2或CMD3。当设备处于断开状态时,CMD7通过在参数中包含设备的相对地址来选择设备并将其置于编程(Program)状态。如果设备先前被选中并处于编程状态,则其与主机的连接将被释放。数据传输模式下的所有数据通信都是在主机和所选设备之间进行点对点通信(使用寻址命令)。所有寻址的命令都在CMD线上得到响应。总结了各种数据传输方式之间的关系。所有的数据读取命令都可以在任何时候通过stop命令(CMD12)终止。数据传输将终止,设备将返回到传输状态。

读命令包括:块读(CMD17)、多块读(CMD18)、发送调优(CMD21)和发送写保护(CMD30)。所有的数据写命令都可以在任何时候通过stop命令(CMD12)终止。在通过CMD7取消选择设备之前,必须停止写命令。

写命令包括:块写(CMD24和CMD25)、CID写(CMD26) 和 CSD写(CMD27)。一旦数据传输完成,设备将退出数据写入状态,并进入编程状态(传输成功)或传输状态(传输失败)。如果停止块写操作,并且最后一块的块长度和CRC有效,则将对数据进行编程。设备可以为块写入提供缓冲。这意味着下一个块可以在前一个块被编程时发送到设备。对于写CSD、写CID、写保护和擦除,没有缓冲选项。这意味着,当设备忙于处理这些命令中的任何一个时,将不接受其他数据传输命令。只要设备处于繁忙和编程状态,DAT0线就会保持低电平。当设备正在编程时,不允许使用参数集命令。

参数设置命令有:设置块长度(CMD16)和擦除组选择(CMD35-36)。

设备正在编程时不允许使用读命令。

CMD7将另一个设备从待机状态移动到传输状态,不会终止编程操作。设备将切换到断开状态,并将释放DAT0线。

在断开连接状态下,可以使用CMD7重新选择设备。在这种情况下,设备将移动到编程状态并重新激活忙指示。

如果主机只连接一个eMMC 设备, 基本上很少用到CMD7。 因为就一个设备,又没有别的选择,就一直选择它好了。如果连接了多个eMMC 设备, 在多个eMMC 之间频繁切换, 发生读写任务,切换的时候就要取消选中当前eMMC, 选中下一个eMMC. 

狡兔三窟, 才会费脑子想晚上睡哪个洞府呢。

咱刚需就一套房子, 还用想晚上睡哪套房子吗?

Reset重置设备(使用CMD0、CMD15或e-MMC硬件重置)或电源故障将终止任何未决或正在进行的编程操作。这可能会使操作所寻址的部分或全部数据处于未知状态,除非启用了可靠写入。主机有责任防止这种情况发生。

免责声明

本文根据公开信息整理,旨在介绍更多的存储知识,所载文章仅为作者观点,不构成投资或商用建议。本文仅用于学习交流, 不允许商用。若有疑问或有侵权行为请联系作者处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库基础——6.排序与分页

这篇文章来讲一下数据库的排序与分页 目录 1.排序数据 1.1排序规则 1.2 单列排序 1.3 多列排序 2.分页 2.1 背景 2.2 实现规则 2.3 拓展 1.排序数据 1.1排序规则 使用 ORDER BY 子句排序 ASC(ascend):升序 ; DESC&a…

怎么一键保存浏览器中打开的所有标签页?

2023年5月28日,周日晚上: 被这个问题困扰很久了,之前一直不知道怎么全部保存浏览器中打开的所有标签页,浪费了不少的时间,今天下午偶然发现了解决办法。 很简单,直接在浏览器里使用快捷键“CtrlShiftD” …

本周大新闻|传Meta与Magic Leap谈专利授权;PS VR2前6周出货60万台

本周XR大新闻,AR方面,苹果XR项目核心高管曝光;传Meta与Magic Leap洽谈专利授权合作;歌尔光学公布新一代AR显示模组;Lumus公布二代波导Z-Lens最新细节;JBD X-cube发布全彩Micro LED光机Hummingbird&#xff…

我用GPT写了一个关于GPT的文章,大家看看写的如何

声明:以下内容来自GPT-3.5大模型(图片除外) 目录 I. 引言 1.1 研究背景和意义 1.2 现有研究综述 II. ChatGPT技术介绍 2.1 ChatGPT技术原理 2.2 ChatGPT技术优势 III. ChatGPT技术在智能客服中的应用和挑战 3.1 ChatGPT技术在智能客…

【TOP生物信息】使用Seurat包自带的方法进行单细胞类型注释

扫码关注下方公粽号,回复推文合集,获取400页单细胞学习资源! 本文共计1318字,阅读大约需要4分钟,目录如下: 方法简介演示数据来源代码演示小结代码参考往期单细胞系统教程 单细胞自动注释细胞类型的软件和…

华为OD机试真题B卷 Java 实现【查字典】,附详细解题思路

一、题目描述 输入一个单词前缀和一个字典,输出包含该前缀的单词。 二、输入描述 单词前缀字典长度字典。 字典是一个有序单词数组。 输入输出都是小写。 三、输出描述 所有包含该前缀的单词,多个单词换行输出。 若没有则返回-1。 四、解题思路…

Java的包:提高代码可维护性和可扩展性的神器

🧑‍💻CSDN主页:夏志121的主页 📋专栏地址:Java基础进阶核心技术专栏 目录 🍔 一、包名 🧆 二、类的导入 🥘 三、静态导入 🥘 四、在包中增加类 🍱 五、…

腾讯云服务器地域有什么不同?地域怎么选?

腾讯云服务器地域有什么区别?怎么选择比较好?地域选择就近原则,距离地域越近网络延迟越低,速度越快。关于地域的选择还有很多因素,地域节点选择还要考虑到网络延迟速度方面、内网连接、是否需要备案、不同地域价格因素…

Docker环境下将已运行的容器打包成新的镜像并运行在另一个服务器上的Docker容器中

1、 查看当前运行的容器 1.1、使用root账户登录进入Linux系统中,键入docker ps命令。 2、打包容器为镜像包 2.1、正在运行的容器一行中CONTAINER ID一列下面的字符串就是容器id,复制想要打包的容器ID并执行docker commit 容器id 容器新名称 例如&…

Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53

一、前言 通过以下系列章节: docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 我们对Seata及其AT事务模式有了基础的了解,今天我们通过搭建Spring Boot集成Seata示例…

组合总和--纯垃圾内容别看,浪费时间

1题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选…

[电脑使用技巧]Windows 11安装安卓手机APP

如果你的电脑已经运行Windows 11,经常在电脑和手机来复制内容,那我们为什么不在Windows 上实现安卓APP的应用呢?其实操作真的非常简单,我们接下来给大家分享下如何实现在Windows 11的系统上安装的app。只要按照下面的步骤逐个完成你就可以开启…

ffmpeg编译成wasm

最近在看ffmpeg的源码 https://ffmpeg.xianwaizhiyin.net/ffplay/ https://crifan.github.io/media_process_ffmpeg/website/audio_process/ 做个可运行的例子 代码在找了一堆,可用的版本放在这 https://github.com/killinux/ffmpeg_wasm_demo 先把ffmpeg 编译成 …

50 Projects 50 Days - Scroll Animation 学习记录

项目地址 Scroll Animation 展示效果 Scroll Animation 实现思路 HTML结构比较简单,就是10个盒子元素。当鼠标滚动时,盒子分别从左右移动过来。 思路上最开始想到的是给每一个盒子标记一个序号,滚动屏幕后,计算已经划动屏幕的…

C++ - 非类型模版参数和模版的特化

目录 非类型模版参数 模版的特化 函数模版特化 类模版特化 全特化 半特化(偏特化) 参数更进一步的限制 非类型模版参数 在之前学过的例子来看,我们使用模版,它们的参数都是类型模版,根据类型来决定实例化 而模版其实还有一种参数&…

通过Python的pdfplumber库提取pdf中表格数据

文章目录 前言一、pdfplumber库是什么?二、安装pdfplumber库三、查看pdfplumber库版本四、提取pdf中表格数据1.引入库2.定义pdf文件路径3.打开pdf文件4.获取pdf文件中的页数5.遍历每一页6.获取当前页内容7.提取表格数据8.输出表格数据9.效果 总结 前言 大家好&#…

聊聊美剧202306

刚把《黄石》系列看完,决定写点最近看的美剧,总共十一部,小评一下,写点东西~ 《黄石》 《黄石》已经到第五季了,看样子还得继续拍。刚开始看《黄石》的时候,确实有种陷进去的感觉,很美很宏伟的电…

leetcode 264.丑数

题目描述跳转去leetcode 给你一个整数 n ,请你找出并返回第 n 个 丑数 。 丑数 就是只包含质因数 2、3 和/或 5 的正整数。 来源:leecode:https://leetcode.cn/problems/ugly-number-ii/ 解法1, 动态规划 定义一个数组用来记录前…

VMware Workstation 安装 AlmaLinux 9.2

VMware Workstation 安装 AlmaLinux 9.2 AlmaLinux 9.2 镜像下载AlmaLinux 9.2 安装创建新用户配置免密 sudo 到 root 用户配置 ssh key 登录挂载新磁盘 AlmaLinux 9.2 镜像下载 访问 https://mirrors.almalinux.org/isos.html 下载安装镜像, AlmaLinux 9.2 安装 …

K8s进阶7——Sysdig、Falco、审计日志

文章目录 一、分析容器系统调用:Sysdig1.1. 安装1.2 常用参数1.3 采集分析1.4 示例1.4.1 查看某进程系统调用事件1.4.2 查看建立TCP连接事件1.4.3 查看某目录下打开的文件描述符1.4.4 查看容器的系统调用 1.5 Chisels工具1.5.1 网络类1.5.2 硬盘类1.5.3 cpu类1.5.4 …