本文转载自:https://blog.csdn.net/u014645605/article/details/52061034

定义:
eMMC (Embedded Multi Media Card) 采用统一的MMC标准接口, 把高密度NANDFlash以及MMCController封装在一颗BGA芯片中。针对Flash的特性,产品内部已经包含了Flash管理技术,包括错误探测和纠正,flash平均擦写,坏块管理,掉电保护等技术
速度:
eMMC4.4的读取速度大约为104MB/s、eMMC 4.5则为200MB/s,eMMC 5.0存储产品,其读取速度为400MB/s,但是因为使用的是8位并行界面,因此性能潜力已经基本到达瓶颈
趋势:
UFS(通用flash存储标准) 2.0有两个版本:HS-G2的理论带宽就有5.8Gbps,也就是超过了740MB/s,HS-G3更是翻番到11.6Gbps,接近了1.5GB/s
主流厂商及产品特性:
三星
镁光
东芝
mmc接口版本
5.1/UFS
4.41/4.5
4.41/4.5
型号
KMQ7X0000SA
MTFC8GACAANA
THGBMAG6A2JBAIR
电压
1.8V
2.7V-3.3V
2.7V-3.3V
读/写速度(MB)
250/90
100/25
100/25
EMMC 硬件分区
Boot1 和Boot2:这两个区域在存储的稳定性、可靠性及擦除次数上都远比UDA要好 ,所以经常放一些关键数据
RPMB:保护性存储,是用来给系统存放一些特殊的、需要进行访问授权的数据(指纹,安全支付)
UDA:AP及用户可以进行读写存储的区域,通常其大小为整块EMMC表示大小的93%左右
sprd:
Boot1:u-boot-spl-16k.bin
Boot2:u-boot.bin
RPMB:未使用(指纹相关)
UDA:剩余的烧写文件
高通:
BOOT1:bootloader
BOOT2:boot.img
RPMB:未用(指纹相关)
UDA:剩余文件
UDA硬件分区上的软件分区
MBR:MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘。MBR还只支持最多4个主分区;如果这部分数据被覆盖或破坏,很难修复typedef struct _legacy_mbr {
 u8 boot_code[440];
 __le32 unique_mbr_signature;
 __le16 unknown;
 struct partition partition_record[4];
 __le16 signature;
} __packed legacy_mbr;
GPT:磁盘驱动器容量可以大得多,大到操作系统和文件系统都没法支持。它同时还支持几乎无限个分区数量,限制只在于操作系统;GPT在整个磁盘上保存了这部分信息的副本,因此它更为健壮
typedef struct _gpt_header {
 __le64 signature;
 __le32 revision;
 __le32 header_size;
 __le32 header_crc32;
 __le32 reserved1;
 __le64 my_lba;
 __le64 alternate_lba;
 __le64 first_usable_lba;
 __le64 last_usable_lba;
 efi_guid_t disk_guid;
 __le64 partition_entry_lba;
 __le32 num_partition_entries;
 __le32 sizeof_partition_entry;
 __le32 partition_entry_array_crc32;
} __packed gpt_header;
typedef struct _gpt_entry {
 efi_guid_t partition_type_guid;
 efi_guid_t unique_partition_guid;
 __le64 starting_lba;
 __le64 ending_lba;
 gpt_entry_attributes attributes;
 efi_char16_t partition_name[PARTNAME_SZ];
} __packed gpt_entry;
EMMC 各阶段工作说明
romcode:
EMMC初始化主要完成下面的工作:
1)设置HC为SDR12模式,CLK为26M,数据线为1bit模式;
2)分频系数为66(400K)
uboot阶段:
struct mmc {
 struct list_head link;
 char name[32];//等同于host_name
 void *priv;//关联host
 uint voltages;
 uint version;
 uint has_init;
 uint f_min;
 uint f_max;
 int high_capacity;
 uint bus_width;
 int (*send_cmd)(省略);
 void (*set_ios)(struct mmc *mmc);
 int (*init)(struct mmc *mmc);
 ……..};
struct sdhci_host {
 char *name;
 void *ioaddr;//EMMC控制器基地址
 unsigned int quirks;
 unsigned int host_caps;
 unsigned int version;
 unsigned int clock;
 struct mmc *mmc;//关联emmc
 const struct sdhci_ops *ops;
 int index;
 void (*set_control_reg)(struct sdhci_host *host);
 void (*set_clock)(int dev_index, unsigned int div);
 uint voltages;
};
Uboot阶段各个parttion的加载过程:
1.获取硬件分区
2.获取GPT头数据
3.获取ENTRY数组数据
4.遍历ENTRY数组,寻找匹配分区
5.获取该分区block信息
6.完成读取
kernel中的EMMC
EMMC总体架构
文件系统:
1. 提供管理底层文件系统的功能组件(inode、directory entry、page cache等)
2. 提供访问底层文件系统的方法(read、write、open等系统调用)
转换为对具体分区具体块的访问
Card层:
emmc都是块设备,需要提供块设备的驱动程序,这部分就是实现了将emmc如何实现为块设备的。并获取文件系统的request,转发给core层
core层:
这部分完成了不同协议和规范的实现,并且为HOST层的驱动提供接口函数,调用host层的ops
host层:
这部分完成AP测主机的初始化,以及对外设emmc卡的初始化和读写。(平时编写驱动需要修改的地方)
EMMC probe流程:
EMMC 数据读写流程:
至此:EMMC在整个手机启动阶段的流程就完成了
本人一直在学习研究emmc的原理及应用,文章主要对流程做了介绍,但文章中难免存在疏漏,如有问题请邮件至:Leon_htzw@163.com,同时如有关于emmc细节的问题交流也可以发邮件,谢谢

EMMC 介绍【转】相关推荐

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

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

  2. MTK 驱动---(8)emmc 介绍

    eMMC 是 embedded MultiMediaCard 的简称.MultiMediaCard,即 MMC, 是一种闪存卡(Flash Memory Card)标准,它定义了 MMC 的架构以及访 ...

  3. 芯片的SD/MMC控制器以及SD卡介绍

    1.MMC.SD卡.eMMC介绍 1.1.三者关联 (1)最早出现的是MMC卡,卡片式结构,按照MMC协议设计.(相较于NandFlash芯片来说,MMC卡有2个优势:第一是卡片化,便于拆装:第二是统 ...

  4. eMMC格式化及烧录

    eMMC格式化.烧录 一.eMMC介绍 二.手动格式化eMMC操作 三.手动烧录eMMC步骤 四.自动化脚本格式化和烧录eMMC 一.eMMC介绍 eMMC (Embedded Multi Media ...

  5. 电路设计 > eMMC应用和PCB layout布局布线参考设计

    目录 eMMC介绍 eMMC信号大体介绍 EMMC4.5和5.0封装和兼容性对比 EMMC5.0和5.1封装和兼容性对比 PCB Layout建议 PCB layout参考设计 参考设计1 参考设计2 ...

  6. 怎么听外国 播客_设计您想听的播客

    怎么听外国 播客 Hey folks, as an avid designer and podcast listener, I've bookmarked lots of design podcast ...

  7. 夺旗赛 CTF 六大方向基础工具简介

    一.MISC方向 杂项往往是不能被归到其他类别里的题目,所以什么样的题都有,工具也很杂. 主要的分类有: 1.视频音频图片类 Stegsolve.jar 一款图像隐写工具,支持使用不同方式解除图像隐写 ...

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

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

  9. eMMC芯片测试项目流程是什么?有相关大佬给个简短介绍吗?都有哪些必要的测试项?

    eMMC芯片,他的测试项目主要流程是什么? eMMC芯片测试项目流程是什么?有相关大佬给个简短介绍吗?都有哪些必要的测试项?

最新文章

  1. Word英文字符间距太大 中英文输入切换都不行
  2. win7安装omnetpp-4.6
  3. 为什么每次关机都要关闭mysql_在机器关机时关闭mysql服务实例
  4. submit按钮html,html的两种提交按钮submit和button
  5. linux下的环境变量/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc文件
  6. VTK:PolyData之SelectPolyData
  7. winphone8更换帐号问题的几点说明
  8. 从零开始做一个SLG游戏(二):用mesh实现简单的地形
  9. 定量遥感:计算地方时和太阳高度角(C++代码)
  10. django ajax 简书,Django_ajax
  11. P2386 放苹果 方法一
  12. android studio 3.0 安装配置
  13. 【Ardunio】开发入门教程【二】数据类型
  14. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 28 章 监控数据库活动_28.3. 查看锁
  15. 安卓笔记:去除顶部的bar(安卓5.1)
  16. py验证码-联众验证码接入
  17. 算法的稳定性matlab,基于MATLAB地震反应谱数值算法的稳定性和精度分析
  18. 【嵌入式开发】STM8S103F3P6单线半双工串口通信
  19. 高德地图web精准定位
  20. WinRAR 被曝严重安全漏洞;苹果预计推出跨平台应用

热门文章

  1. 【无标题】Cubase 10 关于 音频录音终止,磁盘已满 的问题解决
  2. mac在终端查看本地ip
  3. 对数字地和模拟地的理解和分析(原理图设计和pcb布线时需要考虑)
  4. Java流Strem
  5. shopyy建站的功能
  6. 国内厂商:苹果胜诉高通太难 不过或能减少专利费
  7. 路行助手无法使用_路行助手登录企业微信为什么一直登录不上?
  8. 37、【华为HCIE-Storage】--Oceanstor 9000概述
  9. 玩 android系统连接蓝牙键盘
  10. 【数字设计】华为海思/消费者BG_笔试面试题目分享