NANDFlash文件系统方案及其可靠性设计
- 格式:pdf
- 大小:101.02 KB
- 文档页数:2
NAND Flash的坏块管理设计时间:2010-11-15 10:36:55 来源:电子设计工程作者:周军湖南机电职业技术学院摘要:主要介绍了基于嵌入式Linux的NAND Flash坏块管理设计和实现方案,详细阐述了坏块映射表的建立、维护及其相关算法,同时分析了此坏块算法在Linux内核及Bootloader中的具体应用。
测试结果表明该算法能够处理NANDFlash的相关坏块问题,具有较高的稳定性。
关键词:NAND Flash;嵌入式IAnux;映射表;坏块管理在拥有诸多优点的同时,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层对坏块不可见,并使坏块的管理是基于整个芯片而不是某个分区,便于上层文件系统实现损耗平衡。
BBM层基于驱动层提供的读、写、擦除相关操作实现接口read()、write()、erase()、read_oob()、write_oob()、isbad()、mark_bad()。
存储测试系统中FLASH的存储可靠性技术研究高阳;王代华;王晓楠【摘要】The NAND FLASH has versatile features such as nonvolatile,large storage capacity and fast read-write speed, and is widely used in the field of stored measurement,but the low reliability of the invalid block mapping table has a bad influence on storage speed and reliability because invalid blocks may ineluctably appear in NAND FLASH memory and the traditional in-valid block management methods put the table in the FLASH memory. For these problems,invalid block information fast retriev-al architecture based on external storage data bits is proposed,with which the invalid block mapping table can be put in high-re-liability FRAM. The sliding window principle is imported into computer network to establish an invalid block pre-matching mech-anism based on the sliding window,by which the effective block address can be generated without delay while FLASH storage access speed does not be affected. The analysis and argument results indicate this architecture can improve the reliability and ac-cess speed of NAND FLASH stored data greatly,and the overall performance of storage testing system.%NAND FLASH存储器具有非易失性、存储容量大和读写速度快等优点,在存储测试领域的应用越来越广泛.由于NAND FLASH存储器中不可避免会出现无效块,传统的管理方法是将无效块映射表存放在FLASH存储器中,可靠性低,对数据存储速度和可靠性都会造成不利影响.针对这些问题,提出了基于外置存储数据位的无效块快速检索架构,将无效块映射表存放在可靠性高的铁电存储器中;引入计算机网络中的滑动窗口原理,建立了基于滑动窗口的无效块预匹配机制,在不影响FLASH存取速度的情况下可无时延地生成有效块地址.经分析和论证,这种架构对NAND FLASH存储数据的可靠性和存取速度有很大的提升,提高了存储测试系统的整体性能.【期刊名称】《现代电子技术》【年(卷),期】2017(040)018【总页数】5页(P131-134,138)【关键词】NAND FLASH;无效块管理;存储测试;铁电存储器【作者】高阳;王代华;王晓楠【作者单位】中北大学仪器科学与动态测试教育部重点实验室,山西太原 030051;中北大学仪器科学与动态测试教育部重点实验室,山西太原 030051;中北大学仪器科学与动态测试教育部重点实验室,山西太原 030051【正文语种】中文【中图分类】TN911-34;TM932存储测试特指在恶劣环境和紧凑空间下完成的高可靠性动态参数测试,用于实时、高速地采集和记录被测对象的数据信息[1⁃3]。
存储系统高可靠性设计在当今数字化时代,数据的存储和管理对于各个领域的组织和个人来说至关重要。
然而,由于各种原因,如硬件故障、自然灾害或人为错误,存储系统存在着潜在的风险和不可预测的威胁。
因此,为了确保数据的安全性和可用性,存储系统的高可靠性设计是至关重要的。
1. 可靠性需求分析与规划在开始设计之前,首先需要对存储系统的可靠性需求进行深入分析和规划。
这包括对数据的敏感程度、业务连续性要求以及可接受的风险水平进行评估。
基于这些需求,可以明确设计目标并确定适当的可靠性策略。
2. 冗余和备份策略冗余是高可靠性设计的核心原则之一。
通过在存储系统中引入冗余,可以防止单点故障导致数据丢失或系统不可用。
常见的冗余策略包括硬件冗余(如磁盘冗余阵列)、网络冗余和数据冗余。
此外,定期备份数据并存储在安全的地方也是一种有效的策略,以应对灾难性事件。
3. RAID技术的应用RAID(冗余独立磁盘阵列)技术是一种常用的存储系统冗余策略。
它通过将数据分散存储在多个磁盘上,实现数据的冗余和恢复。
RAID技术通常可分为多个级别,如RAID 0、RAID 1、RAID 5等。
根据不同的需求,可以选择适当的RAID级别来提供高可靠性和性能。
4. 数据备份和恢复策略数据备份和恢复是保证数据可靠性的重要环节。
合理的备份策略可以有效地降低数据丢失的风险。
存储系统应该定期进行全量备份和增量备份,并保证备份数据的完整性和可用性。
此外,针对不同类型的故障,如硬件故障或数据库损坏,需要制定相应的数据恢复策略,以尽快恢复系统运行并最小化数据损失。
5. 设备监测与故障预测及时监测存储设备的状态和性能可以帮助提前发现潜在的故障,并采取措施进行修复或替换。
使用适当的监测工具和技术,如磁盘S.M.A.R.T(Self-Monitoring, Analysis, and Reporting Technology)技术或传感器设备,可以实时监测设备的温度、振动和工作时间等参数,从而预测硬件故障的风险。
基于多功能单片学习机的NAND FLASH驱动的设计Thedesignof NAND FLASHdriver based on aMultifunctionSCMlearningmachine总计毕业设计<论文) 30 页表格 3 个插图 15 幅摘要基于多功能单片学习机的NAND FLASH驱动包括两部分:多功能单片学习机和NAND FLASH存储器。
本论文首先介绍了多功能单片学习机的软/硬件设计,该学习机利用自动程序切换电路,使得同一片单片机既可以运行系统程序,又可以运行用户程序,实现程序代码的在线下载。
学习机外部扩展了大量的硬件资源,丰富的系统硬件资源构成了各种实际应用电路,通过万能扩展接口可以很方便地仿真外部应用电路和扩展用户应用电路。
然后,着重介绍了NAND FLASH扩展板的软/硬件设计,通过多功能单片学习机实现对NAND FLASH的读、写时序。
关键字:多功能单片学习机自动切换电路 NAND FLASHAbstractBased NAND FLASH multi-functional single-chip learning machine drive consists of two parts: a multi-functional single-chip learning machine and NAND Flash memory. This paper introduces the hardware / software design, multi-functional single-chip learning machine with automatic switch circuit, so with a microcontroller can either run the system program, you can run the user program, the online download of the program code. external learning machine expanse a lot of hardware resources, hardware system resources poses practical application circuit, through the universal expansion interface can easily simulate the external application circuit and extend the user application circuit. Then focuses on the the NAND FLASH expansion board hardware / software design, achieved through a multi-functional single-chip learning machine NAND FLASH read and write timing.Key word:Multifunction SCMlearning machine;automatic switch circuit;NAND FLASH;目录摘要IAbstractII第一章绪论11.1国内外研究简况11.2本课题的主要目标和工作11.3全文结构2第二章多功能单片学习机72.1多功能单片学习机的硬件设计7 2.1.1 单片机AT89S52电路82.1.2 数码显示电路112.1.3 外部存储器电路142.1.4 外部存储器的保护电路17 2.1.5 键盘输入电路172.1.6自动程序切换电路182.1.7 RS232通信电路192.1.8 电源电路192.2 多功能单片学习机的软件设计20 2.3本章小结20第三章NAND FLASH扩展板的设计223.1 NAND FLASH 扩展板硬件电路设计22 3.1.1 NAND FLASH接口电路223.1.2 控制器的工作原理243.2 NAND FLASH驱动253.2.1 NAND FLASH的工作原理263.2.2 NAND FLASH的读操作263.2.3 NAND FLASH的编程273.2.4 NAND FLASH的擦除293.3本章小结30第四章 NAND扩展板的调试314.1硬件仿真注意事项314.2编程中遇到的问题314.2本章小结32第五章全文总结33参考文献34致谢35第一章绪论1.1国内外研究简况新世纪嵌入式系统迅速,主要表现在市场发展、通信、消费电子产品和多媒体应用。
NAND闪存论文:基于大容量NAND闪存文件系统关键技术研究【中文摘要】闪存(Flash Memory)是嵌入式系统中一种常用的存储介质,具有体积小、容量大、成本低等一系列优点。
它最早为人所知是通过U盘的普及。
现在,随着手机、数码相机、PDA、便携式游戏机等消费电子产品的日渐普及,闪存在我们日常生活中的使用也越来越广泛。
闪存主要分为NOR型和NAND型两类。
NOR型闪存拥有独立的数据总线和地址总线,读取速度快,适合存储程序代码,NAND型闪存的数据、地址采用同一总线,读取速度较慢,但擦写速度快,适合大容量文件和数据的存储。
随着闪存容量的加大,闪存文件系统的要求也越来越高,它对闪存的存储管理直接影响闪存的性能和工作效率。
目前可用于NAND型闪存的文件系统包括集中索引的文件系统和专门针对NAND闪存设计的文件系统。
现在已出现多种基于闪存的文件系统,如JFFS/JFFS2、YAFFS、LFM、UBIFS等。
闪存文件系统的研究包括以下几个方面的关键技术:(1)数据存储结构。
(2)文件管理机制。
(3)文件系统加载。
(4)垃圾回收机制与磨损均衡处理。
本文研究工作建立在闪存文件系统的一些关键技术上,首先对新兴发展的闪存文件系统UBIFS进行深入的研究和分析,详细介绍UBIFS的层次结构,文件日志管理与垃圾回收机制等一些关键技术。
并着重分析了UBI子系统的磨损均衡机制。
然后从内部结构,数据存储方面分析比较UBIFS与已有的常用闪存文件系统JFFS2之间的性能差异,分析UBIFS性能的优越性。
但是通过分析UBIFS文件系统的几个关键技术,还发现了UBIFS 中的UBI子系统在管理磨损均衡方面的存在着两大局限性:一是在实际操作中不能很好的适应由擦除块中数据频繁更新造成的部分擦除块磨损次数过多的问题。
二是不能有效实现擦除块中冷热数据的搬移。
针对上述问题,本文提出了一种基于逻辑擦除块温度和物理擦除块年龄的新的磨损均衡算法,即LTPA(leb temperature peb age)算法。
基于NAND FLASH的大容量视频存储系统的设计摘要:针对mpeg4格式压缩的视频数据,给出了采用nand flash 为存储介质,以fpga为存储阵列的控制器,并用dsp作为数据处理的核心单元,来完成大容量视频数据存储的系统设计方法,同时对坏块的检测处理等关键问题提出了解决方案。
关键词:fpga; dsp; flash;大容量;存储中图分类号:tn9198 文献标识码:a文章编号:2095-1302(2012)02-0033-03design of large-capacity video storage system based on nandflashli hua, jia zhen-guo(electronic engineering college, xidian university, xi’an 710071, china)abstract: for the video data compressed by mpeg4 format, a controller used nand flash as storage media, adopted fpga as storage array, and used dsp as the core unit of data processing, to complete the system design ofhigh-capacity video data storage. the solutions for bad blockdetection processing are proposed.keywords: fpga; dsp; flash; large capacity; storage0 引言科技的发展,尤其是航空、航天、航海技术的发展,对于科研设备所拍摄的视频数据以及设备运行情况的监视录像,都迫切地需要一种容量大、速度快、存储性能可靠的图像存储设备。
Nand+Flash存储管理在DSP系统中的实现NandFlash作为一种安全、快速的存储体,因其具有体积小、容量大、成本低、掉电数据不丢失等一系列优点,已逐步取代其它半导体存储元件,成为嵌入式系统中数据存储的主要载体。
尽管NandFlash的每个单元块相互独立,且每块一般可擦除次数高达10~100万次,但是随着擦写次数增加,会有一些单元块逐渐变得不稳定或失效从而形成永久性坏块。
因此,要避免频繁地对同一块进行操作,尽量达到擦写次数均衡;同时,由于擦除操作耗时较多,会Nand Flash作为一种安全、快速的存储体,因其具有体积小、容量大、成本低、掉电数据不丢失等一系列优点,已逐步取代其它半导体存储元件,成为嵌入式系统中数据存储的主要载体。
尽管Nand Flash的每个单元块相互独立,且每块一般可擦除次数高达10~100万次,但是随着擦写次数增加,会有一些单元块逐渐变得不稳定或失效从而形成永久性坏块。
因此,要避免频繁地对同一块进行操作,尽量达到擦写次数均衡;同时,由于擦除操作耗时较多,会对系统的实时性造成影响。
为此,本文介绍了一种基于磨损均衡思想的Nand Flash存储管理方式,并深入讨论了该方式在Ti公司的DSP TMS320F28x中的程序实现。
1 器件介绍本文中采用的Nand Flash芯片K9F6408U0C是一块拥有8M(8,388,608)×8bit 存储空间及 256K(262,144)×8bit辅用存储空间的存储芯片,电源电压为1.8V-3.3V。
芯片内部按块和页的方式来组织的,如图1所示,共分成1024个块,每块包含16个页,每页内有528个字节。
F28x系列DSP是美国TI公司最新推出的C2000平台上的定点DSP芯片。
图1 K9F6408UOC内部结构示意图F28x系列芯片具有低成本、低功耗和高效能等特点,特别适用于有大量数据处理的测控场合。
2 Flash的特点及存储管理的作用由K9F6408U0C的基本结构可以知道,它的基本单位有块、页、字节等。
嵌入式系统中Nand-Flash的原理及应用文档说明:当前各类嵌入式系统开发设计中,存储模块是不可或缺的重要方面。
NOR和NAND是目前市场上两种主要的非易失闪存技术。
Nor-flash存储器的容量较小、写入速度较慢,但因其随机读取速度快,因此在嵌入式系统中,常应用在程序代码的存储中。
Nor-flash存储器的内部结构决定它不适合朝大容量发展;而Nand-flash存储器结构则能提供极高的单元密度,可以达到很大的存储容量,并且写入和擦除的速度也很快。
Nand-flash存储器是flash存储器的-种,其内部采用非线性宏单元模式,为固态大容量存储器的实现提供了廉价有效的解决方案。
Nand-flash存储器具有容量较大,改写速度快,适用于大量资料的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。
本文以三星公司的K9F1208UOB芯片为例,介绍Nand-flash存储器芯片的读写流程和时序。
1 Nand-Flash存储器的工作原理1.1 Nand-Flash存储器的组成结构及指令集K9F1208UOB的容量为64Mb,存储空间按128K个页(行)、每页中528个字节(列)的组成方式构成。
备用的16列,位于列地址的512-527。
K9F1208UOB还将存储空间分为块(block),每1块由32个页构成。
因此K9F1208UOB中一共有4096个块。
这种“块-页”结构,恰好能满足文件系统中划分簇和扇区的结构要求。
K9F1208UOB的内部结构如图1所示。
图1 K9F1208UOB的内部结构K9F1208UOB的读和写都以页为单位,擦除则以块为单位进行操作。
K9F1208UOB的地址通过8位端口传送,有效地节省了引脚的数量,并能够保持不同密度器件引脚的一致性,系统可以在电路不作改动的情况下升级为高容量存储器件。
K9F1208UOB通过CLE和ALE信号线实现I/O口上指令和地址的复用。
随着嵌入式系统在消费电子,数据采集和工业控制等领域得到越来越广泛的应用。
各个领域都对嵌入式系统提出了更高的要求。
作为嵌入式系统中最重要的组成部分,存储系统呈现出了较快的发展速度。
NANDFLASH作为一种安全、快速的存储体,具有体积小、容量大、成本低、以及更多的擦除次数等一系列优点,已成为嵌入式系统中数据和程序最主要的载体。
由于NANDFLASH在结构和操作方式上与硬盘、E2ROM等其他存储介质有较大区别,使用NANDFLASH时必须根据其自身特性,对文件系统进行特殊设计,以保证系统的性能达到最优。
同时由于工艺和使用环境的问题,NANDFlash存储器中不可避免的会出现坏块,因此必须提出有效的坏块处理方法,以解决坏块问题,实现存储系统的高可靠性。
1NANDFLASH特点1.1区块结构NANDFlash存储器内部分为若干个存储单元块(block),每个存储单元块又分为若干个页(page),存储单元块是最小的擦除单位,页是写入数据的最小单位。
1.2先擦后写由于FLASH的写操作只能将数据位从1写成0,不能从0写成1,所以在对存储器进行写入之前必须先执行擦操作,将预写入的数据位初始化为1。
擦操作的最小单位是一个区块,而不是单个字节。
1.3操作指令NANDFLASH的操作不能像RAM那样,直接对目标地址进行总线操作。
比如执行一次写操作,它必须完成一段时序才能将数据写入到FLASH中。
1.4坏块NANDFLASH的坏块是随机分布的,可能在出厂时就存在坏块,也可能在使用过程中,导致某些区块的损坏。
区块一旦损坏,将无法进行修复。
如果对已损坏的区块进行操作,可能会带来不可预测的错误。
2NANDFlash文件系统的设计将整个文件系统分为两个层次,第一层,直接和物理硬件接触,管理Flash物理存储器,第二层,在基层之上,实现文件管理,如实现FAT。
2.1第一层2.1.1物理地址到逻辑地址的映射为了在NANDFlash物理地址和FAT操作的逻辑地址之间建立一个好的映射关系,须对NANDFlash的存储空间在逻辑上进行了重新定义。
物理上整个Flash划分为若干存储单元块,每个存储单元块内部分成若干物理页,每个物理页又可以分为基本的数据区和其它信息保留区(如安全性)。
逻辑上将整个存储器划分为若干簇,以簇作为最小存储单位。
确定好簇和物理页及物理区块的对应关系后,物理地址到逻辑地址的映射也就确定了。
2.1.2可靠性设计一个完善的文件系统需要有良好的可靠性。
笼统的讲,可靠性的实现,需要存储器信息的支持。
2.1.3均衡擦写次数由于NANDFlash有一定的使用寿命,所以要尽量避免频繁地对同一块地址操作,以免造成局部单元提前损坏,可以设计算法,将NANDFlash中要更新的数据直接写入一个空块中,降低由于NANDFlash先擦除后写入的特性带来的对块的频繁擦除。
2.2FAT设计在NANDFlash上,建立了FAT文件系统来对文件操作进行管理。
将FAT文件系统具体分为以下四部分:2.2.1FAT的引导区该引导区存放代码所需的信息及最重要的文件系统信息。
这些信息包括了NANDFlash存储器的类型、容量以及划分成多少个簇;每个簇包含多少扇区、FAT表数目、保留扇区数、根目录的首簇号及根目录入口数、版本信息等等。
引导扇区是在格式化NANDFlash时生成的。
2.2.2FAT的文件分配表文件分配表存放文件所占用的存储空间簇链以及NANDFlash存储器的占用和空闲空间的情况。
为了防止文件分配表损坏而引起文件的丢失,可以在系统中保存两个相同的文件分配表(下转第1324页)收稿日期:2007-09-10作者简介:程道远(1981-),男,江苏省南京市人,硕士,研究方向为嵌入式系统设计。
NANDFlash文件系统方案及其可靠性设计程道远(东南大学国家ASIC系统工程技术研究中心,江苏南京210096)摘要:NANDFlash具有高存储密度和高存储速率的特点,在嵌入式系统领域得到了广泛应用,如何使其文件系统的性能最优化成为本文讨论的主题。
本文首先提出文件系统的设计方法,主要阐述面向嵌入式应用的FAT文件系统;接着,针对NANDFlash存在固有的坏块这一弱点,为了提高整个系统的可靠性,提出一种利用嵌入式文件系统进行坏块处理的策略,核心思想为利用Flash存储器上未使用空间来代替坏块,同时,在FAT表中标记出损坏的坏的信息,避免以后对坏块进行读写。
本策略经项目的具体应用证明,具有较高可靠性。
关键词:NAND;Flash文件系统;坏块处理中图分类号:TP343文献标识码:A文章编号:1009-3044(2007)17-31320-01ADesignofFileSystemandReliabilityaboutNANDFlashCHENGDao-yuan(SoutheastuniversityASICCenter,Nanjing210096,China)Abstract:Nandflashbecomewidelyusedinembeddedsystembecauseofhighmemorydensityandhighmemoryspeed.Sohowtoim-provequalityofNandFlashfilesystemisamainsubjectinthispaper.Firstthispaperpresentthedesignmethodoffilesystem,mainaboutFATfilesysteminembedsystem.Andthenanewmethodofdealingwiththebadblockisalsointroducedinthispapertogetoverthehin-drance.Themethodisthatreplacesthebadblockwithfreespaceontheflash.Badblocksmarkedinthefileallocationtableareneveruseda-gain.Ithasbeencarriedoutinaprojectwithhighstability.Keywords:NAND;FlashFileSystem;BadBlockManagement(上接第1320页)FAT1和FAT2,以改善其安全性。
在文件系统的操作中,程序对FAT表结构的两个备份进行顺次修改,以此确保Flash存储器上总是存有一整套完好的文件分配表。
系统对FAT表的访问原理如下:访问文件时先从要目录中找到该文件的目录项,从中读出首簇号。
然后在FAT中找到从该首簇号开始的簇链,簇链上的簇号即为文件依次存放的位置,这样便可以进行数据读写了。
2.2.3FAT的根目录区FAT的根目录区是固定大小的紧跟在FAT表后的区域。
FAT16中将从FAT区之后紧跟的32个扇区作为根目录区,可以保存512个目录项。
每个目录项记录了该文件的文件名、文件属性、文件大小、文件创建的日期和时间以及文件在数据区中所占的首簇号,即该文件在FAT表中的入口等数据。
2.2.4FAT的数据区数据区存在文件的数据内容。
文件系统对数据区的存储空间是按簇进行划分和管理的。
3NANDFlash可靠性设计由于工艺和使用环境的问题,NANDFlash存储器中不可避免的会出现坏块,这一弱点长期影响存储的可靠性,带来不可预测的后果,因此如果能解决坏块问题,将大大提升NANDFlash的可靠性。
本文提出一种在文件系统底层解决坏块问题的方法,即利用Flash存储器上未使用的空间来代替坏块,同时在FAT表中标记出损坏的坏块信息,避免以后对坏块进行读写。
具体方案如下。
3.1坏块发现NANDFlash对存储器的写入采用先擦后写的流程,擦除的最小单位为1个block,写入的最小单位为一个page。
在写入数据时,先在内存中申请1个block大小的缓冲区,然后在存储空间找到要写入数据的page所在的block,将该block全部读入缓冲区,在缓冲区中将数据写入相应的page,写完后,将该block写入Flash,若在写入Flash时多次报错则判定该block为坏块3.2坏块处理3.2.1在内存里建立文件系统的反向簇链,方便进行坏块的替换。
3.2.2备份坏块对应簇的FAT表项,在FAT表中标记出该坏块的信息。
3.2.3寻找替换空间以1个block包含32个page,1个簇包含16个page,即1个block包含2个簇为例进行说明,坏块N包含x,x+1簇,首先从Flash的末尾处开始寻找空闲块,找到即进行整块的替换,见图1。
图1替代块若一直寻找到数据区的开头都没有空闲块,则重新寻找空闲簇,以簇为单位进行替换,如图2,假设Y,Z分别为X,X+1的替换簇,由于簇在物理空间上并不一定连续,因此在进行簇的替换时可能会出现3种情况:情况1:替换簇不在坏块中,即Y,Z不在坏块N中处理方法:直接进行簇的替换,将备份的索引号,直接赋值给替换簇的FAT表项,同时更新反向簇链。
情况2:替换簇在坏块中,即Y或者Z也在坏块N中,这时要再分两种情况情况2.1替换簇在被替换簇之前处理方法:因为替换簇自己在之前已经被替换,所以要备份之前更新FAT表时替换的新簇簇号,根据两坏簇间距离,到替换簇号备份中查找其应对应的簇号,来更新当前簇的链接,同时更新反向FAT表。
情况2.2替换簇在被替换簇之后处理方法:因为替换簇是坏簇,其替换的位置未知,所以只更新反向FAT表,其本身的FAT表项到更新替换簇的前续节点时再做更新。
最后查询反向FAT表,将替换的各个新簇接回其前续节点。
图2替代簇如果FAT表中已经没有空闲簇则报错,该方案完成。
使用一块32M的NANDFlash,将测试代码先写入一块数据,然后读出数据进行校验的方法对上述方案进行论证,通过两个星期反复的读写,结论为:在没有采用坏块处理程序之前,由于坏块的存在,导致写入的数据在大约12M之后全部丢失,采用坏块处理程序之后,运行的两周内没有任何校验错误。
由此可见其可靠性得到很大提升。
4结语通过上述对NANDFlash文件系统的设计,使得NANDFlash的性能大大优化,能够满足各个领域对嵌入式存储器越来越高的要求,同时在面对NANDFlash所固有的坏块问题上,通过上述坏块处理的算法,很好的解决了在NANDFlash存储介质上运用FAT文件系统的坏块问题,增加了整个嵌入式系统的存储可靠性。
参考文献:[1]陈育智.嵌入式系统中的Flash文件系统[J].单片机与嵌入式系统应用,2002(2):5-8.[2]MikeFicco.如何在嵌入式电子设备中建立多媒体文件系统[J].电子工程专辑,2004(2):20-22.[3]陈代军.解析FAT文件系统对长文件名的支持[J].成都信息工程学院学报,2004,(18):380-385.件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。