MTD是Linux内核提供的一种存储器子系统,是专门用于嵌入式设施上的存储器子系统,它可以让用户在用户空间中像读写普通文件一样读写Flash设施。MTD是基于Page的,即每次读写都是以Page为单位进行的;MTD支持多种Flash种类,包含NOR Flash和NAND Flash等。
1、MTD概述
MTD是Linux内核提供的一种存储器子系统,它可以让用户在用户空间中像读写普通文件一样读写Flash设施。和传统的块设施不同,MTD是基于Page的,即每次读写都是以Page为单位进行的。MTD支持多种Flash种类,包含NOR Flash和NAND Flash等。
2、MTD驱动
MTD驱动是连接硬件和软件的桥梁,它负责将硬件抽象成合适于Linux内核用的接口。MTD驱动分为两类型型:底层驱动和上层驱动。底层驱动负责与硬件通信,上层驱动则负责提供文件系统接口。
3、MTD分区
MTD分区是将Flash设施划分成多个逻辑块,每一个逻辑块可以单独进行读写操作。一般情况下,一个物理块被划分成多个逻辑块,每一个逻辑块对应一个虚拟地址。在Linux内核中,可以通过mtd_partitions结构体来概念MTD分区。
4、MTD文件系统

在Linux中,可以用JFFS2、UBIFS等文件系统来管理MTD设施中的数据。这类文件系统可以直接在Flash设施上进行操作,并且支持压缩、碎片整理等功能。
5、 MTD工具
Linux内核提供了多个工具来对MTD设施进行管理和测试。其中包含nanddump、nandwrite、flashcp等工具linux 用户空间 mtd,可以用于读取、写入Flash设施中的数据;mtd_debug、mtdinfo等工具则可以用于调试和查询MTD设施信息。
6、MTD应用案例
现在,在不少嵌入式设施上都用了MTD存储器子系统。譬如说路由器、无线电视盒子、智能家居等等。在这类设施上,MTD存储器子系统被广泛地应用于固件更新、配置存储和日志记录等方面。
7、MTD研究进展
近年来,在MTD存储器子系统方面也有不少新进展。譬如说UBI(Unsorted Block Images)就是一种新型的闪存管理方法,可以提升闪存寿命和靠谱性;另外还有FTL(Flash Translation Layer)技术也被广泛地应用于闪存控制器中。





