eMMC 是 embedded MultiMediaCard 的简称。MultiMediaCard,即 MMC, 是一种闪存卡(Flash Memory Card)标准,它定义了 MMC 的架构以及访问 Flash Memory 的接口和协议。而 eMMC 则是对 MMC 的一个拓展,以满足更高标准的性能、成本、体积、稳定、易用等的需求。

eMMC 的整体架构如下图片所示:

图片: eMMC 整体架构

eMMC 内部主要可以分为 Flash Memory、Flash Controller 以及 Host Interface 三大部分。

1. Flash Memory

Flash Memory 是一种非易失性的存储器,通常在嵌入式系统中用于存放系统、应用和数据等,类似与 PC 系统中的硬盘。

目前,绝大部分手机和平板等移动设备中所使用的 eMMC 内部的 Flash Memory 都属于 NAND Flash,关于 NAND Flash 的更多细节可以参考Flash Memory章节。

eMMC 在内部对 Flash Memory 划分了几个主要区域,如下图所示:

图片:eMMC 内部分区
  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 分区管理章节。

2. Flash 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. Host Interface

eMMC 与 Host 之间的连接如下图所示:

图片:eMMC Interface

各个信号的用途如下所示:

CLK
用于同步的时钟信号

Data Strobe
此信号是从 Device 端输出的时钟信号,频率和 CLK 信号相同,用于同步从 Device 端输出的数据。该信号在 eMMC 5.0 中引入。

CMD
此信号用于发送 Host 的 command 和 Device 的 response。

DAT0-7
用于传输数据的 8 bit 总线。

Host 与 eMMC 之间的通信都是 Host 以一个 Command 开始发起的。针对不同的 Command,Device 会做出不同的响应。详细的通信协议相关内容,请参考eMMC 总线协议章节。

MTK 驱动---(8)emmc 介绍相关推荐

  1. MTK 驱动(78)----MTK 平台查看eMMC和DDR的工作频率

    eMMC和DDR的工作clk确认 MTK 平台查看eMMC和DDR的工作频率 eMMC: adb shell cat /sys/kernel/debug/mmc0/clock DDR: adb she ...

  2. mmc驱动框架基础介绍

    mmc驱动框架基础介绍 本文主要介绍一下Linux内核的mmc子系统驱动的整体框架. (作者对SDIO设备不熟悉,所以不过多描述:鄙人才疏学浅,有不当之处,还请指教.) 大概包括以下几个部分: mmc ...

  3. 详解关于MTK驱动开发学习教程

    MTK驱动开发学习教程是本文要介绍的内容,主要是来了解MTK的驱动开发的过程,文章中很详细的讲解了这个问题,具体内容来看本文详解. 一.Charge Parameters. 1.相关文件chr_par ...

  4. MTK FAQ解决方案官方资料介绍(MT6765/MT6762/MT6761芯片平台)

    MTK FAQ解决方案资料介绍: ---这里介绍MT6765/MT6762/MT6761芯片平台解决方案资料. 1.MT6765/MT6762/MT6761平台支持dual charger吗? 答:M ...

  5. 0.96寸IIC接口ssd1306和ssd1315驱动oled12864屏幕介绍

    0.96寸IIC接口ssd1306和ssd1315驱动oled12864屏幕介绍 图为中景园的0.96寸ssd1306屏幕,适合于PCB一体化设计.如果想分开,可以直接购买带焊接好转接的OLED屏幕. ...

  6. MTK 平台sensor arch 介绍-hal

    MTK 平台sensor arch 介绍-hal 一:整体框架 二:具体流程简介 AP-HAL: (1)init & control flow 我们以前文的originchannel 的 ac ...

  7. eMMC介绍及硬件电路设计

    一. eMMC介绍 1. eMMC是什么 eMMC (Embedded Multi Media Card)是MMC协会订立.主要针对手机或平板电脑等产品的内嵌式存储器标准规格. 由一个嵌入式存储解决方 ...

  8. Robosense速腾激光雷达驱动文件参数介绍

    Robosense速腾激光雷达驱动文件参数介绍 在阅读本文之前,请下学习文章Robosense在LIOSAM中的使用,并对驱动进行安装与编译. Robosense驱动文件只有一份参数文件 config ...

  9. MTK 平台sensor arch 介绍-kernel

    MTK 平台sensor arch 介绍-kernel AP-kernel 1.文件相关介绍 1.进入到(core) 2.进入到(mtk_nanohub) 3.(lsm6dsm_secondary)是 ...

  10. MTK 驱动(62)---eMMC RPMB分区介绍

    eMMC RPMB分区介绍 Partitions Overview eMMC标准中,将内部的 Flash Memory 划分为 4 类区域,最多可以支持 8 个硬件分区,如下图所示: 一般情况下,Bo ...

最新文章

  1. ElementUI的el-select怎样实现下拉多选并实现给下拉框赋值和获取值
  2. HDU - 1536 S-Nim(sg函数)
  3. 页面加载被延迟 Firefox将禁用对DV和OV证书的OCSP检查
  4. html5--3.1 form元素
  5. 在Thinkphp中使用AJAX实现无刷新分页
  6. 爱情 何为爱情(搜集)
  7. java graphics2d旋转_反向Java Graphics2D缩放和旋转坐标
  8. js中的entries方法的使用
  9. 建立团队信任的五种方法
  10. 福昕PDF阅读器护眼设置
  11. NLP词向量模型总结:从Elmo到GPT,再到Bert
  12. 错误 692:调制解调器中发生硬件故障的解决方法
  13. display:Wayland Architecture
  14. Java 文件传输小工具,网络传输文件,内网传输
  15. 消防应急照明和疏散指示系统在某医药厂房项目的应用
  16. 百度之星A题 调查问卷
  17. HDU4741【高数、计算几何】
  18. 如何解决 Unable to locate package gcc-4.6-base:i386
  19. Android 8.0新特性
  20. 题目10.2 项目团队采访

热门文章

  1. apt mysql 5.1_linux下apt安装mysql导致mysql.user table is damaged
  2. linux svn 拉取代码_svn快速入门指南
  3. Redis的三个框架:Jedis,Redisson,Lettuce
  4. java并发:初探用户线程和守护线程
  5. TeleportPoint可瞬移的目标位置
  6. uploadify没反应
  7. 15. 迭代器模式(Iterator Pattern)
  8. 第六章 Android应用的生命周期
  9. c#获取部分DRAW
  10. 前端进阶-手写Vue2.0源码(三)|技术点评