MTD

  • 格式:docx
  • 大小:15.86 KB
  • 文档页数:2

MTD

1 MTD简介

1.1 MTD是怎么来的

传统上, UNIX 只认识块设备和字符设备。字符设备是类似键盘或者鼠标的这类设备,你必须从它读取当前数据,但是不可以定位也没有大小。块设备有固定的大小并且可以定位,它们恰好组织成许多字节的块,通常为512字节。

闪存既不满足块设备描述也不满足字符设备的描述。它们表现的类似块设备,但又有所不同。比如,块设备不区分写和擦除操作。因此,一种符合闪存特性的特殊设备类型诞生了,就是MTD设备。所以MTD既不是块设备,也不是字符设备。

1.2 MTD是什么

MTD(Memory Technology Device,内存技术设备),是用于访问memory设备(ROM、Flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。在Linux内核中,引入MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。MTD 的所有源代码在/drivers/mtd子目录下。

1.3 MTD有什么作用

MTD是linux内核为了简化对Flash设备的编程而建立的一种驱动框架。当各种Flash设备需要加入到linux的内核中时,不需要编写复杂的驱动程序来在内核中建立块设备等等。而只需要遵循MTD驱动的架构,实现相应的驱动接口,就能将各种Flash设备加入到内核中去,并在内核中形成块设备、字符设备等。

总而言之,MTD就是将各种Flash设备的一些共有特性抽象出来,在文件系统和设备之间形成一种联系和框架。所有的Flash设备可以利用这个框架来加入

内核中,而设备只需要实现框架没有的特性,就能完成开发。

2 MTD子系统框架

CFI接口的MTD设备可分为4层(从设备节点直到底层硬件驱动),这4层从下到上依次是:Flash硬件驱动层、MTD原始设备层、MTD设备层和设备节点。