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

本文介绍了MTD系统架构,详细解释了其如何为NORFLASH和NANDFLASH提供统一接口,简化驱动设计,并通过分区技术管理不同的存储区域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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子系统产生的原因。

更多Linux资料及视频教程点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值