eMMC基础技术6:eMMC data读写

摘要:
如果Host发送的是SingleBlockRead的Command,那么eMMCDevice只会发送一个Block的数据。eMMCDevice在接收到一个Block的数据后,会进行CRC校验,然后将校验结果通过CRCToken发送给Host。发送完CRCToken后,如果CRC校验成功,eMMCDevice会将数据写入到内部存储器时,此时DAT0信号会拉低,作为Busy信号。如果CRC校验失败,那么eMMCDevice不会进行数据写入,此次传输后续的数据都会被忽略。
1. 前言
  • data可以经data线从host发往device,也可以从device发往host
  • 数据线以是1线(DATA0),4线(DATA0~DATA3),8线(DATA0~DATA7)
  • 对每条数据线,每个时钟周期可以传输1bit(single data rate)和2bits(dual data rate)数据
2. data传输

eMMC传输是以block为单位,每个block后跟一个CRC,无论是读或写都允许单个或多个block传输,对于多block传输是以host发送一个stop命令为结束。

2.1 多block读

eMMC基础技术6:eMMC data读写第1张

图 multiple block read

Host 从 eMMC Device 读取数据的流程如上图所示。

如果 Host 发送的是 Single Block Read 的 Command,那么 eMMC Device 只会发送一个 Block 的数据(一个 Block 的数据的字节数由 Host 设定或者为 eMMC Device 的默认值,更多细节请参考eMMC 工作模式章节)。
如果 Host 发送的是 Multiple Block Read 的 Command,那么 eMMC Device 会持续发送数据,直到 Host 主动发送 Stop Command。

NOTE:从 eMMC Device 读数据都是按 Block 读取的。

2.2.多block写

eMMC基础技术6:eMMC data读写第2张

图 multiple block write

Host 向 eMMC Device 写入数据的流程如上图所示。

如果 Host 发送的是 Single Block Write Command,那么 eMMC Device 只会将后续第一个 Block 的数据写入的存储器中。
如果 Host 发送的是 Multiple Block Write Command,那么 eMMC Device 会持续地将接收到的数据写入到存储器中,直到 Host 主动发送 Stop Command。

eMMC Device 在接收到一个 Block 的数据后,会进行 CRC 校验,然后将校验结果通过 CRC Token 发送给 Host。
发送完 CRC Token 后,如果 CRC 校验成功,eMMC Device 会将数据写入到内部存储器时,此时 DAT0 信号会拉低,作为 Busy 信号。Host 会持续检测 DAT0 信号,直到为高电平时,才会接着发送下一个 Block 的数据。如果 CRC 校验失败,那么 eMMC Device 不会进行数据写入,此次传输后续的数据都会被忽略。

NOTE:向 eMMC Device 写数据都是按 Block 写入的。

2.3 No Data

eMMC基础技术6:eMMC data读写第3张

在 Host 与 eMMC Device 的通信中,有部分交互是不需要进行数据传输的,还有部分交互甚至不需要 eMMC Device 的回复 Response。

eMMC基础技术6:eMMC data读写第4张

3.参考文档

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

免责声明:文章转载自《eMMC基础技术6:eMMC data读写》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用Docker部署自己的JupyterHub关于crontab以及输出重定向下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DbContext的使用

EF4.1包括Code First和DbContext API。DbContext API为EF提供更多的工作方式:Code First,Database First和Model First。 使用DbContext构造函数 1. Code First约定连接 namespace Magic.Unicorn{    public class Unicorn...

从网页抓取数据的一般方法

首先要了解对方网页的运行机制 ,这可以用httpwacth或者httplook来看一下http发送和接收的数据。这两个工具应该说是比较简单易懂的。这里就不再介绍了。主要关注的内容是header和post的内容。一般会包括cookie,Referer页面和其他一些乱其八糟可能看不懂的变量,还有就是正常交互的参数,比如需要post或者get的querystri...

Docker Volume 之权限管理(一)

摘要:Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性。然而Docker数据卷的权限管理经常是非常令人困惑的。本文将结合实例给大家介绍Docker数据卷权限管理中的常见问题和解决方法。 Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可...

Asp.net Mvc 使用EF6 code first 方式连接MySQL总结

最近由于服务器变更为Linux系统.MsSql for Linux什么时候出来到生产环境使用还是要很长时间的.于是考虑使用Mysql数据库,ORM使用EF.于是先踩下坑顺便记录一下,有需要的tx可以参考下.当你考虑使用EF连接Mysql的时候肯定是已经在网上搜了一堆教程.网上教程基本都是使用控制台做演示.跟着一步步来姿势没错的话可能会正常运行,但项目中使用...

data文件夹权限修改

程序用FileOutputStream以及xml格式的ShardPreference生成的文件会存储在data文件夹下,可以AS顶部栏的Tools->Android->Android Device Monitor工具的file explore可以方便查看 但是,默认情况下data文件夹的权限是771,这个工具只有最后的1权限,也就是仅执行,这是...

python 3.6 链接mssql 进行数据操作

#!/usr/bin/env python # -*- coding: UTF-8 -*- import pymssql class MSSQL(object): ''' 对pymssql的简单封装 pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonl...