MTD 技术的基本原理
MTD(memory technology device 内存技术设备)是用于访问 memory 设备(ROM、ash)的
Linux 的子系统。MTD 的主要目的是为了使新的 memory 设备的驱动更加简单,为此它在硬件和上
层之间提供了一个抽象的接口,并进行了一个层次划分,层次从上到下大致为:设备文件、MTD 设
备层、MTD 原始设备层、硬件驱动层。MTD 的所有源代码在/drivers/mtd 子目录下。
MTD 字符驱动程序允许直接访问 ash 器件,通常用来在 ash 上创建文件系统,也可以用来直接
访问不频繁修改的数据。
MTD 块设备驱动程序可以让 ash 器件伪装成块设备,实际上它通过把整块的 erase block 放到
ram 里面进行访问,然后再更新到 ash,用户可以在这个块设备上创建通常的文件系统。
系统中的 MTD 设备文件
?
1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
~ $ 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: