[linux]MTD和MMC设备

MTD

MTD(Memory Technology Device)子系统(代表内存技术设备)为原始闪存设备提供了一个抽象层。 当使用不同的闪存类型和技术(例如NAND,OneNAND,NOR 等)时,可以使用相同的API。

MTD子系统不处理MMC,eMMC,SD,CompactFlash等块设备。这些设备不是原始闪存,但它们内部具有Flash Translation层,这使它们看起来像块设备。 这些设备是Linux块子系统而不是MTD。
mtd子系统接口

MTD字符设备-通常称为/dev/mtd0,/dev/mtd1等。 这些字符设备提供对原始闪存的I/O访问。 它们支持许多ioctl调用,用于擦除擦除块,将其标记为不良或检查擦除块是否不良,获取有关MTD设备的信息等。

sysfs接口,它提供有关系统中每个MTD设备的完整信息。 此接口易于扩展,并且鼓励开发人员尽可能使用sysfs接口,而不是较旧的ioctl或/proc/mtd接口。 mtd子系统的sysfs接口已在内核中进行了说明,当前可在Documentation/ABI/ testing/sysfs-class-mtd中找到。

/proc/mtd proc文件系统文件提供常规的MTD信息。 这是旧版界面,而sysfs界面提供了更多信息。

MTD子系统支持带有软件和硬件ECC的 raw NAND闪存,OneNAND闪存,CFI(通用闪存接口)NOR闪存以及其他类型的闪存。


MTD 内核API

MTD子系统API在include/linux/mtd/mtd.h中定义。
此文件中的方法和数据结构被更高层的内核代码(例如Flash文件系统)用来访问和控制mtd设备,还被设备驱动程序作者用于将其设备注册到mtd子系统。 在mtd_info结构中定义了驱动程序用来访问设备的各种方法。


MTD子系统调用关系

mtdblock dirver

MTD中提供的mtdblock驱动程序是一种古老的工具,它在MTD设备之上模拟块设备(即将字符设备模拟为块设备)。 它甚至没有不良的擦除块处理,因此它实际上不适用于NAND闪存。 它的工作方式是将整个闪存擦除块缓存在RAM中,根据请求对其进行修改,然后擦除整个块并写回修改后的内容。 这意味着mtdblock不会尝试进行任何优化,并且在断电的情况下您将丢失大量数据。 最后但并非最不重要的一点是,mtdblock不执行任何耗损均衡或位翻转处理。


MTD 子系统的作用就是提供Flash硬件到用户层一个抽象层,用户可以通过/dev/mtdX直接操作flash器件
/dev/mtdN和/dev/mtdblockN是同一个MTD设备的同一个分区(N一样)
mtd-utils工具只能应用于/dev/mtdN的MTD字符设备,因为只有MTD字符设备支持ioctl


Linux MTD子系统(二)——mtdblock驱动分析_知否,知否的博客-CSDN博客


MMC

SD/MMC卡组成的存储系统是许多嵌入设备的主要存储设备,相当于PC机的硬盘,在嵌入设备上的SD/MMC卡控制器通过MMC协议来解析命令控制SD/MMC卡的操作。SD/MMC卡上有一些寄存器来控制卡的状态及读写操作。MMC协议规定的寄存器有:

CID寄存器,128位,是卡的鉴别寄存器,存有卡的鉴别信息;

RCA寄存器是16位,存有卡的本地系统的相对地址,在初始化时由控制器动态指定。

DSR寄存器16位,是配置卡的驱动程序的寄存器,是可选的。

CSD进村器是卡特定数据信息描述寄存器,是可选的。

OCR寄存器是操作控制寄存器;

MMC驱动程序分通用设备层、MMC抽象设备层、MMC协议层和具体设备层四层来构建;上一层抽象出下一层的共有特性,每一层以响应的结构来描述。

通用设备层:对于块设备来说,主要负责设备内核对象在sysfs文件系统中的管理、请求队列管理、及与文件系统的接口。

MMC抽象层:抽象出MMC卡的公有特性,如:MMC卡的请求管理、电源管理等。

MMC协议层:将MMC操作分解成标准的MMC协议;

具体设备层:负责具体物理设备的寄存器控制等。

MMC驱动程序主要处理两部分的内容,一是创建通用硬盘结构向系统注册,以便系统对MMC设备的管理。另一方面,要完成系统分发过来的读写请求的处理。

SD卡和MMC卡 

Secure Digital Memory Card

SD卡数据传送和物理规范是由MMC发展而来,尺寸大小和MMC差不多。SD卡与MMC卡保持着向上兼容,也就是说,MMC可以被新的SD设备存取,兼容性则取决于应用软件,但SD卡却不可以被MMC设备存取。

 SD卡的读写速度一般比MMC卡快,这是因为SD卡在读写时会使用特殊的控制器芯片来加速存取数据,而普通的MMC卡并不具备这个功能。不过随着技术的进步,现在有一些高速率的MMC卡,它们的读写速度已经与SD卡相差不大了。

SD卡有更广泛的兼容性,基本上所有的设备都支持SD卡,而且签名联合会已经将SD卡定为数字相机的标准插槽。然而,MMC卡在某些设备中也能被使用,但并不是所有设备都支持MMC卡,例如新推出的入门级相机、数码相框上,一些车载导航系统也只支持SD卡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小白20200202

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值