emmc是什么意思_emmc详细介绍

🏷️ 365bet娱乐场开户 📅 2025-09-15 00:33:31 👤 admin 👀 9672 ❤️ 990
emmc是什么意思_emmc详细介绍

定义:

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

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 数据读写流程:

相关推荐

Altium Designer 学习笔记
365bet365.com

Altium Designer 学习笔记

📅 08-19 👀 3569
鞋底怎麼勾
365bet娱乐场开户

鞋底怎麼勾

📅 07-12 👀 9092
《阴阳师》樱花妖茏花蔓缀获取方式
365bet365.com

《阴阳师》樱花妖茏花蔓缀获取方式

📅 09-11 👀 1298