emmc是什么意思_emmc详细介绍

电子常识

2632人已加入

描述

  定义:

  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/UFS4.41/4.54.41/4.5

  型号KMQ7X0000SAMTFC8GACAANATHGBMAG6A2JBAIR

  电压1.8V2.7V-3.3V2.7V-3.3V

  读/写速度(MB)250/90100/25100/25

  EMMC 硬件分区

  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硬件分区上的软件分区

  emmc

 

  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

emmc

  EMMC初始化主要完成下面的工作:

  1)设置HC为SDR12模式,CLK为26M,数据线为1bit模式;

  2)分频系数为66(400K)

  uboot阶段:

  emmc

  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总体架构

  emmc

  文件系统:

  1. 提供管理底层文件系统的功能组件(inode、directory entry、page cache等)

  2. 提供访问底层文件系统的方法(read、write、open等系统调用)

  转换为对具体分区具体块的访问

  Card层:

  emmc都是块设备,需要提供块设备的驱动程序,这部分就是实现了将emmc如何实现为块设备的。并获取文件系统的request,转发给core层

  core层:

  这部分完成了不同协议和规范的实现,并且为HOST层的驱动提供接口函数,调用host层的ops

  host层:

  这部分完成AP测主机的初始化,以及对外设emmc卡的初始化和读写。(平时编写驱动需要修改的地方)

  emmc

  EMMC probe流程:

  emmc

  EMMC 数据读写流程:

  emmc

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分