MTD(Memory Technology Devices)是一个软件抽象层,为了屏蔽不同种类和不同厂商的闪存,从而为上层的文件系统提供统一的接口。
嵌入式的文件系统主要有YAFFS, JFFS,UBIFS等。
闪存,MTD及文件系统之间的关系,如下图所示:
说明:
(1)对于JFFS2或YAFFS2来说,它看到的是统一的mtd接口,而不论上面的硬件是NAND或ONENand, 厂商是三星还是东芝。这些接口包括mtd->read, mtd->write, mtd->erase等,参见include/linux/mtd.h
(2) 内核中有一个分区表来统一系统中所有的nand, 例如下面就是一个分区表的例子:
static struct mtd_partition partitions[] = { \
[0] = { \
.name = "Bootloader", \
.offset = 0, \
.size = 0x100000, \
}, \
[1] = { \
.name = "MassStorage0", \
.offset = 0x100000, \
.size = MTDPART_SIZ_FULL, \
}, \