0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

eMMC总线协议解析

嵌入式那些事 来源:嵌入式那些事 2023-12-08 14:35 次阅读

eMMC总线拓扑

在eMMC总线中,可以有一个Host,多个eMMC设备。总线上的所有通信都是以Host发送一个Command给eMMC开始的,eMMC对于收到的不同Command会做出不同的response,当然了eMMC对于收到的部分Command可以不做response。Host一次只能与一个eMMC设备通信。

在上电启动后,Host会为所有eMMC设备依次分配相对地址(RCA,Relative card Address)。当Host需要和某一个eMMC设备通信时,会先通过RCA选中该eMMC设备,只有被选中的eMMC设备才会响应Host的Command。

eMMC总线协议

在系统上电复位后,Host必须使用eMMC总线协议指定的message来初始化eMMC设备。每个message都由下面的一个标记表示:

command:命令,一个命令是一个开始操作的标记。命令是由Host发给eMMC设备的。一个命令在CMD线上被串行传输。

response:响应,响应是由eMMC设备发送给Host,用于eMMC设备对先前收到命令的回复。一个响应在CMD线上被串行传输。

data:数据,数据可以从Host传输给eMMC设备,也可以从eMMC设备传输给Host。数据在数据线上被传输。用于传输数据的数据线可以是1个(DAT0),4个(DAT0-DAT3)或者8个(DAT0-DAT7)。

对于每一个数据线来说,在一个时钟周期可以传输1位数据,也就是SDR模式(single data rate)。当然了,在一个时钟周期可以传输2位数据,也就是DDR模式(dual data rate)。

eMMC的读和写命令是按照block为单位进行的。读和写可以是单块或者多块。读和写数据时,数据block后面会跟CRC。

eMMC读数据

Host从eMMC设备读取数据的流程图如下图所示:

bb8e1ace-958d-11ee-8b88-92fbcf53809c.png

Snipaste_2023-10-11_20-52-40

如果Host发送的是Read Single Block的命令(CMD17),那么eMMC设备只会发送一个Block的数据(一个Block数据的字节数可以由Host通过CMD16命令设定或者为eMMC设备的默认值)。

如果Host发送的是Read Multiple Block的命令(CMD18),并且在发送CMD18之前,先发送一个SET BLOCK COUNT命令(CMD23)来设置需要读取的数据块数量,那么eMMC设备在传输完指定数量的数据块之后,会自动结束数据传输,不需要Host主动发送Stop Command(CMD12)。

如果Host发送的是Read Multiple Block的命令(CMD18),并且在发送CMD18之前,Host没有发送设置读取数据块数量的命令,那么eMMC设备会持续发送数据,直到Host主动发送Stop Command(CMD12)。

eMMC写数据

Host向eMMC设备写入数据的流程图如下图所示:

bb9a1a0e-958d-11ee-8b88-92fbcf53809c.png

Snipaste_2023-10-11_21-05-03

如果Host发送的是Write Single Block的命令(CMD24),那么eMMC设备只会将后续第一个Block的数据写入的存储器中(一个Block数据的字节数可以由Host通过CMD16命令设定或者为eMMC设备的默认值)。

如果Host发送的是Write Multiple Block的命令(CMD25),并且在发送CMD25之前,先发送一个SET BLOCK COUNT命令(CMD23)来设置需要写入的数据块数量,那么eMMC设备在接收完指定数量的数据块之后,会自动结束数据传输,不需要Host主动发送Stop Command(CMD12)。

如果Host发送的是Write Multiple Block的命令(CMD25),并且在发送CMD25之前,Host没有发送设置写入数据块数量的命令,那么eMMC设备会持续地将接收到的数据写入到存储器中,直到Host主动发送Stop Command(CMD12)。

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

eMMC无数据和无响应命令示意

在Host与eMMC设备的通信中,有部分命令是不需要进行数据传输的,还有部分命令不需要eMMC设备回复Response,示意图如下所示:

bbb23436-958d-11ee-8b88-92fbcf53809c.png

Snipaste_2023-10-11_21-19-41

eMMC命令

eMMC命令类型

eMMC协议定义了4种类型的命令,包括:bc、bcr、ac和adtc,这些命令类型的说明如下:

bc:broadcast commands(bc),bc是广播命令,主机发送bc命令给eMMC设备后,eMMC设备不需要回复响应(response)。

bcr:broadcast commands with response(bcr),bcr是需要eMMC设备回复响应的广播命令。

ac:addressed(point-to-point) commands(ac),ac是数据线(DAT lines)无数据传输的(no data transfer)点对点(point-to-point)命令。

adtc:addressed(point-to-point) data transfer commands(adtc),adtc是数据线有数据传输的点对点命令。

所有的命令(command)和响应(response)都是在CMD线上进行传输的。发送命令或响应时先发送起始位(Start bit),最后发送结束位(End bit)。

eMMC命令格式

eMMC的Command格式如下图所示:

bbc4943c-958d-11ee-8b88-92fbcf53809c.png

Snipaste_2023-10-12_20-26-30

eMMC的Command由48 bits组成,所有的eMMC命令都以01开始,以1结尾。所有的eMMC命令都是在CMD线上进行传输的,发送命令时先发送命令的起始位(Start bit),最后发送命令的结束位(End bit)。eMMC命令各个位的说明如下图所示:

bbd10e60-958d-11ee-8b88-92fbcf53809c.png

Snipaste_2023-10-12_20-28-05

Start Bit:起始位,固定为0,在没有命令传输的情况下,CMD线上的信号保持高电平,当Host将Start Bit发送到总线上时,eMMC设备可以很方便检测到命令的Start Bit(CMD线上的信号由高电平变为低电平),并开始接收Command。

Transmission Bit:传输位,固定为1,该位指示CMD线上数据的传输方向,该位为1,表示CMD线上数据的传输方向为从Host到eMMC设备。

Command Index和Argument:命令索引和命令参数,Command Index和Argument是命令的具体内容,不同的命令Command Index不同,不同的命令Argument也不相同。

CRC:CRC校验值,包含Start Bit、Transmission Bit、Command Index和Argument内容的CRC校验值。

End Bit:结束位,固定为1。

eMMC命令类别

eMMC的命令被划分成多种不同的类别。每一种命令类别支持一个设备功能的子集。

Class 0是所有eMMC设备都必须支持的命令类别。其他的命令类别根据具体的设备类型可以是必须支持的,也可以是可选的。

eMMC命令类别描述如下:

bbe0823c-958d-11ee-8b88-92fbcf53809c.png

Snipaste_2023-10-12_21-24-24

Host可以通过读取CSD寄存器的CCC [95:84]位域,来了解当前eMMC设备对命令类别的支持情况,对应的位域值为1,就表示该eMMC设备支持对应的命令类别。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11191

    浏览量

    208627
  • 总线
    +关注

    关注

    10

    文章

    2856

    浏览量

    87878
  • 总线协议
    +关注

    关注

    0

    文章

    115

    浏览量

    14832
  • emmc
    +关注

    关注

    7

    文章

    195

    浏览量

    52529

原文标题:Linux MMC子系统 - 2.eMMC 5.1总线协议浅析(1)

文章出处:【微信号:嵌入式那些事,微信公众号:嵌入式那些事】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    emmc,什么是emmc

    详细介绍什么是emmcemmc主要应用在哪些地方,并说明了EMMC的结构及优点。
    发表于 08-23 10:58 7.9w次阅读

    支持emmc4.51主控能对emmc5.0协议的片子进行读写吗?

    emmc5.0。 现在的问题是:支持emmc4.51主控能对emmc5.0协议的片子进行读写吗??使用的是8位数据总线
    发表于 04-08 07:32

    CANOpen协议解析

    CANOpen协议解析
    发表于 08-20 17:26

    AXI总线协议解析

    总线、接口和协议,这三个词常常被联系在一起,但是我们心里要明白他们的区别。总线是一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由由数据线、地址线、控制线等构成。接口是一种连接标准,又常常被称之为物理接口。
    发表于 02-05 07:30

    PS/2接口协议解析及应用

     PS/2接口协议解析及应用
    发表于 07-03 14:29 2327次阅读

    地址解析协议ARP

    地址解析协议ARP 地址解析协议 ARP 是一种广播协议,主机通过它可以动态地
    发表于 06-09 21:53 1112次阅读
    地址<b class='flag-5'>解析</b><b class='flag-5'>协议</b>ARP

    地址解析协议(ARP),地址解析协议(ARP)是什么意思

    地址解析协议(ARP),地址解析协议(ARP)是什么意思 地址解析协议 (ARP) “地址
    发表于 04-06 09:07 2089次阅读

    SD/SDIO/eMMC 协议分析仪

    品牌:Prodigy公司致力于提供记忆存储SD/eMMC综合测试解决方案,目前测试产品主要包括SD/eMMC总线协议分析仪(PGY-SSM)、SD卡模拟..
    发表于 12-02 16:50 96次下载

    汽车网络LIN总线协议解析

    LIN协议适用于汽车内进行低成本、短距离、低速网络通信,其用途是传输开关设置状态以及对开关变化响应。本文详细分析了LIN总线协议的特性、消息协议的组成、检错机制等,并介绍如何基于PI
    发表于 06-04 22:21 1.8w次阅读
    汽车网络LIN<b class='flag-5'>总线</b><b class='flag-5'>协议</b><b class='flag-5'>解析</b>

    TCP IP协议:地址解析协议ARP

    TCP IP协议进级讲座:2,地址解析协议
    的头像 发表于 07-03 06:05 3743次阅读

    CAN总线协议是什么?CAN总线协议有哪些?CAN总线协议知识分析

    本文说的CAN即是一种总线,也是一种协议。因此,我们常听见CAN总线,也常听见CAN协议。CAN协议和CANOpen
    的头像 发表于 10-03 19:53 7.4w次阅读
    CAN<b class='flag-5'>总线</b><b class='flag-5'>协议</b>是什么?CAN<b class='flag-5'>总线</b><b class='flag-5'>协议</b>有哪些?CAN<b class='flag-5'>总线</b><b class='flag-5'>协议</b>知识分析

    协议解析网关的作用

    想要了解协议解析网关,我们不妨将这个词拆来来看,协议+解析+网关三者的组合就是协议解析网关,三者
    的头像 发表于 09-09 11:18 1383次阅读

    eMMC总线协议

    Flash Memory 是一种非易失性的存储器,通常在嵌入式系统中用于存放系统、应用和数据等,类似于 PC 系统中的硬盘。目前,绝大部分手机和平板等移动设备中所使用的 eMMC 内部的 Flash
    的头像 发表于 12-10 15:18 2589次阅读
    <b class='flag-5'>eMMC</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>

    plc协议解析网关是什么

    PLC协议解析网关是一种专门用于工业自动化领域的设备,它的主要功能是实现不同通信协议之间的转换和解析,以便于不同类型的PLC、传感器、执行器等设备能够互相通信和数据交换。 在工业控制系
    的头像 发表于 07-12 15:41 248次阅读
    plc<b class='flag-5'>协议</b><b class='flag-5'>解析</b>网关是什么

    自动售货机MDB总线周边设备地址中文解析(三)

    自动售货机MDB协议中文解析(三)MDB总线周边设备地址
    发表于 09-09 10:43 0次下载