面向嵌入式存储器的FAT文件系统后分配方法及系统转让专利

申请号 : CN202010135633.9

文献号 : CN111367474B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田海山

申请人 : 湖南师范大学

摘要 :

本发明公开了一种面向嵌入式存储器的FAT文件系统后分配方法,包括以下步骤:第1步:查询FDT表;第2步:查询FAT表;第3步:顺序写入数据;第4步:查询1个文件的数据是否写入完毕,若完毕进行第5步,否则返回第3步;第5步:在FAT表中更新1个文件对应的簇链接信息;第6步:查询数据存储是否结束,若结束进行第8步,否则进行第7步;第7步:查询n个文件的数据是否写入完毕,若已完毕进行第8步,否则进行第3步;第8步:在FDT表内更新文件信息;第9步:查询数据存储是否结束,如结束进行第10步,否则进行第3步;第10步:数据存储结束。本发明有效降低了文件管理的时间开支,又保障了文件管理的灵活性。

权利要求 :

1.一种面向嵌入式存储器的FAT文件系统后分配方法,其特征在于,包括以下步骤:第1步:查询FDT表,获取已使用的文件数量、位置信息;

第2步:查询FAT表,寻找已使用存储空间的起始簇号和末簇号;

第2步中,FAT表查询的操作采用FAT表簇顺序链接方法,FAT表簇顺序链接方法为:在存储器工作前,读取其存储介质中的FAT表数据,查询已使用的起始、末簇号,按照顺序存储方法,令第2簇至第D簇固定分配给FDT表,则末簇以后的簇、以及簇D至起始簇号之间簇都是空闲簇;数据存储时,记录已写入的数据量,通过计算确定后续数据存储的簇号;

第3步:在数据区顺序写入256个扇区的数据;

第4步:查询1个文件的数据是否写入完毕,若完毕进行第5步,否则返回第3步;

第5步:在FAT表中更新1个文件对应的簇链接信息;

第6步:查询数据存储是否结束,若结束进行第8步,否则进行第7步;

第7步:查询n个文件的数据是否写入完毕,若已完毕进行第8步,否则进行第3步;

第8步:在FDT表内更新文件信息;

第9步:查询数据存储是否结束,如结束进行第10步,否则进行第3步;

第10步:数据存储结束。

2.根据权利要求1所述的面向嵌入式存储器的FAT文件系统后分配方法,其特征在于,第1步中,FDT表查询的操作采用FDT表文件信息顺序存放方法,FDT表文件信息顺序存放方法为:在存储器工作前,读取其存储介质FDT表中的文件信息,查询到最后一个有效文件的信息,存储时在FDT表顺序存放文件,记录存放文件信息。

3.根据权利要求2所述的面向嵌入式存储器的FAT文件系统后分配方法,其特征在于,第1步中,FDT表文件信息顺序存放方法具体为:若存储介质空白时,FDT表内部没有任何文件信息,在数据存储过程中从FDT表起始端开始依次写入文件信息;若存储介质空间已部分使用,设FDT表内部已有S个文件信息,在数据存储过程中从FDT表紧邻第S个文件后端开始依次写入文件信息;在数据存储过程中记录保存的文件信息。

4.根据权利要求3所述的面向嵌入式存储器的FAT文件系统后分配方法,其特征在于,第2步中,FAT表簇顺序链接方法具体为:若存储介质空白时,令Cluster_N表示FAT表总簇数,从任意簇号开始顺序存储数据,记录到第Cluster_N簇时再折返到第D+1簇处顺序存储数据,至数据存储结束或者设备存储空间使用完毕;若存储介质已部分使用时,设FAT表已使用的首簇为第N簇、末簇为第N+M簇,则从已使用的末簇第N+M簇下一个簇开始顺序存储数据,记录到第Cluster_N簇时再折返到第D+1簇处顺序存储数据,至数据存储结束或者存储至已使用的首簇第N簇处结束,存储过程中根据记录存储的数据量计算出依次写入的簇号。

5.根据权利要求4所述的面向嵌入式存储器的FAT文件系统后分配方法,其特征在于,第5步中,在FAT表中更新簇链接信息采用FAT表后分配方法,FAT表后分配方法为:在数据区一个文件的数据完全写入完毕后再更新FAT表中该文件簇链接信息。

6.根据权利要求5所述的面向嵌入式存储器的FAT文件系统后分配方法,其特征在于,第8步中,在FDT表内更新文件信息采用FDT表后配置方法,FDT表后配置方法为:每写完n个文件的数据后再更新FDT表中这n个文件信息。

7.一种适用于权利要求6中所述的FAT文件系统后分配方法的FAT文件系统后分配系统,其特征在于:包括微处理器、数据缓存器和存储介质, 微处理器分别与数据缓存器、存储介质相连,微处理器将外部数据接收并进行处理,放入到数据缓存器内暂存,最后将缓存内的数据读出并写入至存储介质。

8.根据权利要求7所述的FAT文件系统后分配系统,其特征在于:

所述微处理器包括数据接收与处理模块、外部缓存控制模块、数据存储控制模块;

所述数据存储控制模块包括FDT表查询模块、FDT表更新模块、FAT表查询模块、FAT表更新模块、介质数据写入模块;

数据接收与处理模块接收外部数据,并进行信号处理;

外部缓存控制模块将数据接收与处理模块发送的数据放入至数据缓存器内暂存,并将数据缓存器内的数据读出发送至介质数据写入模块;

FDT表查询模块按照FAT文件系统后分配方法中的FDT表文件信息顺序存放方法实现FDT表的查询;

FDT表更新模块按照FAT文件系统后分配方法中的FDT表后分配方法实现FDT表的更新;

FAT表查询模块按照FAT文件系统后分配方法中的FAT表簇顺序链接方法实现FAT表的查询;

FAT表更新模块按照FAT文件系统后分配方法中的FAT表后分配方法实现FAT表的更新;

介质数据写入模块将数据写入至存储介质。

说明书 :

面向嵌入式存储器的FAT文件系统后分配方法及系统

技术领域

[0001] 本发明涉及数据存储领域,特别涉及一种面向嵌入式存储器的FAT文件系统后分配方法及系统。

背景技术

[0002] NAND Flash是一种基于半导体技术的固态存储介质,其具有存储密度高、非易失、性能稳定、抗震动能力强以及功耗低等特点,因此NAND Flash及其产品被广泛应用于嵌入式存储器。
[0003] FAT文件系统具有结构简单、功能完善、性能稳定、易于软件编程实现等优点,是目前嵌入式存储器通用的文件管理系统之一。通过FAT文件系统,嵌入式存储器可以方便的对NAND Flash阵列、及其产品SD卡、CF卡、固态硬盘等存储介质进行数据管理。
[0004] 在现有传统技术中,FAT文件系统的数据写操作除了用于真实存储数据的写入以外,还包括一系列的文件管理操作:FAT表中的空闲簇查询和簇链接关系更新、FDT表中文件信息的查询和更新等。这些文件管理时间开支相对数据写入时间不容忽视,通常会大大降低数据写入速率。

发明内容

[0005] 为了解决上述技术问题,本发明提供一种算法简单、实用性强、灵活度高的面向嵌入式存储器的FAT文件系统后分配方法,并提供一种FAT文件系统后分配系统。
[0006] 本发明解决上述问题的技术方案是:一种面向嵌入式存储器的FAT文件系统后分配方法,包括以下步骤:
[0007] 第1步:查询FDT表,获取已使用的文件数量、位置信息;
[0008] 第2步:查询FAT表,寻找已使用存储空间的起始簇号和末簇号;
[0009] 第3步:在数据区顺序写入256个扇区的数据;
[0010] 第4步:查询1个文件的数据是否写入完毕,若完毕进行第5步,否则返回第3步;
[0011] 第5步:在FAT表中更新1个文件对应的簇链接信息;
[0012] 第6步:查询数据存储是否结束,若结束进行第8步,否则进行第7步;
[0013] 第7步:查询n个文件的数据是否写入完毕,若已完毕进行第8步,否则进行第3步;
[0014] 第8步:在FDT表内更新文件信息;
[0015] 第9步:查询数据存储是否结束,如结束进行第10步,否则进行第3步;
[0016] 第10步:数据存储结束。
[0017] 上述面向嵌入式存储器的FAT文件系统后分配方法,第1步中,FDT表查询的操作采用FDT表文件信息顺序存放方法,FDT表文件信息顺序存放方法为:在存储器工作前,读取其存储介质FDT表中的文件信息,查询到最后一个有效文件的信息,存储时在FDT表顺序存放文件,记录存放文件信息。
[0018] 上述面向嵌入式存储器的FAT文件系统后分配方法,第1步中,FDT表文件信息顺序存放方法具体为:若存储介质空白时,FDT表内部没有任何文件信息,在数据存储过程中从FDT表起始端开始依次写入文件信息;若存储介质空间已部分使用,设FDT表内部已有S个文件信息,在数据存储过程中从FDT表紧邻第S个文件后端开始依次写入文件信息;在数据存储过程中记录保存的文件信息。
[0019] 上述面向嵌入式存储器的FAT文件系统后分配方法,第2步中,FAT表查询的操作采用FAT表簇顺序链接方法,FAT表簇顺序链接方法为:在存储器工作前,读取其存储介质中的FAT表数据,查询已使用的起始、末簇号,按照顺序存储方法,令第2簇至第D簇固定分配给FDT表,则末簇以后的簇、以及簇D至起始簇号之间簇都是空闲簇;数据存储时,记录已写入的数据量,通过计算确定后续数据存储的簇号。
[0020] 上述面向嵌入式存储器的FAT文件系统后分配方法,第2步中,FAT表簇顺序链接方法具体为:若存储介质空白时,令Cluster_N表示FAT表总簇数,从任意簇号开始顺序存储数据,记录到第Cluster_N簇时再折返到第D+1簇处顺序存储数据,至数据存储结束或者设备存储空间使用完毕;若存储介质已部分使用时,设FAT表已使用的首簇为第N簇、末簇为第N+M簇,则从已使用的末簇第N+M簇下一个簇开始顺序存储数据,记录到第Cluster_N簇时再折返到第D+1簇处顺序存储数据,至数据存储结束或者存储至已使用的首簇第N簇处结束,存储过程中根据记录存储的数据量计算出依次写入的簇号。
[0021] 上述面向嵌入式存储器的FAT文件系统后分配方法,第5步中,在FAT表中更新簇链接信息采用FAT表后分配方法,FAT表后分配方法为:在数据区一个文件的数据完全写入完毕后再更新FAT表中该文件簇链接信息。
[0022] 上述面向嵌入式存储器的FAT文件系统后分配方法,第8步中,在FDT表内更新文件信息采用FDT表后配置方法,FDT表后配置方法为:每写完n个文件的数据后再更新FDT表中这n个文件信息。
[0023] 一种FAT文件系统后分配系统,包括微处理器、数据缓存器和存储介质,微处理器分别与数据缓存器、存储介质相连,微处理器将外部数据接收并进行处理,放入到数据缓存器内暂存,最后将缓存内的数据读出并写入至存储介质。
[0024] 上述FAT文件系统后分配系统,所述微处理器包括数据接收与处理模块、外部缓存控制模块、数据存储控制模块;所述数据存储控制模块包括FDT表查询模块、FDT表更新模块、FAT表查询模块、FAT表更新模块、介质数据写入模块;数据接收与处理模块接收外部数据,并进行信号处理;外部缓存控制模块将数据接收与处理模块发送的数据放入至数据缓存器内暂存,并将数据缓存器内的数据读出发送至介质数据写入模块;FDT表查询模块按照FAT文件系统后分配方法中的FDT表文件信息顺序存放方法实现FDT表的查询;FDT表更新模块按照FAT文件系统后分配方法中的FDT表后分配方法实现FDT表的更新;FAT表查询模块按照FAT文件系统后分配方法中的FAT表簇顺序链接方法实现FAT表的查询;FAT表更新模块按照FAT文件系统后分配方法中的FAT表后分配方法实现FAT表的更新;介质数据写入模块将数据写入至存储介质。
[0025] 本发明的有益效果在于:
[0026] 1、本发明的方法中,FAT表查询、FAT表更新、FDT表查询、FDT表更新的操作分别采用FAT表簇顺序链接方法、FAT表后分配方法、FDT表文件信息顺序存放方法、FDT表后配置方法,能够有效降低或消除以上4项文件管理操作带来的时间开支,同时保持数据存储中文件管理的灵活性。
[0027] 2、本发明的方法中,顺序存储数据的同时,在空白存储介质中开始存储时的数据区起始位置随机,达到了消除FAT表中的空闲簇查询时间以及保障存储介质使用寿命的双重目的。
[0028] 3、本发明的方法中,通过FAT表后配置方法,即在数据区写入一个文件数据完毕后再更新FAT表该文件的簇链接,能够大大减少FAT表簇链接信息更新时间。
[0029] 4、本发明的方法中,通过FDT表文件信息顺序存放法,在存储器工作前,读取其介质内FDT表中的文件信息,查询到最后一个有效文件的信息;在存储过程中记录存放文件信息,即可得知相应的文件信息,无需再查询,可消除FDT表查询时间。
[0030] 5、本发明的方法中,通过FDT表后配置方法,每16个文件数据存储完毕后或者存储结束后才更新FDT表文件信息,大大降低了FDT表更新时间。

附图说明

[0031] 图1为本发明方法的流程图。
[0032] 图2为FAT表簇顺序链接方法的示意图,其中2(a)为空白存储介质FAT表的示意图,2(b)为部分使用的存储介质FAT表的示意图。
[0033] 图3为FAT表后配置方法的示意图。
[0034] 图4为FDT表文件信息顺序存放方法的示意图,其中4(a)为空白存储介质FDT表的示意图,4(b)为部分使用的存储介质FDT表的示意图。
[0035] 图5为FDT表后配置方法的示意图,其中5(a)为FDT表16个文件信息后配置的示意图,5(b)为存储结束时FDT表M个文件信息配置的示意图。
[0036] 图6为本发明系统的结构框图

具体实施方式

[0037] 下面结合附图和实施例对本发明作进一步的说明。
[0038] 如图1所示,一种面向嵌入式存储器的FAT文件系统后分配方法,包括以下步骤:
[0039] 第1步:查询FDT表,获取已使用的文件数量、位置信息;
[0040] FDT表查询的操作采用FDT表文件信息顺序存放方法,即FDT表文件信息顺序存放,以消除FDT表查询时间TFDT_read。FDT表文件信息顺序存放方法为:在存储器工作前,读取其介质内FDT表中的文件信息,查询到最后一个有效文件的信息,存储时在FDT表顺序存放文件,记录存放文件信息,无需再查询FDT表。
[0041] FDT表文件信息顺序存放方法具体为:如图4(a)所示,存储介质空白时,FDT表内部没有任何文件信息,在数据存储过程中从FDT表起始端开始依次写入文件信息;图4(b)为已部分使用的存储介质的FDT表,FDT表内部已有S个文件信息,在数据存储过程中从FDT表紧邻第S个文件后端开始依次写入文件信息;在数据存储过程中记录保存的文件信息,无需再查询,因此可以消除TFDT_read。
[0042] 第2步:查询FAT表,寻找已使用存储空间的起始簇号和末簇号。
[0043] FAT表查询的操作采用FAT表簇顺序链接方法,顺序存储数据,消除FAT表中空闲簇查询时间TFAT_read。FAT表簇顺序链接方法为:在存储器工作前,读取其介质中的FAT表数据,查询已使用的起始、末簇号,按照顺序存储方法,令存储介质中第2簇至第D簇固定分配给FDT表,则末簇以后的簇、以及簇D至起始簇号之间簇都是空闲簇;数据存储时,记录已写入的数据量,通过计算确定后续数据存储的簇号,无需查询。
[0044] FAT表簇顺序链接方法具体为:结合图2进行说明,图2(a)为存储介质空白时的FAT表,其中‘F8FFFFOF’是第1簇标识,Cluster_N表示FAT表总簇数,从箭头所指的任意簇号N开始顺序存储数据,记录到第Cluster_N簇时再折返到第D+1簇处顺序存储数据,至数据存储结束或者设备存储空间使用完毕。从任意一个簇号N开始存储的目的是使得存储器内介质空间被使用的概率相等,介质各个位置磨损均衡,从而保障介质使用寿命;图2(b)为已部分使用的存储介质的FAT表,设FAT表已使用的首簇为第N簇、末簇为第N+M簇,则从已使用的末簇第N+M簇下一个簇开始顺序存储数据,如箭头所指,记录到第Cluster_N簇时再折返到第D+1簇处顺序存储数据,至数据存储结束或者存储至已使用的首簇第N簇处结束,‘FFFFFF0F’标示文件末簇号,存储过程中根据记录存储的数据量即可计算出依次写入的簇号,无需查询FAT表,因此可以消除TFAT_read。
[0045] 第3步:在数据区顺序写入256个扇区的数据。
[0046] 第4步:查询1个文件的数据是否写入完毕,若完毕进行第5步,否则返回第3步。
[0047] 第5步:在FAT表中更新1个文件对应的簇链接信息。
[0048] 在FAT表中更新簇链接信息采用FAT表后分配方法,FAT表后分配方法为:在数据区一个文件的数据完全写入完毕后再更新FAT表中该文件簇链接信息,从而大大减小FAT表中簇链接关系更新时间TFAT_write。
[0049] 结合图3进行说明,当文件K对应的数据区域存储完毕后,再从该文件对应的FAT表起始簇N+U+1处开始更新,如图中箭头所指,至该文件末簇N+U+F结束,F为该文件包含的簇数量。这种方法使得FAT表在一个文件存储完毕后才更新一次,因此使得TFAT_write减小为原来的1/F。
[0050] 第6步:查询数据存储是否结束,若结束进行第8步,否则进行第7步。
[0051] 第7步:查询16个文件的数据是否写入完毕,若已完毕进行第8步,否则进行第3步。
[0052] 第8步:在FDT表内更新文件信息。
[0053] 在FDT表内更新文件信息采用FDT表后配置方法,FDT表后配置方法为:每写完n个文件的数据后再更新FDT表中这n个文件信息,从而大大降低FDT表中文件信息更新时间TFDT_write。
[0054] 结合图5进行说明,如图5(a)数据存储过程中每写完16个文件的数据后,再对FDT表中的文件信息进行更新,则TFDT_write降低为1/(Cluster_Num16files),其中Cluster_Num16files为16个文件包含的总簇数量,文件个数选择为16的原因是16个文件信息由FDT表1个扇区的数据描述,而扇区是读写操作的最小单位;若数据存储结束时不足16个文件,如图5(b)所示,将最后的M个文件信息进行更新,TFDT_write降低为1/(Cluster_NumMfiles),其中Cluster_NumMfiles为M个文件包含的总簇数量。
[0055] 第9步:查询数据存储是否结束,如结束进行第10步,否则进行第3步。
[0056] 第10步:数据存储结束。
[0057] 如图6所示,一种面向嵌入式存储器的FAT文件系统后分配系统,包括微处理器、数据缓存器和存储介质,微处理器分别与数据缓存器、存储介质相连,微处理器将外部数据接收并进行处理,放入到数据缓存器内缓存,最后将缓存内的数据读出并写入至存储介质。
[0058] 微处理器:为常见的单片机、FPGA或DSP,作为主控器,负责控制存储介质的数据读写。
[0059] 数据缓存器:为DDR3、FIFO或者RAM等器件,用于解决存储两端数据率不匹配问题,以及作为存储介质响应时间内的缓存装置。
[0060] 存储介质:为目前嵌入式固态存储常用的NAND Flash或者其产品CF卡、SD卡、固态硬盘等。
[0061] 所述微处理器包括数据接收与处理模块、外部缓存控制模块、数据存储控制模块;所述数据存储控制模块包括FDT表查询模块、FDT表更新模块、FAT表查询模块、FAT表更新模块、介质数据写入模块;数据接收与处理模块接收外部数据,并进行信号处理;外部缓存控制模块将数据接收与处理模块发送的数据放入至数据缓存器内暂存,并将数据缓存器内的数据读出发送至介质数据写入模块;FDT表查询模块按照FAT文件系统后分配方法中的FDT表文件信息顺序存放方法实现FDT表的查询;FDT表更新模块按照FAT文件系统后分配方法中的FDT表后分配方法实现FDT表的更新;FAT表查询模块按照FAT文件系统后分配方法中的FAT表簇顺序链接方法实现FAT表的查询;FAT表更新模块按照FAT文件系统后分配方法中的FAT表后分配方法实现FAT表的更新;介质数据写入模块将数据写入至存储介质。