当前位置: 首页 > news >正文

深入讲解eMMC简介

1 eMMC是什么

eMMC是embedded MultiMediaCard的简称,即嵌入式多媒体卡,是一种闪存卡的标准,它定义了基于嵌入式多媒体卡的存储系统的物理架构和访问接口及协议,具体由电子设备工程联合委员会JEDEC订立和发布。它是对MMC的一个拓展,具有体积小,功耗低,容量大等优点,非常适合用作智能手机、平板电脑、移动互联网设备等消费类电子设备的存储介质。

2 eMMC的构成

eMMC是一种嵌入式、非易失的存储系统,它主要由闪存、闪存控制器和eMMC协议接口等组成,以BGA的形式封装在一起。eMMC的构成如下图所示:

图1 eMMC 系统结构图

2.1 闪存

闪存是一种非易失性存储器,通常用来存放数据,应用和系统程序等。eMMC内部的闪存一般都属于Nand Flash。

2.2 闪存控制器

闪存控制器主要用来对内部的Nand Flash进行操作和管理。由于Nand Flash自身的物理特性,需要实现坏块管理、磨损均衡、ECC等诸多功能,这些功能就是由FTL(Flash Translation Layer)来实现。eMMC内部集成的闪存控制器则实现了FTL等功能,减少了由于不同型号Nand Flash的各种特性差异,造成的软件开发复杂度;同时闪存控制器也提供了Cache、Memory array、interleave等多种功能,大大提高了Nand Flash读写操作性能。

2.3 eMMC接口

eMMC接口主要实现将eMMC接入到Host的MMC总线上,与Host进行通信,实现eMMC的协议逻辑。

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

图2 eMMC 接口图

接口中各信号线的作用如下:

CLK:时钟信号,用于Host与Device间的同步。

Data Strobe:数据锁存信号,Device端的输出信号,用于HS400模式下,频率与CLK相同,主要用于同步从Device端输出的数据。

CMD:用于传输从Host端发出的command和Device端发出的response。

DATA0 ~ DATA7:用于在Host和Device间传输数据。

Reset:复位信号线,主要用于Host对Device进行复位操作。

3 eMMC的工作模式

eMMC共有5种不同的工作模式,具体如下表:

表1 eMMC工作模式

 资料直通车:Linux内核源码技术学习路线+视频教程内核源码

学习直通车:Linux内核源码内存调优文件系统进程管理设备驱动/网络协议栈

4 eMMC的内部寄存器

eMMC内部有6个不同的寄存器,主要用来存放eMMC的相关配置和状态或设定eMMC的工作时的配置参数,方便Host查询和操作eMMC。

内部寄存器的具体内容如下表:

表2 eMMC内部寄存器

4.1 设备识别寄存器

这是128bits的寄存器,里面存放单个设备独一无二的信息,它符合eMMC协议,当设备处于识别状态的时候,信息能够被主机访问。具体信息见下表:

表3 设备识别寄存器

4.2 相对设备地址寄存器

这是16bits的寄存器,一旦设备被识别,设备会被主机指定相对的地址,它存在其中。当传输数据的时候,主机利用这些信息选择设备,规定这个寄存器默认的值为0X0001。如果地址变成0X0000,那么只有发送CMD7指令才可让设备处于Stand-by State才可用。

4.3 驱动等级寄存器

这是16bits的寄存器,它规定设备的等级,设备能通过主机进行设置来增强设备的性能,例如总线的长度、传输的速率等参数。在设备具体数据寄存器中包括了这个寄存器使用方式的内容。这个寄存器的默认值是0x404。

4.4 设备具体数据寄存器

这是128bits的寄存器,它提供了主控如何去访问设备的信息。它规定了数据格式、错误类型、最大数据访问时间、数据传输速率、DSR寄存器是否可用等。其具体内容如下表:

表4 设备具体数据寄存器

4.5 操作条件寄存器

这是32bits的寄存器,此寄存器包含eMMC Device支持的电压模式、数据寻址模式(按Byte寻址or按Sector寻址)以及Busy标志位。

表5 操作条件寄存器

4.6 扩展设备具体数据寄存器

这是4096bits的寄存器,规定了设备的属性和选择的模式。其中的最高的320Bytes是属性块,提供了设备的能力信息,这些属性是只读的,不能被改写。最低的192Bytes是模式块,定义了设备工作时的配置信息。这些配置信息可以通过命令改写。

5 eMMC与其他存储器件的对比

5.1 eMMC VS Nand Flash

如前所述,eMMC是将Nand Flash和Flash Controller和eMMC接口等封装在一起的小型的存储系统,这样做的好处是:

1.简化系统存储设计,降低开发复杂度。生产Nand Flash的厂商众多,有samsung、hynix、micron等许多厂商,每家生产的产品的技术特性都稍有差异,需要针对这些特性做兼容开发,开发非常复杂;而eMMC则规定了统一的协议接口,我们只需要根据协议做开发,就能兼容各个厂商的eMMC产品,开发过程大大简化。

2.更新速度快。随着Nand Flash制程工艺的不断升级,主控的Flash Controller和FTL也需要不停的更新,才能支持新的Nand Flash。而eMMC将Flash Controller和Nand Flash封装在了一起,屏蔽了由于Nand Flash制程工艺而带来的差异,主控的controller和driver不需要做过多修改就能支持。

3.读写性能更好。eMMC在Nand Flash的基础上,加入了Cache、Memory array等技术,大大提高了读写速度。

图3 Nand Flash VS eMMC

5.2 eMMC VS MMC

如前所述,eMMC即embedded MMC,就是从MMC拓展而来,做了小型化处理,方便嵌入到板上,且速度方面做了提升,从0 ~ 52MHz提升到了0 ~ 200MHz。

5.3 eMMC VS UFS

与eMMC一样,UFS也是一种将Nand Flash和Flash controller即协议接口封装在一起的存储系统。但是两者还是有很大的区别。

1.协议接口不一样。eMMC使用的是8bit的并行接口,而UFS使用的是串行接口。eMMC和主控之间只能进行半双工通信,而UFS与主控之间可以看下全双工通信。

2.UFS的读写性能比eMMC高很多。如前所述,由于eMMC使用的是并行接口,这就限制了它的最高工作频率,目前eMMC能支持的最高工作频率是200MHz,及它的最大传输带宽为400MB/s。而UFS使用的是串行接口,则可以突破这个限制,且能进行全双工通信,大幅提高了读写性能。以下就是eMMC与UFS的读写性能的对比图。

图4 eMMC/UFS性能对比图

 

相关文章:

深入讲解eMMC简介

1 eMMC是什么 eMMC是embedded MultiMediaCard的简称,即嵌入式多媒体卡,是一种闪存卡的标准,它定义了基于嵌入式多媒体卡的存储系统的物理架构和访问接口及协议,具体由电子设备工程联合委员会JEDEC订立和发布。它是对MMC的一个拓展&#xff0…...

ICV:中国车载超声波雷达市场规模预计2024年可达20亿美元

近年来,由于市场对车辆先进安全功能的需求的增加,汽车超声波传感器市场一直保持稳步增长。ICV估计,车载超声波传感器全球市场预计在2022年至2027年之间以11.5%的复合年增长率增长,这种增长是由越来越多的高级驾驶辅助系…...

PointNet:利用深度学习对点云进行3D分类和语义分割

PointNet:利用深度学习对点云进行3D分类和语义分割 参考自,PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 代码仓库地址为:https://github.com/charlesq34/pointnet/ 介绍 这次介绍的是一个比较基础的工作…...

第四十二章 Unity 下拉框 (Dropdown) UI

本章节我们介绍下拉框 (Dropdown),我们点击菜单栏“GameObject”->“UI”->“Dropdown”,然后调整它的位置,效果如下 其实它的本质就是一个下拉列表,然后选择列表中的一个选项而已。大家在很多网页中应该可以看到类似的UI元…...

STL常用梳理——STACK、QUEUE

STL——适配器篇 1、ListSTL list 容器介绍list使用 2、适配器介绍3、Deque容器Stack、Queue适配器实现 1、List STL list 容器介绍 STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可…...

Unity物理系统基本概念

前言:物理引擎仅仅是对现实物理的一种近似模拟。无论是从运算精度和时间连续性都不够准确。目的只是为了让游戏具备令人信服的物理表现,增强游戏的表现力和用户的沉浸感。 一、刚体Rigidbody 刚体是让物体产生物理行为的主要组件。一旦挂载了Rigidbody组…...

防止表单重复提交的几种方式,演示一个自定义注解方式的实现

防止表单重复提交的几种方式,演示一个自定义注解方式的实现 一、防止表单重复提交的几种方式方式一:Token 机制方式二:去重表(主要是利用 MySQL 的唯一索引机制来实现的)方式三:Redis 的 setnx方式四&#…...

《基于智能手机采集的PPG信号预测血管老化》阅读笔记

目录 一、论文摘要 二、论文十问 Q1: Q1论文试图解决什么问题? Q2: 这是否是一个新的问题? Q3: 这篇文章要验证一个什么科学假设? Q4: 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员&#xff1f…...

【大数据-调度工具】dolphinscheduler安装和遇到的问题

1.安装 安装步骤按照官网安装即可 官网:DolphinScheduler | 文档中心 (apache.org) 版本:3.1.5 2.踩坑记录 Q1.大文件无法上传 问题描述: 在资源中心中上传文件选择完大文件夹之后,选择确认之后确认按钮转了几圈圈之后就没…...

滑动轨迹生成的思路和代码分享-测试可过极验 90%机率

如有技术侵权、可联系本人下架 由于极验采用人工智能的方式对滑动的轨迹进行的验证,因此如果我们比较随意的生成鼠标滑动轨迹基本是肯定被封的,因此我们要详细分析一下鼠标轨迹的规律, 通之前介绍的调试手段,手工滑动滑块,获取到鼠标滑动轨迹的集合数组如下: [[-37,-41…...

【Linux】项目自动化构建工具make/makefile

🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、make/makefile的背景二、…...

【系分范文】论软件需求获取技术以及应用

目录 论题论题介绍论文要点理论素材准备范文摘要正文论题 论软件需求获取技术以及应用 论题介绍 软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。软件需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。需求获取是否科学、准备充分,对获取…...

vue2.0中post请求

vue2.0中post请求 三种格式:在vue中axois的用法:1、 multipart/form-data类型2、 x-www-form-urlencoded类型3、 application/json类型 三种格式: ○ Content-Type:x-www-form-urlencoded ○ Content-Type:multipart/form-data ○ Content…...

MySQL双写缓冲区(Doublewrite Buffer)

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录 摘要为什么需要Doublewrite BufferDoublewrite Buffer原理Doublewrite Buffer相关参数总结 摘要 InnoDB是MySQL中一种常用的事务性存储引擎,它具有很多优秀的特性。其中,Dou…...

免费开源的Umi-OCR 文字识别工具

大家好,我是小寻,欢迎关注公众号:工具优选,免费领取优质项目源码和常用工具,还可以加入我的交流群! 如今,在日常生活和工作中,我们经常需要捕捉屏幕截图并识别其中的文本信息。比如别人给你发资料时直接发…...

如何让微信小程序弹窗滚动条设置在最上面

最近发现一个事情搞得很烦&#xff0c;微信小程序的弹窗内容可以滚动的时候&#xff0c;要保证每一次打开都在最上面&#xff0c;研究了一下终于发现了怎么解决 第一步 首先得把你的弹窗里面的内容用scroll-view标签包起来&#xff0c;像这样 <scroll-view style"hei…...

c语言-指针

指针详解 ​ 这段时间在看 Linux内核&#xff0c;深觉C语言功底不扎实&#xff0c;很多代码都看不太懂&#xff0c;深入学习巩固C语言的知识很有必要。先从指针开始。 什么是指针 ​ C语言里&#xff0c;变量存放在内存中&#xff0c;而内存其实就是一组有序字节组成的数组&…...

Jenkins集成SonarQube实现代码质量检查

文章目录 一、前提配置1.1 安装及配置SonarQube Scanner插件1.2 配置SonarQube servers 二、非流水线集成SonarQube1.1 配置非流水线任务 三、流水线集成SonarQube 一、前提配置 1.1 安装及配置SonarQube Scanner插件 (1) 点击【系统管理】>【插件管理】>【可选插件】搜…...

2023 谷歌I/O发布会新AI,PALM 2模型要反超GPT-4,一雪前耻!

文章目录 1 前言2 Google I/O 发布者大会3 PaLM 2模型3 Bard项目4 其他AI工具4.1 AI 图片编辑 Magic Editor4.2 Duet AI 办公4.3 Universal Translator 翻译工具4.4 Google 沉浸式导航4.5 Google 搜索引擎 5 讨论 1 前言 每年必看两大会&#xff0c;苹果发布会和谷歌发布会&am…...

MySQL和Redis如何保证数据一致性?

前言 由于缓存的高并发和高性能已经在各种项目中被广泛使用&#xff0c;在读取缓存这方面基本都是一致的&#xff0c;大概都是按照下图的流程进行操作&#xff1a; 但是在更新缓存方面&#xff0c;是更新完数据库再更新缓存还是直接删除缓存呢&#xff1f;又或者是先删除缓存再…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...