目录

1. 名词解释

2. 系统框架

3. 模块

3.1 Emmc控制器

3.2 Emmc设备

4. 总结


1. 名词解释

Emmc:Embedded Multi-Media Card,嵌入式多媒体卡。

在工程技术领域,会引入Emmc设备、Emmc控制器、Emmc协议这些概念。

  Emmc设备:遵循Emmc通信协议的设备(通常是一个芯片);

        Emmc控制器:实现Emmc协议的控制器;

        Emmc协议:由MMC协会订立,符合JEDEC标准,主要针对手机或平板电脑等产品的内嵌式存储器标准规格。

2. 系统框架

Host顾名思义就是指主机,而Emmc设备则是作为从设备挂在主机侧,从而作为主机的从设备。这点有几点需要说明:

1)Emmc设备只能由主机控制器来发起操作,Emmc设备自身不具备自举的能力;

2)主机控制器是作为soc的外设,挂在CPU的总线上,由CPU来进行配置操作;

3)Emmc设备上也有一个设备控制器,既然是控制器,必然也有相应的寄存器,设备控制器的寄存器是通过主机控制器发送命令来进行配置;

4)Emmc主机控制器与Emmc设备之间通过命令来交互,命令可以简化为一定格式的字符串,Emmc控制器发送字符串,Emmc设备去解析字符串,并执行相应的操作。

3. 模块

 3.1 Emmc控制器

        Emmc控制器的IP厂家主要有synopsis、arm、cadence、arasan等,为什么会有这么多厂家呢?其实很容易理解,虽然Emmc协议是由协会起草发布的,作为一种公认的标准,但这个协议定义了控制器与设备之间的通信格式,而控制器如何发出这个符合标准通信格式的命令,就不归JEDEC标准管制了。例如:

A厂家采取32个寄存器来实现控制器发送数据;

B厂家采取40个寄存器来实现控制器发送数据;

虽然最终AB两个厂家设计的控制器都能发出符合Emmc协议的命令,但在控制器设计端有所区别,因此才会有各种厂家的Emmc的IP核。(IP核就是利用硬件描述语言(verilog/VHDL)实现由寄存器转换为电信号的封装)

下面以synopsis和arasan两个厂家的IP展示下Emmc控制器的架构

  • synopsis的Emmc控制器

  • arasan的Emmc控制器

从上面两个图可以看出,有一些模块是共同的,比喻说DMA模块、FIFO模块、IO引脚、与主机的interface。

DMA模块主要是用来emmc控制器与内存之间的数据传输,由于emmc协议的速率越来越高,带来的传输数据量越来越大,如果采用内存拷贝,将会带来非常的CPU开销,因此现在Emmc控制器内部都集成了DMA控制器,当然,也有一些Emmc控制器内部不集成DMA,而是利用外部通用DMA来进行数据传输。

FIFO模块主要是用来作为外部Emmc设备与内存之间缓存,主要是为了解决外部Emmc设备与内存之间速率不匹配的问题。Emmc协议支持的最高速率为400MHz,与cpu访问内存之间的速率还存在相当大的差距,因此内存--Emmc设备读写数据速率与cpu--内存读写速率无法保持一致,在对于流式(数据以数据流的形式,流式是相对于突发而言)的通信场景下,必然会导致数据错误和丢包现象,因此增加了FIFO机制来保证速率的同步。那FIFO又是如何解决速率不匹配的问题呢?FIFO都会有对应的深度,设置一个FIFO阈值,通常为FIFO深度的一半。对于从Emmc设备读取数据,当FIFO中的数据达到阈值时,就认为收据需要读取,这时候将数据从FIFO读到内存中。对于写数据到Emmc设备,当写入FIFO的数据达到阈值时,就暂时停止写入操作,待FIFO中的数据传输到Emmc设备中后,再次启动后面的发送操作。

IO引脚就是Emmc控制器的信号绑定的SOC的IO引脚,对于Emmc控制器,必然有数据线、时钟线等,而这些线必然要通过SOC的IO引脚与Emmc设备相连。

与主机的interface就是控制器与CPU的接口,CPU需要通过interface来访问和控制Emmc控制器,从而间接控制Emmc控制器发出的命令。

 3.2 Emmc设备

Emmc设备就是符合Emmc协议的设备,通常指一种符合Emmc协议的存储芯片。Emmc芯片规范如下:

从上图可以看出,Emmc设备也是一个子系统,包含有控制器和存储颗粒。存储颗粒就是常见的 FLASH,引入设备控制器的目的就是为了简化SOC内部集成FLASH的复杂度,相当于Emmc设备将 FLASH控制器集成在Emmc设备上,由FLASH控制器完成FLASH的擦除、错误检测等操作,简化了soc的设计难度。不知道大家是否有这样一个疑惑,既然Emmc设备集成了FLASH控制器,那如果Emmc设备提供了CPU可访问的接口,那CPU是不是可以直接访问Emmc设备,而无需借助Emmc控制器来访问Emmc设备呢?个人理解是可以的,但这与mmc设计的出发点冲突,估计不会有人去这样做。

4. 总结

Emmc主机控制器发送命令来控制Emmc设备,通信协议符合JEDEC指定的标准。主机控制器的最终目的就是发出符合标准协议规定的命令,Emmc设备接收到符合标准协议的命令,执行对应的操作,将数据写入存储颗粒,或者从存储颗粒将数据读出并发回主机控制器。

Emmc系列(一)--------基本概念相关推荐

  1. SEO系列之基础概念

    原文地址:SEO系列之基础概念 - 文章详情 SEO系列之基础概念 SEO是什么,SEO对我们来说有什么用,SEO能用在哪里?在学习SEO之前,我们必须要知道自己要学的是什么,有什么用,怎么用.带着问 ...

  2. Hadoop系列——大数据概念day1-1

    Hadoop系列--大数据概念day1-1 Hadoop系列--大数据概念day1-1 数据 数据的单位 大数据 大数据的特点(5V) Volume数据体量大 Variety种类.来源多样化 Valu ...

  3. 云计算-从基础到应用架构系列-云计算的概念

    开篇 本篇是主要讲述什么是云计算,并且讲述云计算相比之前的一些比较新兴的计算模式之间的区别,并且简单的分析下云计算相比这些传统的企业应 用模式之间的优势及优缺点.由于本篇是云计算系列的开篇,可能概念性 ...

  4. 【正则表达式系列】一些概念(字符组、捕获组、非捕获组)

    前言 本文介绍一些正则中的常用名词以及对应概念,譬如字符组,捕获组.非捕获组.反向引用.转义和\s \b等 大纲 字符组 捕获组 反向引用 非捕获组 ..\s和\S \b \转义 字符组 []字符组表 ...

  5. c语言写os 编译器,你真的懂''Hello world''吗?从编译器到OS内核系列:编译器基本概念...

    本文是<你真的理解'Hello world'吗?从编译链接到OS内核系列专题>的第一章的第一小节,主要介绍编译器的基本概念以及C语言程序的构建过程.全系列大纲如下: 前言 第1章 编译器的 ...

  6. 软件工程经验总结系列之二 - 概念阶段控制

    本文为软件工程经验总结系列文章的第二篇,按照总论文章所设立的范围划分,本阶段重点讲述概念阶段的控制过程以及控制思路,笔者所站在的角度是乙方角度来进行表述整个阶段的推动过程,但对于甲方公司其基本思路完全 ...

  7. 强化学习系列(1) 基本概念

    第一节 强化学习的基本概念 1. 背景介绍 强化学习(Reinforce Learning)又称增强学习,再励学习.是一个多学科交叉的概念. 它也是机器学习的一个重要分支,主要用来解决连续决策的问题. ...

  8. 移动安全Android逆向系列:Dalvik概念破解实例

    本篇文章是Android逆向系列的第三篇,开始介绍Dalvik虚拟机的相关知识,认识dex和smali文件格式和熟悉Dalvik字节码及指令集,对Dalvik指令集有个大概的了解就可以开始简单的反编译 ...

  9. lucence学习系列之一 基本概念

    1. Lucence基本概念 Lucence是一个java编写的全文检索类库,使用它可以为一个应用或者站点增加检索功能. 它通过增加内容到一个全文索引来完成检索功能.然后允许你基于这个索引去查询,返回 ...

最新文章

  1. 为什么双层循环 冒泡排序_冒泡排序的双重循环理解
  2. IOS7新增120*120Icon图标
  3. 我是如何从一个新闻狗转行成为程序猿的?
  4. Redis事务中的watch机制-从实例入手学习
  5. Apache Commons SCXML:有限状态机实现
  6. 动态类型var和dynamic和传统确定类型区别和效率
  7. 字节跳动AI Lab 秋季提前批招聘
  8. vnpy学习_02各文件功能梳理
  9. bzoj 3674 可持久化并查集加强版——可持久化并查集
  10. java自动行走_java数据结构实现机器人行走
  11. 串口的定义,232,485,UART,TTL之间的区别和关系到底是什么
  12. java 订单编号_生成订单编号 用java怎么处理
  13. 清华大学计算机系本科课程,清华大学计算机系本科生全部课程详细介绍
  14. CMD-NET命令详解
  15. 卖减肥产品怎么正确引流?减肥产品抖音应该如何引流?
  16. 关于“微信公众平台测试号管理接口配置信息配置失败”的问题解决办法
  17. 小红书3大新功能上线,提升笔记转化率和品牌投放效果
  18. 积木报表画布显示不了
  19. http 请求405 错误
  20. 队测 逆序对 permut

热门文章

  1. HRBUST-1025-JiaoZhu and WAR3
  2. python 人脸检测 大胡子_Python | 50行代码实现人脸检测
  3. linux 升级python 3.5,Linux下升级Python到3.5.2版本
  4. Vue el-table实现拖曳调整顺序
  5. 洛谷 P2031 脑力达人之分割字串
  6. 图片处理之着色器语言 GLSL (opengl-shader-language) 内建函数
  7. pade逼近matlab,使用Pade近似式处理数字控制系统中的纯滞后.pdf
  8. 就美国入境须知讲讲我个人的三次入境糗事
  9. 开源毕业设计:基于嵌入式ARM-Linux的应用OpenCV和QT实现的人脸识别系统(源码+论文)
  10. android 陀螺仪加速度,何时使用Android上的加速度计或陀螺仪