MMC和eMMC的区别
MMC 和 eMMC 的区别

1. MMC
MMC(MultiMediaCard)是一种接口协议,定义了符合这一接口的内存器,称为 MMC 储存体或 MMC 卡。它是一种非易失性存储器件,广泛应用于消费类电子产品中。
1.1 外观及引脚定义

- MMC卡共有七个触电(引脚),分为两种操作模式,分别为 MMC 模式与 SPI 模式。
- 尺寸:
(24mm*32mm*1.4mm) - 操作电压:2.7V ~ 3.6V
- MMC卡 时钟频率是 20MHz,比 SD卡 少两个触电,只有1位数据带宽,所以最大传输速率为2.5MB/s。
2. eMMC
eMMC(Embedded MultiMedia Card)是 MMC 的一个扩展,专为嵌入式系统设计,主要用于手机或平板电脑等产品。eMMC 在封装中集成了一个控制器,提供标准接口并管理闪存,简化了终端产品存储器的设计。它由一个嵌入式存储解决方案组成,包括 MMC 接口、快闪存储器设备及主控制器,所有组件都在一个小型的 BGA 封装中。eMMC 的接口速度可以达到每秒400MB,具有快速、可升级的性能。
总结来说,MMC 是一种接口协议,而 eMMC 是基于该协议的嵌入式存储解决方案,包含了控制器和封装,适用于嵌入式系统中的存储需求。
3. emmc 和 Nandflash 的区别和联系
eMMC 是将 Nand Flash 和 Flash Controller 和 eMMC 接口等封装在一起的小型的存储系统。也就是说 eMMC 当中包含 NandFlash。
eMMC 将不同的 NandFlash 进行了统一的封装,留给我们开发者的是 eMMC 协议 和 eMMC 接口。

这样做的好处是:
3.1 简化系统存储设计,降低开发复杂度
在以前,每次 NAND 技术换代的时候,手机客户端也要重新设计,手机制造商需要选择新的与 NAND flash 匹配的 soc 芯片,而 soc 厂商一般要针对这款 NAND flash,重新设计 soc 芯片(主要是内部的 nand flash ccontroller),这种方式十分麻烦。
在推出 emmc 后,soc 厂商只需要在芯片上加上一个可以与 MMC标准通信的控制器(一般叫做 sdmmc controller/sd controller),这个控制器可以支持某种/某几种 eMMC 标准。同时 eMMC 芯片封装好 NAND flash,向外也提供一个统一的 eMMC 接口 (如 eMMC 4.3/4.4),此时只要给 soc 芯片选定好一个 eMMC 接口,连上二者即可通信了。
以前需要双方都进行更换芯片设计,现在只需要 eMMC 卡进行更换即可。
3.2 更新速度快
随着 Nand Flash 制程工艺的不断升级,主控的 Flash Controller 和 FTL 也需要不停的更新,才能支持新的 Nand Flash。
而 eMMC 将 Flash Controller 和 Nand Flash 封装在了一起,屏蔽了由于 Nand Flash 制程工艺而带来的差异,主控的 controller 和 driver 不需要做过多修改就能支持。
3.3 读写性能更好
eMMC 在 Nand Flash 的基础上,加入了 Cache、Memory array 等技术,大大提高了读写速度。
4. eMMC 与 SD卡 有什么不同?
eMMC(Embedded MultiMediaCard)和 SD卡(Secure Digital Card)都是基于 NAND 闪存技术的存储解决方案,但它们在设计、性能、应用和封装等方面有所不同。
以下是 eMMC 与 SD 卡的对比:
| 对比维度 | eMMC | SD卡 |
|---|---|---|
| 构造 | 嵌入式存储设备,集成在单个芯片中 | 外部存储设备,通过卡槽和卡套安装 |
| 性能 | 通常比 SD卡 更快,因为不需通过额外的通信层 | 速度低于 eMMC,受限于卡套和卡槽通信 |
| 应用领域 | 主要用于移动设备和嵌入式系统 | 广泛用于数码相机、智能手机、平板电脑等消费电子产品 |
| 安全性 | 不支持加密技术 | 采用加密技术保护数据安全 |
| 成本 | 通常比 SD卡 低,因为不需要额外的卡槽和卡套 | 成本相对较高 |
| 封装类型 | BGA 封装,焊接在主板上 | 通常为 TF卡 或 SD卡 形式,便于插入和移除 |
| 接口 | 专用的 eMMC接 口 | 通过 SDIO 接口或 SPI 模式通信 |
根据上述对比,eMMC 通常提供更好的性能和更低的成本,适合作为嵌入式系统的内部存储解决方案。而 SD卡 则因其便携性和通用性,适用于需要外部存储的多种消费电子产品。在选择两者时,应考虑具体的应用场景和性能需求。
4.1 SD卡 的外观及引脚定义
SD卡 为 Secure Digital Memory Card, 即安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备。它在 MMC 的基础上发展而来,增加了两个主要特色:SD卡 强调数据的安全,可以设定所储存的使用权限,防止数据被他人复制;另外一个特色就是传输速度比 2.11 版的 MMC卡 快。

-
两个可选的通信协议:SD 模式和 SPI 模式
-
可变时钟频率:0-25 MHz
-
通信电压范围:2.0-3.6V
-
工作电压范围:2.0-3.6V
-
低电压消耗:自动断电及自动睡醒,智能电源管理
-
数据寿命:10万次编程/擦除
-
尺寸:24mm宽×32mm长×1.44mm厚
-
正向兼容 MMC 卡
-
卡片带电插拔保护
-
具备写保护开关
-
SD卡 运行在 25MHz 的时钟频率上,数据带宽是4位,因此最大传输速率是12.5MB/s(12.5兆字节每秒)。
5. eMMC 在手机上通常如何实现数据读写操作?
eMMC(Embedded MultiMediaCard)在手机上实现数据读写操作的过程涉及多个步骤和协议。
5.1 数据读写流程
- 初始化和配置:手机的操作系统通过发送一系列命令来初始化 eMMC 设备,并配置必要的参数,如分配存储空间和设置工作模式。
- 数据传输:数据传输是以 block 为单位进行的,每个 block 后面跟随一个 CRC(循环冗余检查)校验。无论是读取还是写入操作,都允许单个或多个 block 的传输。对于多 block 传输,会在传输结束时发送一个停止命令(CMD12)。
- 读取操作:手机通过发送读取命令(CMD17 或 CMD18)指定要读取的 block 地址和数量。eMMC 设备响应后,按照指定的顺序发送数据块,并附加相应的 CRC 校验结果。
- 写入操作:手机发送写入命令(CMD24 或 CMD25)指定要写入的 block 地址和数据。eMMC 设备在接收到数据后执行 CRC 校验,并在校验成功后进行数据写入。写入完成后,eMMC 设备通过总线空闲信号(Busy signal)告知手机可以继续发送下一个 block 的数据。
- 错误处理:在数据传输过程中,如果发生错误,eMMC 设备会通过特定的响应命令通知手机。手机根据响应信息决定是否重试或采取其他措施。
5.2 性能优化和保护机制
- eMMC 技术内置了 Flash Controller,负责完成擦写均衡、坏块管理和 ECC 校验等功能,提高了数据的可靠性和存储效率。
- 高速的 eMMC5.1 标准允许实现高达 400MB/s 的顺序读取速度和 200MB/s 的顺序写入速度,这对于提高手机的数据处理速度至关重要。
- eMMC 还支持高级错误校验与修正技术,以及可靠性增强功能,如硬件写保护和闪存控制器保护,确保数据的安全性和稳定性。
这些操作和机制共同确保了 eMMC 在手机上能够高效、稳定地处理数据读写任务。
6. 为什么 eMMC 适合嵌入式系统使用而不是普通 MMC?
eMMC(Embedded MultiMediaCard)是专门为嵌入式系统设计的存储解决方案,相比于普通的 MMC(MultiMediaCard),eMMC 具有以下优点,使其更适合嵌入式系统的使用:
- 集成度高:eMMC 将存储器芯片和控制器芯片集成在一起,形成单一的芯片,这种设计可以减小整体尺寸,提高集成度,降低成本。
- 专用接口:eMMC 使用标准 MMC 接口,这种接口专为嵌入式系统设计,可以提供稳定的数据传输和更好的电源管理。
- 性能优化:eMMC 内置了 ECC(Error Correction Code)和数据备份功能,这些技术提高了数据的可靠性,并且相对于普通 MMC,eMMC 的读写速度更快,尽管略逊于独立的 Flash 存储器,但对于嵌入式系统而言已经足够使用。
- 定制化分区:eMMC 支持特定的分区设计,如B OOT 分区和 RPMB(Replay Protected Memory Block)分区,这些分区有助于提高系统的启动效率和数据安全性。
- 功耗管理:eMMC 设计时考虑了低功耗的需求,适合用于移动设备和嵌入式系统,其功耗可能相对较低,有助于延长电池寿命。
- 成本效益:由于标准化生产和大规模流通,eMMC 的成本相对较低,适合大规模部署在消费电子和工业嵌入式系统中。
综上所述,eMMC 的高集成度、专用接口、性能优化、定制化分区、功耗管理和成本效益使其成为嵌入式系统的理想选择。普通 MMC 由于缺乏这些特性,通常不适用于对性能和集成度有较高要求的嵌入式系统。
相关文章:
MMC和eMMC的区别
MMC 和 eMMC 的区别 1. MMC MMC(MultiMediaCard)是一种接口协议,定义了符合这一接口的内存器,称为 MMC 储存体或 MMC 卡。它是一种非易失性存储器件,广泛应用于消费类电子产品中。 1.1 外观及引脚定义 MMC卡共有七个…...
亚马逊爬虫(Amazonbot)IP地址,真实采集数据
一、数据来源: 1、这批亚马逊爬虫(Amazonbot)IP来源于尚贤达猎头公司网站采集数据; 2、数据采集时间段:2023年10月-2024年7月; 3、判断标准:主要根据用户代理是否包含“Amazonbot”和IP核…...
Spring Boot(八十四):集成Thumbnailator来生成缩略图
1 Thumbnailator简介 Thumbnailator是一个用于Java的缩略图生成库。通过Thumbnailator提供的流畅接口(fluent interface)的方式可以完成复杂的缩略图处理任务,无需访问Image I/O API并通过Graphics2D对象手动操作BufferedImages。 2 代码示例 2.1 引入依赖 <dependency&g…...
MySQL基础操作全攻略:增删改查实用指南(上)
本节目标: NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识&am…...
SAP MM学习笔记 - 豆知识02 - MR21 修改物料原价,MM02 修改基本数量单位/评价Class,MMAM 修改物料类型/评价Class
上一章讲了一些豆知识。比如 - MM50 批量扩张品目 - XK05/06 Block/消除供应商 - MM06/MM16 品目消除 - SE11/SE16/SE16/SE16N/SE16H/DB02 等查看常用的操作Table和数据的T-code SAP MM学习笔记- 豆知识01 - MM50 批量扩张,XK05/XK06 Block/消除供应商…...
谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存
文章目录 一,谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存1,在Elasticsearch的配置类中增加通用设置2,索引数据3,验证 一,谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存 1,在…...
flutter开发环境搭建与android studio 安装配置
flutter开发环境搭建与android studio 安装配置 安装 android studio 下载安装 Android Studio 开发工具 Android Studio官网安装的时看到配置路径就换成自己其他盘的路径即可,其他的一路下一步就ok安装完毕,运行打开缺少 android sdk 按照提示下载即可…...
postgresql 字符串 替换
postgresql 字符串 替换 在PostgreSQL中,可以使用replace()函数来替换字符串中的某个部分。该函数的语法如下: REPLACE(string text, from text, to text) 其中: string 是要进行替换操作的原始字符串。 from 是原始字符串中需要被替换掉的…...
如何强化学习神经网络
强化学习(Reinforcement Learning, RL)神经网络是一种通过奖励和惩罚机制来学习策略的方法,适用于各种复杂的决策问题。以下是强化学习神经网络的一些主要步骤和方法: 1. 了解基本概念 环境(Environment)…...
Hadoop未授权访问漏洞
Hadoop未授权访问漏洞 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了Hadoop机器HDFS的50070web端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目…...
Python中json模块的编码和解码
在Python中,可以用json模块处理JSON的编码和解码问题。json的全程是 javascript object notation, 翻译一下就是javascritpt 对象表示法。json是一种轻量级的数据交换格式,容易阅读和编写,支持的数据类型有:字符串、数字、数组和对…...
【Linux】文件变身大作战:Linux下的文件重命名艺术
欢迎来到 CILMY23 的博客 🏆本篇主题为:文件变身大作战:Linux下的文件重命名艺术 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法…...
字节的存储和字符的存储
字节的存储 内存中的存储 基本数据类型: 在Java中,byte 类型占用 1 个字节(8 位)。它的取值范围是从 -128 到 127。存储在内存中的 byte 数据可以直接操作,例如通过数组或变量访问。 数据结构: byte 数组…...
Markdown插入Base64格式的图片,无需图床,稳定保存
Markdown插入Base64格式的图片,无需图床,稳定保存 我是一个Markdown的爱好者,转存图片是MD经常出问题的地方,因为MD不像其他富文本编辑器,将图片内嵌到文件中,而是用链接的形式引用,或网络链接…...
weblogic 连接gaussdb测试数据源是否联通
文章目录 1. gaussdb创建远程连接用户和数据库2. weblogic构建GaussDB源数据库3. 测试结果查询注意 weblogic中jar包已经放入lib目录中gaussdb已经创建可以连接登录的用户和数据库1. gaussdb创建远程连接用户和数据库 新建用户和数据库连接客户端Gauss=# create user lily pas…...
如何成为全域运营商?掌握这2种申请方式就够了!
随着全域概念的兴起,全域运营商的职业前景和收益空间逐渐显现,并迅速成为了热门创业赛道中的一份子,连带着如何成为全域运营商等入局方式相关话题也成为了众多创业者热议的焦点。 不过,从市场现状来看,作为涵盖公域和私…...
@ConfigurationProperties加在方法上
ConfigurationProperties注解通常用于将外部配置文件(如application.properties或application.yml)中的属性映射到Java类中。它通常加在类上,但也可以加在方法上。加在方法上时,通常与Bean注解一起使用,以便将配置属性…...
使用CUBEMX配置的USB大容量存储设备主机库获取LUN数量的不严谨代码纠正
最近在使用usb主机库驱动U盘直接进行扇区读写。 发现MSC库中获取LUN相关代码有问题 代码如下 其中 status USBH_MSC_BOT_REQ_GetMaxLUN(phost, (uint8_t *)(void *)&MSC_Handle->max_lun); MSC_Handle->max_lun (MSC_Handle->max_lun > MAX_SUPPORTED_L…...
合并重叠的区间
这一题不能用差分数组,因为 [1 , 4] [5, 6] 这个就会被合并,正确的做法就是先排序 bool cmp(vector<int> a, vector<int> b) {if (a[0] < b[0]) return 1;if (a[0] b[0]) return a[1] < b[1];return 0; } class Solution { public:ve…...
docker和运维
创建服务 docker service create --name order --network my-net -p 8080:8080 -d xxx 加入swarm集群 docker swarm join --token xxx 更新结点名字为mysql docker node update --label-add servermysql ecs-82ec-0003 创建MySQL服务 docker service create --name mysql --con…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
