新闻中心

EEPW首页>嵌入式系统>设计应用> NAND Flash的坏块管理设计

NAND Flash的坏块管理设计

作者: 时间:2010-11-15 来源:网络 收藏

摘要:主要介绍了基于嵌入式Linux的坏块和实现方案,详细阐述了坏块映射表的建立、维护及其相关算法,同时分析了此坏块算法在Linux内核及Bootloader中的具体应用。测试结果表明该算法能够处理的相关坏块问题,具有较高的稳定性。
关键词:;嵌入式IAnux;映射表;坏块

本文引用地址://m.amcfsurvey.com/article/151348.htm

在拥有诸多优点的同时,NAND Flash由于生产工艺的问题,其在出厂时可能存在一定的坏块。这些固有坏块不能用于存储数据,已被产家标识好。另外,使用过程中由于读写次数增多,好块也会变得不稳定或失效,成为坏块,这就是出厂后产生的坏块。
NAND Flash在生产及使用过程中都有可能产生坏块,这将使得系统变得不稳定。应用中一般采用跳块策略来坏块,但它不能解决系统运行中产生的坏块情况。针对此情形,本文提出基于嵌入式Linux系统平台下的一种基于坏块映射的NAND Flash坏块管理的方案,并详细介绍其相关映射算法和整套系统的相关坏块管理流程。

1 坏块管理层次结构
Linux下的MTD(Memory Technology Device)是用于管理ROM、Flash等内存设备的一层子系统,它使编写管理内存设备驱动变得更加简单。
MTD子系统将Flash设备或其分区抽象为MTD设备,使底层驱动只需实现MTD设备,而向上层文件系统提供标准的接口,如MTD字符设备、MTD块设备。
如图1所示,本方案中,将坏块管理层(BBMlayer)紧靠在驱动层之上MTD层之下,从而使得MTD层对坏块不可见,并使坏块的管理是基于整个芯片而不是某个分区,便于上层文件系统实现损耗平衡。

a.JPG
BBM层基于驱动层提供的读、写、擦除相关操作实现接口read()、write()、erase()、read_oob()、write_oob()、isbad()、mark_bad()。对于其上层MTD子系统而言,关于坏块的相关接口将不存在,物理介质类似于NORFlash。其中read_oob()、write_oob()接口为文件系统提供相关用途,如JFFS2的cleanmarker相关载体。

2 坏块管理模块的实现
2.1 坏块管理原理
本文的设计的坏块管理是基于坏块映射原理的一种实现。在本坏块映射的设计中,NAND Flash被划分为基本空间和预留空间。基本空间为用户看到的NANDFlash的总的存储空间。基本空间中的坏块被映射到预留空间中的相应好块。基本映射关系如图2所示。映射管理信息记录在坏块映射表中,它存储在预留空间。

b.JPG


上一页 1 2 3 4 下一页

关键词:设计管理FlashNAND

评论


相关推荐

技术专区

关闭