增强基于NAND Flash的FAT文件系统稳定性的方法 【技术领域】
本发明涉及一种增强基于NAND Flash的FAT文件系统稳定性的方法。
背景技术
FAT文件系统主要包括FAT区、目录区和数据区三个部分,其中FAT区和目录区为重要的数据区,一旦损毁就会导致文件或整个磁盘数据损坏。由于NAND Flash的特性,造成了NAND Flash特定区域的读写寿命非常有限,而FAT文件系统的原理决定了文件分配表(FAT表)写入次数非常频繁,进而导致FAT区容易损毁造成存储介质中所有数据丢失。一种解决方法式对FAT表在内存中进行缓冲,以减少FAT表写入次数。但该方法的缺点是如果在没有后备电源的系统上,掉电后缓冲数据来不及写入磁盘的数据簇部分仍然会丢失,范围为0~128簇或更多。
【发明内容】
本发明的目的在于克服现有技术的不足,提供一种增强基于NAND Flash的FAT文件系统稳定性的方法,该方法有利于在减少文件分配表频繁写入次数的同时,防止掉电时写入数据的大量丢失。
为实现上述之目的,本发明的技术方案是:一种增强基于NAND Flash的FAT文件系统稳定性的方法,其特征在于:通过在系统中增加EEROM并使之与FAT缓存配合工作来防止掉电时写入数据的大量丢失,该方法包含以下步骤:
(1)从NAND Flash的FAT区中读取文件分配表到FAT缓存;
(2)从FAT缓存的文件分配表中为待写入数据寻找空的FAT簇号;
(3)找到后在FAT缓存中修改簇链关系,并将文件分配表改动的位置和数据信息写入EEROM;
(4)修改NAND Flash的目录区中指示文件大小的标签;
(5)往NAND Flash的数据区写数据;
(6)上个数据写完后,如果还有新的待写入数据,则返回步骤(2),直至FAT缓存中所有空的FAT簇号都被修改完,再将FAT缓存中的数据写回NAND Flash;如果没有新的数据需要写入,则直接将FAT缓存中的数据写回NAND Flash。
本发明的有益效果是通过将FAT表中的缓冲数据放到EEROM中,解决了缓冲数据单纯放置到FAT缓存中掉电丢失数据量过大的问题,可以将掉电丢失数据减少到最多0~1个簇,提高了数据完整性和FAT文件系统的稳定性。
下面结合附图及具体实施例对本发明作进一步的详细说明。
【附图说明】
图1是现有技术的工作原理框图。
图2是本发明的工作原理框图。
【具体实施方式】
本发明的增强基于NAND Flash的FAT文件系统稳定性的方法,通过在系统中增加EEROM并使之与FAT缓存配合工作来防止掉电时写入数据的大量丢失,该方法包含以下步骤:
(1)从NAND Flash的FAT区中读取文件分配表到FAT缓存;
(2)从FAT缓存的文件分配表中为待写入数据寻找空的FAT簇号;
(3)找到后在FAT缓存中修改簇链关系,并将文件分配表改动的位置和数据信息写入EEROM;
(4)修改NAND Flash的目录区中指示文件大小的标签;
(5)往NAND Flash的数据区写数据;
(6)上个数据写完后,如果还有新的待写入数据,则返回步骤(2),直至FAT缓存中所有空的FAT簇号都被修改完,再将FAT缓存中的数据写回NAND Flash;如果没有新的数据需要写入,则直接将FAT缓存中的数据写回NAND Flash。
文章中提到的FAT为FAT12、FAT16和FAT32总称。
如果正在进行步骤(2)、(3)或(4)的操作时掉电,则此时会出现两种情况,一种是之前未往数据区写入过数据,则读到FAT缓存中的文件分配表中地簇链关系尚未经过修改,还有一种情况是之前已完整写入过数据,故FAT缓存中的部分簇链关系已经过修改,但由于FAT缓存中所有空的FAT簇号未被全部修改完,使得修改过的簇链关系还未被从FAT缓存写回NAND Flash的FAT区。因此,在重新上电后,判断是否存在上个数据已完整写入,但对应修改的簇链关系还未写回NAND Flash的情况,如果是,则读出EEROM中的数据,即文件分配表改动的位置和数据信息,即可恢复已写入数据对应的簇链关系,从而恢复之前写入数据区的数据,否则由于不存在数据丢失的问题,不进行相应的操作。
如果正在进行步骤(5)的操作时掉电,则在重新上电后,读出EEROM中的数据,恢复所有已写入数据对应的簇链关系,并修改目录区中指示掉电时正在写入数据大小的标签,将数据大小修改为掉电时正在写入数据中已写入NAND Flash这部分数据的大小,以恢复之前写入数据区的所有数据。这样就可以恢复之前已完整写入的数据及掉电时正在写入数据中已写入NAND Flash的这部分数据,使得数据丢失量小于一个簇。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。