2. eMMC概述

2023-11-08

0.前言

本文主要参考eMMC规范,从总体上对eMMC 进行简要介绍。主要包含如下的内容:

(1)eMMC系统的总体架构

(2)eMMC的总线协议

(3)device controller

(4)flash memory

1.eMMC系统总体架构

 

 

                                                                         图 eMMC 系统总体架构                   

eMMC规范主要定义了Device Controller和接口的相关规范,如图中蓝色部分标识

  • power部分

(1)VCCQ主要用于MMC IO BLOCK的供电也就是与host接口IO部分的供电,同时也给eMMC core供电;
          VCC主要给eMMC内部的flash memory,以及eMMC core与flash接口部分IO的供电;

           VCCQ和VCC分为两种电压,一种电压是high voltage(2.7v~3.6v),一种电压是dual voltage(1.70v~1.95v和2.7v~3.6v)

(2)VSSQ是IO的地也就是eMMC内部的CORE的地,VSS是eMMC内部的flash的地;                                                                  

                                                                                  图 eMMC供电

 

 

 

 

 注:VCCQ一定要小于或等于VCC

  • bus部分

有11条信号线:

(1)clk, 0~200MHZ,每个cycle可以在上升沿或下降沿传输,也可以在上升沿和下降沿都传输;

(2)data strobe,由slave device 发送给host controller,主要用在HS400 mode(5.1规范?),频率与clk一致,用于host同步接收device的data(上升沿和下降沿有效),response和CRC status(只有上升沿有效);

(3)cmd,双向信号线,用于从host发送命令给device和device发送response给host,有两种操作模式:open drain(初始化模式)和push pull(fast command transfer)

(4) 8 bit data bus,双向信号线,工作在push pull mode,支持 1bit, 4bit, 8bit传输,默认上电或reset后只有DATA0用于数据传输,可以通过命令配置有多少条数据线用于传输数据。在device内部,DAT1~DATA7包含上拉电阻,平时不使用时保持上拉状态(也就是高电平??),使用时则断开上拉。

  • Host Controller

通过发送CMD读写device端数据或通过CMD对device端进行配置

  • eMMC device  controller

实现对memory的管理,接收bus端的CMD,实际读写I/O寄存器

  • flash memory

包含了实际的存储介质nand flash

图 eMMC接口

注:

1.4.1规范之前使用32位地址,最高容量达到2G;

2.4.1之后采用512B扇区访问模式,可支持大于2G的存储空间

2. eMMC总线

2.1 eMMC总线协议

eMMC 总线中,可以有一个 Host,多个 eMMC Devices。总线上的所有通讯都由 Host 端以一个 Command 开发发起,Host 一次只能与一个 eMMC Device 通讯。

系统在上电启动后,Host 会为所有 eMMC Device 逐个分配地址(RCA,Relative device Address)。

当 Host 需要和某一个 eMMC Device 通讯时,会先根据 RCA 选中该 eMMC Device,只有被选中的 eMMC Device 才会响应 Host 的 Command。

(1)包含四种token

  • command:  任何操作都要以CMD开始,只能由host发往device,且要串行完成;
  • response:   在接收到host端发送的CMD,device作为回应将通过command line发送一个response,只能有device发往host,且只能通过command line串行传输;
  • data: data可由host发送device(写)可以由device发往host(读),data线可采用1线,4线,8线传输,对于每条data线,可以选择单沿传输(single data rate)还是双沿传输 (dual data rate)
  • crc status:用于device发送给host告知接收到的写入数据校验是否成功

注:有些CMD是不需要发送respnse回应的,后面会有讲述

 

(2)device地址采用session地址,由host controller在初始化阶段指定???

(3)device通过CID进行识别;

(4)bus操作由CMD,response,data中的一种或几种组成,包括三种:CMD;CMD+response;CMD+response+data;

(5)读(写)数据时,data block后跟CRC bits,支持单个data block读(写)和multi blocks读(写),当multi blocks读(写)时,command发送stop命令表示读(写)结束;

(6)写数据时,device通过DATA0 的busy位来告知host当前block写入是否完成;

 

2.2 bus speed modes

随着 eMMC 协议的版本迭代,eMMC 总线的速率越来越高。为了兼容旧版本的 eMMC Device,所有 Devices 在上电启动或者 Reset 后,都会先进入兼容速率模式(Backward Compatible Mode)。

在完成 eMMC Devices 的初始化后,Host 可以通过特定的流程,让 Device 进入其他高速率模式,目前支持以下的几种速率模式

                  

                                                                            图 bus speed mode

 

2.3 clk control

1.总线速率在任何时刻都可以改变;

2.不带回应的命令,命令结束位后有8个clock;

3.带有回应的命令,设备响应结束位后有8个clock;

4.读数据传输。在上个data blcok的结束位后有8个clock;

5.写数据传输,CRC status token结束位后有8个clock

2.4 Error conditions

1.CRC and illegal command

如果发送给某地址的设备的命令的CRC检测错误,则不会执行这条命令,也不会回应

2.Time-out conditions

读写擦除操作的超时时间,一般超时时间是典型时间的10倍,spec中规定了每种操作的超时时间

3.Read ahead in multiple block read operation

为了提高效率,当有多个块读取时,设备可能会超前读取,如果host读取的最后一个物理地址,那么device会出错,因此host要忽略这个错误

2.5 Minimum performance

TODO,参考spec6.9.2

2.6 Memory array partitioning

                                           

BYTE:基本的传输单元

BLOCK:面向读写命令的操作单元

GROUP: for erase and WP

2.7 timing

TODO 见 spec 6.15

3. device controller

NAND Flash 直接接入 Host 时,Host 端通常需要有 NAND Flash Translation Layer,即 NFTL 或者 NAND Flash 文件系统来做坏块管理、ECC等的功能。

eMMC 则在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。

相比于直接将 NAND Flash 接入到 Host 端,eMMC 屏蔽了 NAND Flash 的物理特性,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 NAND Flash 进行特殊的处理。

同时,eMMC 通过使用 Cache、Memory Array 等技术,在读写性能上也比 NAND Flash 要好很多。

                                   

                                                                                 图 NAND Flash 与 eMMC

 

3.1 eMMC操作模式

主要有5种操作模式:

1. boot mode

有三种情况会进入boot mode:上电;硬件reset信号;发送CMD0并带参数0xf0f0f0f0

 

2.device identification mode

如果boot mode完成或者host/device不支持boot mode,则会进入此模式,接收到CMD3(SET_RCA)会退出此模式,进入transfer模式的standby state

 

3. interrupt mode

 host和device会同时进入或退出中断模式。中断模式没有数据传输,唯一允许的消息是设备发送给host已经进入中断模式

 

4.data transfer mode

指定完RCA后,device进入此模式;host在identification device后进入此模式

 

5.inactive mode

三种途径进入此模式:操作电压非法;访问模式非法;通过CMD15(GO_INACTIVE_MODE)命令

 

                            

                                                            图 eMMC操作模式与device status对应关系表 

 

3.2 device寄存器

                                                                                      图 eMMC寄存器

有三种方式可以对设备reset:

1.断电在上电;

2.reset信号;

3.发送特定命令

4. flash memory

4.1 分区管理

 

                                           

                                                                           图:eMMC 内部分区

eMMC 在内部对 Flash Memory 划分了几个主要区域:

  1. BOOT Area Partition 1 & 2
    此分区主要是为了支持从 eMMC 启动系统而设计的。
    该分区的数据,在 eMMC 上电后,可以通过很简单的协议就可以读取出来。同时,大部分的 SOC 都可以通过 GPIO 或者 FUSE 的配置,让 ROM 代码在上电后,将 eMMC BOOT 分区的内容加载到 SOC 内部的 SRAM 中执行。

  2. RPMB Partition
    RPMB 是 Replay Protected Memory Block 的简称,它通过 HMAC SHA-256 和 Write Counter 来保证保存在 RPMB 内部的数据不被非法篡改。
    在实际应用中,RPMB 分区通常用来保存安全相关的数据,例如指纹数据、安全支付相关的密钥等。

  3. General Purpose Partition 1~4
    此区域则主要用于存储系统或者用户数据。 General Purpose Partition 在芯片出厂时,通常是不存在的,需要主动进行配置后,才会存在。

  4. User Data Area
    此区域则主要用于存储系统和用户数据。
    User Data Area 通常会进行再分区,例如 Android 系统中,通常在此区域分出 boot、system、userdata 等分区。

更多 eMMC 分区相关的细节,请参考 eMMC基础技术: 分区管理 章节。

5. 参考文档

[1]eMM spec(注册后可免费下载),http://www.jedec.org/standards-documents/results/jesd84-b51

[2]http://www.wowotech.net/basic_tech/emmc_intro.html

[3]http://www.wowotech.net/basic_tech/emmc_bus_protocol.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2. eMMC概述 的相关文章

  • 关于CNN中的maps

    1 feature maps 在每个卷积层 数据都是以三维形式存在的 你可以把它看成许多个二维图片叠在一起 其中每一个称为一个feature map 在输入层 如果是灰度图片 那就只有一个feature map 如果是彩色图片 一般就是3个
  • ESP32开发路程LVGL篇(三)——显示图片

    目录 显示图片 在线转换图片 图片加入项目 主函数代码 参考 LVGL 图片 显示图片 本文利用的方式 通过工具将图片转化为 c文件 写入单片机程序并进行烧录 这种方式实现起来较为简单 但是由于硬件限制 图片的大小会受限 且占用内存 可以用
  • Mysql数据库10万条数据多表联合查询速度过慢解决方案

    点我 查看原文 问题描述 今天在写项目时发现之前好好的查询接口突然挂了 检查后发现原来是有人往数据里新增了10万条数据 以至于Mysql语句执行的特别慢就不行了 原因 原因也简单这个接口原本是一张组织机构表关联区域表 组织标准类型表 币种表

随机推荐

  • xxl-job任务管理平台的配置与使用

    xxl job任务管理平台的配置 是否启用job executor 如果设置为false 则不初始化 job executor enable true web port server port 8083 调度中心部署根地址 选填 如调度中心
  • Linux 粘滞位 suid sgid

    粘滞位 o t 针对目录赋权 目录中创建的文件只有创建者才可以删除 命令 chmod o t 目录名 删除权限用减即可 sgid g s 针对目录建立权限 在该目录中建立的文件所属组继承父目录的属组 命令 chmod g s 目录名 删除权
  • java实体类非空判断@NotEmpty、@NotNull等注解无效解决

    1 引入Spring Hibernate Validator的依赖 此Hibernate 非Hibernate ORM框架的Hibernate
  • node deno_Deno手册:带有代码示例的TypeScript运行时教程

    node deno I explore new projects every week and it s rare that one grabs my attention as much as Deno did 我每周都会探索新的项目 很少
  • 专业招聘人吐血心得,华为Offer这不是白送吗!

    从事IT行业专项招聘很久了 接触华为OD也有几年的时间 遇到过大批非常想进到华为并提升自己的技术的大牛候选人们 其中会有部分曾有过优秀的行业经验或是院校背景的 因为畏惧机考 没通过的 也有性格测试挂了的以及离成功更近的面试挂了的等等情况 而
  • mybatis和springmvc的本质区别与应用场景

    Hibernate 是一个标准的ORM 对象关系映射 框架 入门门槛较高 不需要程序员自己写sql代码 sql语句自动生成 但是 对于sql的优化 修改就比较困难了 应用场景 适用于需求变化不多的中小型项目 因为sql语句都是系统以及写好的
  • 辞职的时候,如果老板挽留你,你会怎么办呢?

    俗话说 流水不腐 户枢不蠹 职场上 人员流动也是颇为正常的事情 我们说如果你想离开 一般有三种情况 第一种 全公司人民 包括老板 烧高香 送 瘟神 似地把你送走 第二种 他们的态度不温不火 持保留意见 就是您走和留的关系不大 第三种 老板要
  • 5 款阿里常用代码检测工具,免费用!

    作者 喻阳 面临问题 在日常研发过程中 我们通常面临的代码资产问题主要分为两大类 代码质量问题和代码安全漏洞 1 代码质量问题 代码质量其实是一个老生常谈的话题 但问题是大家都知道它很重要 却又不知道如何去提升和维护这一团队的共同财产 一方
  • Cannot query the value of property ‘javaLauncher‘ because it has no value available.

    背景 使用 gradlew nativeCompile报错 原因 未配置JAVA HOME 参考链接 解决 配置JAVA HOME即可sudo vim etc profile export JAVA HOME opt graalvm jdk
  • python语言实现:已知一行由英文字母(A-Z,a-z)和数字(0-9) 组成的字符串的加密规则如下:大写英 文字母向后移1位,如A一B,B一C, 丫一Z,Z一A;小写英文字母向后移2位,如 a-c...

    用Python实现该加密规则 可以使用ord 和chr 函数 def encrypt s r for c in s if A lt c lt Z r chr ord c 1 elif a lt c lt z r chr ord c 2 el
  • 关于react-Ant Design框架Button按钮的基础用法

    前言 最近在学习react Ant Design框架 把button组件一些基础用法记录一下 引入框架 使用组件 基础按钮 首先我们得导入Ant Design和里面的button 才能进行使用 当然得确保之前在项目中你安装了Ant Desi
  • FPGA时序约束-设置伪路径和设置异步时钟

    什么是设置伪路径 伪路径是指该路径存在 但该路径的电路功能不会发生或者无须时序约束 创建伪路径的好处 可以减少工具运行优化时间 增强实现结果 避免在不需要进行时序约束的地方花费较多时间 设置伪路径一般用在 跨时钟域 一但上电就被写入数据的寄
  • dwr工具入门

    DWR是一个开源的类库 可以帮助开发人员开发包含AJAX技术的网站 它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数 就像它就在浏览器里一样 它包含两个主要的部分 允许JavaScript从WEB服务器上一个遵循了AJAX原
  • php THINKPHP5获取微信公众号access_token并存储

    需求背景 在TP5项目中 获取微信的access token并存储到Redis 并可以通过Redis查询access token 第一步 创建一个获取access token的方法 该方法需要向微信服务器发送请求 获取access toke
  • 设计模式的 C++ 实现---工厂方法模式(一)

    前文回顾 单例模式 一 单例模式 二 观察者模式 简单工厂模式 前言 工厂模式通常适用于需要创建大量对象的情况 若仅需要一个对象 直接 new 即可 对于简单工厂模式 当需要增加新的产品时 需要对工厂类进行修改 违背了 开闭原则 对修改关闭
  • 技术栈

    1 微服务技术栈 微服务条目 技术 备注 服务开发 Springboot Spring SpringMVC 服务配置与管理 Netflix公司的Archaius 阿里的Diamond等 服务注册与发现 Eureka Consul Zooke
  • 翻转等价二叉树

    leetcode 翻转等价二叉树 我们可以为二叉树 T 定义一个翻转操作 如下所示 选择任意节点 然后交换它的左子树和右子树 只要经过一定次数的翻转操作后 能使 X 等于 Y 我们就称二叉树 X 翻转等价于二叉树 Y 编写一个判断两个二叉树
  • C API向MySQL插入批量数据的快速方法——关于mysql_autocommit

    MySQL默认的数据提交操作模式是自动提交模式 autocommit 这就表示除非显式地开始一个事务 否则每个查询都被当做一个单独的事务自动执行 我们可以通过设置autocommit的值改变是否是自动提交autocommit模式 查询当前数
  • 浏览器打不开网页 服务器停止响应怎么办,浏览器打不开未响应怎么办

    相信还有不少用ie浏览器的朋友 偶尔会遇到ie浏览器打不开或未响应的问题 那么对于浏览器打不开未响应的问题该怎么解决呢 接下来小编为大家分享解决方法 解决浏览器打不开问题 可以直接使用金山毒霸的电脑医生进行快速修复 以IE浏览器为例 下面就
  • 2. eMMC概述

    0 前言 本文主要参考eMMC规范 从总体上对eMMC 进行简要介绍 主要包含如下的内容 1 eMMC系统的总体架构 2 eMMC的总线协议 3 device controller 4 flash memory 1 eMMC系统总体架构 图