linux 查看mmc分区_查看MTD,EMMC,MMC三种设备的分区

因为在做系统升级,AOSP的recovery下有一个flash_image工具,这个 工具 可以在开机状态下刷写系统分区。源码位置在/bootable/recovery/mtdutils/flash_image.c。

但在实际操作中,发现flash_image会报错:

error scanning partitions: No such file or directory

说找不到分区。调查源码发现

// flash_image.c

if (mtd_scan_partitions() <= 0) die("error scanning partitions");

// mtdutils.c mtd_scan_partitions()

/* Parse the contents of the file, which looks like:

*

* # cat /proc/mtd

* dev: size erasesize name

* mtd0: 00080000 00020000 "bootloader"

* mtd1: 00400000 00020000 "mfg_and_gsm"

* mtd2: 00400000 00020000 "0000000c"

* mtd3: 00200000 00020000 "0000000d"

* mtd4: 04000000 00020000 "system"

* mtd5: 03280000 00020000 "userdata"

*/

大概就是会通过 /proc/mtd 这个文件查找分区信息,然后进行刷写。然后我去找这个文件,结果发现设备里面并没有这个文件。于是开始查找这个mtd相关信息。

Android设备有多个分区存储不同的数据,通常的分区有recovery,boot,system,data和cache分区。几乎每个设备都有它自己的分区设计,这个和生产商有关,但常见的有MTD,EMMC和MMC设备。

MTD

Memory Technology Device,内存技术设备,是用于访问memory设备(ROM、flash)的 Linux 子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口,并进行了一个层次划分,层次从上到下大致为:设备文件、MTD设备层、MTD原始设备层、硬件驱动层。MTD的所有源代码在/drivers/mtd子目录下。

MTD设备文件

~ $ ls /dev/mtd* -l

crw-rw---- 1 root root 90, 0 Jan 1 00:00 /dev/mtd0

crw-rw---- 1 root root 90, 1 Jan 1 00:00 /dev/mtd0ro

crw-rw---- 1 root root 90, 2 Jan 1 00:00 /dev/mtd1

crw-rw---- 1 root root 90, 3 Jan 1 00:00 /dev/mtd1ro

crw-rw---- 1 root root 90, 4 Jan 1 00:00 /dev/mtd2

crw-rw---- 1 root root 90, 5 Jan 1 00:00 /dev/mtd2ro

crw-rw---- 1 root root 90, 6 Jan 1 00:00 /dev/mtd3

crw-rw---- 1 root root 90, 7 Jan 1 00:00 /dev/mtd3ro

brw-rw---- 1 root root 31, 0 Jan 1 00:00 /dev/mtdblock0

brw-rw---- 1 root root 31, 1 Jan 1 00:00 /dev/mtdblock1

brw-rw---- 1 root root 31, 2 Jan 1 00:00 /dev/mtdblock2

brw-rw---- 1 root root 31, 3 Jan 1 00:00 /dev/mtdblock3

/dev/mtd:

crw-rw-rw- 1 root root 90, 0 Jan 1 00:00 0

cr--r--r-- 1 root root 90, 1 Jan 1 00:00 0ro

crw-rw-rw- 1 root root 90, 2 Jan 1 00:00 1

cr--r--r-- 1 root root 90, 3 Jan 1 00:00 1ro

crw-rw-rw- 1 root root 90, 4 Jan 1 00:00 2

cr--r--r-- 1 root root

你可能感兴趣的:(linux,查看mmc分区)