Linux-Flash驱动(4)-MTD系统架构

来源:互联网 发布:温度控制pid算法c程序 编辑:程序博客网 时间:2024/05/16 09:27

1、什么是MTD系统架构

MTD(memory technology device 存储 技术设备 ) 是用于访问 memory 设备( ROM 、 flash )的 linux 的子系统。 MTD 的主要目的是为了使新的 memory 设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。 MTD 的所有源代码在 /drivers/mtd 子目录下 。

FLASH在嵌入式系统中是必不可少的,它是bootloader、linux内核和文件系统的最佳载体。在Linux内核中引入了MTD子系统为NORFLASH和NAND FLASH设备提供统一的接口,从而使得FLASH驱动的设计大为简化。

引入MTD系统后,它把FLASH采用了一个分区的技术,比如说4M存放bootload,10M存放内核,20M存放文件系统,在我们的开发板上输入:
#cat  /proc/mtd/
可以查看到,果然有几个mtd的分区,mtd0:uboot,mtd1:kernel,mtd2:Yaffs2文件系统。
在这里每一个分区都是一个块设备,我们来查看这些分区对应哪些块设备:
#ls -l /dev/mtd*
可以看到b开头的设备都是mtd分区对应的块设备

2、MTD架构分析


在MTD系统中分为4层,前三层Linux内核已经实现好了,最后一层Flash驱动层是需要开发者实现的。
当没有MTD子系统时,开发者在Flash驱动中需要实现注册,读写,纠错等功能,如果有众多的FLASH设备,分别实现读写、纠错等程序是十分艰难的。于是把这些操作吸取出来的共性交给Linux内核去完成,Flash驱动只实现特定的硬件操作,这样Flash驱动不仅简单、而且规范。这就是MTD子系统产生的原因。

原创粉丝点击