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

转载于:https://www.cnblogs.com/smartjourneys/p/6652388.html

eMMC基础技术2:eMMC概述相关推荐

  1. eMMC基础技术8:操作模式1-boot mode

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

  2. eMMC编程基础 -(二)eMMC基础介绍

    eMMC编程基础 -(二)eMMC基础介绍 1 eMMC 简介 1.1 eMMC系统概述 1.2 eMMC 的整体架构如下图片所示: 2 Flash Memory 3 Flash Controller ...

  3. LLVM基础技术图例

    LLVM基础技术图例 LLVM概述--基础架构 LLVM IR 参考链接: https://www.zhihu.com/people/chenwengang/posts

  4. Web基础技术开发设计规范

    Web基础技术开发设计规范 概述 前端脚本语言十分灵活,每个人都有自己开发风格,并且javascript是单线程编程语言,程序的运行效率在前端开发是比较重要的,所以对前端开发人员应有更高的编程要求.而 ...

  5. 【eMMC学习记录】emmc相关名词解释和基础概念

    名词解释 NAND Flash:半导体闪存 HDD:机械硬盘 FW:固件 Peak Power:峰值功率 Active Power:读写功耗 Idle Power:空闲功耗 standby/sleep ...

  6. 大数据基础技术和应用

    大数据概述 数据的表现形式: 线下数据信息化:数据库.文字记录.照片-- 互联网-移动互联网:网页数据.用户行为记录.数字图像-- 传感器:设备监控.智能家居.摄像头-- 大数据的4V特征: 大量化( ...

  7. 容器编排技术 -- Kubernetes入门概述

    容器编排技术 -- Kubernetes入门概述 简介 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powe ...

  8. 【计算机网络】局域网原理与技术(局域网概述、以太网技术、高速以太网、虚拟局域网、无线局域网)

    局域网原理与技术 局域网概述 局域网的相关标准(IEEE 802.LLC. MAC) 重点总结 局域网的技术特性(传输媒体.传输技术.网络拓扑.媒体访问控制方法) 传输媒体(有线媒体.无线媒体) 传输 ...

  9. Java笔记(十二) 文件基础技术

    文件基础技术 一.文件概述 一)基本概念 1.文件的分类: 1)文本文件:文件中每个二进制字节都是某个可打印字符的一部分.如.java文件 2)二进制文件:文件中每个二进制字节不一定用来表示字符,也可 ...

  10. 大数据应用导论 Chapter1 | 大数据技术与应用概述

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

最新文章

  1. 聊聊Service Mesh:linkerd
  2. Java 收集的代码 transient
  3. 探讨微软团队开发利器VSTS之安装及部署篇
  4. Countly 19.02.1 发布,实时移动和 web 分析报告平台
  5. 使用IntelliJ IDEA开发SpringMVC网站(一)开发环境
  6. SecureCRT 7 序列号
  7. 湫湫系列故事——消灭兔子
  8. 人工智能与模式识别 --中国计算机学会推荐国际学术刊物
  9. 优秀案例|App内弹窗界面设计灵感
  10. [转]WINDOW进程通信的几种方式
  11. 2019腾讯广告算法大赛思路(转自简书)有所改动(标蓝)
  12. FTP工具,5款常用的FTP工具
  13. 键盘错误代码39解决方法
  14. android 关于刷app下载量的问题
  15. Typora基本使用Markdown基本语法:精炼且详细
  16. 字节跳动面试题+答案,全答对的 30K 以上!
  17. 渝海手机号码归属地查询工具php版 v1.1
  18. Spring简介与IOC容器
  19. “秘密入职”字节跳动,百度高级经理一审被判赔107万
  20. 粤嵌开发板之手机WIFI摄像头

热门文章

  1. 【经验之谈】劝退文|听说你要转AI
  2. 【Linux】肝!Shell 脚本编程最佳实践
  3. 从 0 开始机器学习 - 机器学习系统的设计与误差分析
  4. 这篇文章是我用AI生成出来的
  5. 【每日算法Day 94】经典面试题:机器人的运动范围
  6. 百面机器学习—10.循环神经网络面试问题总结
  7. LeetCode刷题——125. 验证回文串
  8. 每周荐书:OpenCV、自然语言、SpringBoot2
  9. 产品管理的工作流程是什么
  10. iPhone SDK开发基础之自定义仪表控件