Linux MTD 结构分析 作者 :董磊鋆 Email:dongleiju n4000@hotmail.com 专有名词: y MTD:Memory Technology Device,内存技术设备, y JEDEC:Joint Electron Device Engineering Council,电子电器设备联合会 y CFI:Common Flash Interface,通用Flash 接口,Intel 发起的一个Flash 的接口标准 y OOB: out of band,某些内存技术支持out-of-band 数据——例如,NAND flash 每 512字节的块有16 个字节的extra data,用于纠错或元数据。 y ECC: error correction,某些硬件不仅允许对 flash 的访问,也有ecc 功能,所有flash器件都受位交换现象的困扰。在某些情况下,一个比特位会发生反转或被报告反转了,如果此位真的反转了,就要采用ECC 算法。 y erasesize: 一个erase 命令可以擦除的最小块的尺寸 y buswidth:MTD 设备的接口总线宽度 y interleave:交错数,几块芯片平行连接成一块芯片,使 buswidth 变大 y devicetype:芯片类型,x8、x16 或者 x32 y NAND:一种 Flash 技术,参看 NAND 和 NOR 的比较 y NOR:一种 Flash 技术,参看 NAND 和 NOR 的比较 y Wear out:Flash 的擦除次数有限制,一般在 1000,000 次左右,由于过量的擦除,使得Flash 无效。 体系结构 MTD(memory technology device 内存技术设备)是用于访问memory 设备(ROM、flash)的 Linux的子系统。MTD 的主要目的是为了使新的 memory 设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD 的所有源代码在/drivers/mtd 子目录下。 Device Node Device Node JFFS2 FTL NFTL Character Device Access Block Device Access Patition Driver Raw Chip Device Driver Flash Chip(s) Ext2; Ext3; etc図 1 MTD 体系结构 MTD hardware device drivers 硬件驱动层(Raw Chip Device Driver): 硬件驱动层负责在 init 时驱动 Flash 硬件,Linux MTD 设备的 NOR Flash 芯片驱动遵循 CFI接口标准,其驱动程序位于drivers/mtd/chips 子目录下。NAND 型 Flash 的驱动程序则位于/drivers/mtd/nand 子目录下。 Common Flash Interface (CFI) onboard NOR flash:This is a common solution and is well-tested and supported, most often using JFFS2 or cramfs file systems. Flash 型...