加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

初始mtd学习笔记

发布时间:2020-12-15 06:51:00 所属栏目:百科 来源:网络整理
导读:? 一、基本架构 闪存是无需供电保持信息的可擦写的存储器。闪存与经过裁剪的、合适的设备驱动程序和文件系统一起使用。在linux系统中,这种特别设计的驱动程序和文件系统是由MTD子系统提供的。 linux-MTD的组成 1.?????? MTD核心 2.?????? 映射驱动程序。 3.
?

一、基本架构

闪存是无需供电保持信息的可擦写的存储器。闪存与经过裁剪的、合适的设备驱动程序和文件系统一起使用。在linux系统中,这种特别设计的驱动程序和文件系统是由MTD子系统提供的。

linux-MTD的组成

1.?????? MTD核心

2.?????? 映射驱动程序。

3.?????? 芯片驱动程序。芯片通信的命令支持。

用户程序提出请求后,经过VFS(虚拟文件系统),解析出具体的文件系统,如jffs2,yaffs2

mtd设备驱动分三层

操作系统接口层

块设备mtd_block.c mtd_blkdev.c

字符设备mtd_char.c

?

处理协议层

MTD设备驱动(nandbase.c)

和结构nand_chip相关

?

相关硬件层(芯片驱动程序)

S3C2410_nand.c和硬件相关。

?

MTD块设备驱动程序可以让flash器件伪装成块设备

mtd_info用于描述MTD原始设备信息。其中定义了大量关于MTD的数据和操作函数。如页大小,OOB大小,块大小,ecc类型等。

块设备是要放在文件系统上才能访问的。JFFS2是专门为flash设计的完整的文件系统。cramfs,只读的文件系统,压缩比例高。yaffs文件系统是为nand flash器件设计的文件系统。

二、数据结构

mtd_partition? 标识闪存芯片的分区情况

map_info 联系映射驱动程序与芯片驱动程序

mtd_info一般设备相关信息

erase_info,erase_info_user,用于闪存擦除管理结构

cfi_private,?由NOR芯片驱动程序维护的设备相关信息

nand_ecclayout,NAND芯片组的OOB空闲区布局

三、nand flash相关

nand flash内部有许多块(block)组成,每块又由若干页(page)组成。第

页有保留的冗余区(spare area)。写入数据的最小单元是页,擦除的最小单

元是块。一般情况下,每512个字节对应16个冗余字节的冗余区,用于存储差

错校验码,逻辑地址等。

?

根据一个flash单元可存储的bit位,可将flash分为SLC和MLC两种。MLC

flash可存储2~4位信息。

使用flash要解决的问题

1.块擦除次数有限

?????? 采用损耗均衡法使各个块近似均衡使用

2.异位更新

?????? flash中的数据修改后要放在其它空闲的区域,原来的区域要在适

当的时候擦除。因此需要地址映射、垃圾回收等技术来管理存储空间。

3.坏块

?????? nand在生产和使用的过程中会产生坏块。

4.错误校验码

?????? nand flash会产生位翻转的问题。需要使用ECC算法来纠错。

?以上4个问题都要在文件系统中(NFTL层)解决。

?

nand flash使用

nand flash按功能上可以分为这么几个部分

1.有效数据区

2.替代区

3.空闲区

4.待擦除区

5.坏块区

所以在物理区管理上你可以分为这么三个部分

1.映射区

2.数据使用区

3.保留区

映射区内要包含坏块表(一般一页就够了)

数据使用区,就是自己使用的地方。具体就是上面说的空闲区,待擦除区,替代区。

保留区,就是防止flash使用过程中产生了坏块,用此区去填充坏掉的块。

第一次使用时,必须扫描全盘建立坏块表。这一步是通过查询冗余区的块状态字节完成的。此后根据情况,利用冗余区查询flash的ecc信息,地址转换表信息,块状态信息等完成相应的操作。

关于nand flash的具体操作,参看http://download.csdn.net/source/3568972

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读