基于NANDFLASH的文件数据存取方法、装置、设备及存储介质与流程

文档序号:32250147发布日期:2022-11-19 01:04阅读:221来源:国知局
基于NANDFLASH的文件数据存取方法、装置、设备及存储介质与流程
基于nand flash的文件数据存取方法、装置、设备及存储介质
技术领域
1.本技术涉及文件存储的技术领域,尤其是涉及一种基于nand flash的文件数据存取方法、装置、设备及存储介质。


背景技术:

2.nand flash是一种大容量的存储芯片,其特点是容量密度大,制造成本低,访问速度快,在业界应用广泛,通常作为u盘、固态盘、存储卡等设备上的存储芯片。
3.nand flash的擦除是按照块进行擦除,而读和写是可以按照最小字节长度来进行读写,文件数据的写入需要先将写入区域所在的存储块进行擦除操作,然后再进行写入操作,例如,需要写入一个字节的数据,要对整个存储块进行擦除操作。而每次写入文件数据时,都需要对nand flash的文件目录区所在的存储块进行擦除和重新写入,使得文件目录区所在的存储块擦写频率较高。
4.这样不均衡的擦写可能会使得文件目录区的存储块过早的被写坏,出现坏块,从而缩短了nand flash文件系统的使用寿命,甚至会导致整个nand flash文件系统损毁。


技术实现要素:

5.为了提高nand flash磨损均衡的性能,从而提高nand flash的使用寿命,本技术提供一种基于nand flash的文件数据存取方法、装置、设备及存储介质。
6.第一方面,本技术提供一种基于nand flash的文件数据存取方法,采用如下的技术方案:一种基于nada flash的文件数据存取方法,包括:获取文件数据;基于块属性从nand flash中选取一可写入存储块作为当前存储块;将所述文件数据中未写入nand flash的数据写入所述当前存储块;判断所述文件数据中未写入nand flash的数据是否全部写入所述当前存储块;若否,则重复所述从nand flash中选取一可写入存储块作为当前存储块的步骤,直至所述文件全部写入nand flash为止;若依次选取多个可写入存储块作为当前存储块,则选取的第一个可写入存储块为文件头块,选取的最后一个可写入存储块为文件尾块,其余选取的可写入模块为普通存储块;其中,所述当前存储块具有索引信息位,所述文件头块的索引信息位包括文件名称位、块属性位、下一个存储块的块序号位和最后一个存储块的数据长度位;所述文件尾块的索引信息位包括块属性位;所述普通存储块的索引信息位包括块属性位和下一个存储块的块序号位;若所述当前存储块为所述文件头块,则在所述基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,基于所述文件头块的下一个存储块的块序号更新所述
文件头块的索引信息;若所述当前存储块为普通存储块,则在所述基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,基于所述普通头块的下一个存储块的块序号更新所述普通头块的索引信息;若所述当前存储块为文件尾块,则在所述基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,则写入文件数据直至所述文件全部写入nand flash为止。
7.通过采用上述技术方案,通过将文件数据采用链式存储块的结构存储,且链式结构为不连续存储块的方式,通过采用链式结构将文件数据分摊到每一个存储块中,进行分布式存储,无需在nand flash设置关键区(例如文件目录区)的存储块,通过文件头块的索引信息可以查询整个文件数据,在对文件数据进行改写时,降低了对关键区存储块的擦写次数而使得整个nand flash发生损坏的可能性,提高了nand flash磨损均衡的性能,从而提高nand flash的使用寿命。
8.可选的,所述块属性包括空闲、写入中、有效和脏数据;当对所述当前存储块进行擦除操作后,更新所述当前存储块的块属性为空闲;当对所述文件数据进行写入所述当前存储块时,更新所述当前存储块的块属性为写入中;当将所述文件数据写入所述当前存储块时,更新所述当前存储块的块属性为有效;当进行文件自检时,若所述当前存储块的块数据无效,则更新所述当前存储块的块属性为脏数据。
9.通过采用上述技术方案,利用储存块的块属性查询可写入的存储块,保证存储块均衡使用,降低存储块浪费的可能性。
10.可选的,所述基于块属性从nand flash中选取一可写入存储块作为当前存储块包括:查询是否存在块属性为空闲的存储块,若存在块属性为空闲的存储块,则从块属性为空闲的存储块中选取任意一个所述存储块作为当前存储块;若不存在块属性为空闲的存储块,则查询是否存在块属性为脏数据的存储块;若存在块属性为脏数据的存储块,则从块属性为脏数据的存储块中选取任意一个所述存储块;擦除所述存储块,并将擦除后的存储块作为当前存储块。
11.通过采用上述技术方案,优先使用未被写入的块属性为空闲的存储块,在所有空闲的存储块都已被写入后,擦除已被写入的块属性为脏数据的存储块进行写入,使得每个存储块擦写次数的均衡分配,提高了nand flash的磨损均衡的性能。
12.可选的,所述文件数据包括文件名称,在基于块属性从nand flash中选取一可写入存储块作为当前存储块之前,还包括:基于所述文件名称查询是否存在所述文件数据的历史数据;若所述nand flash中存在所述文件数据的历史数据,则将所述文件数据按照存储块的大小切割成n个数据块;将所述n个数据块与所述历史数据对应存储块的块数据作比较,确定所述n个数据
块写入和/或改写的存储块,并将所述存储块对应的所述文件数据的数据块写入和/或改写至所述存储块。
13.通过采用上述技术方案,在文件数据写入时,只有对历史数据进行改写时才会擦除,否则不对nand flash的存储块进行擦除,而是直接写入历史数据的存储块或nand flash中可写入存储块,降低了对历史数据的全部存储块擦除的次数,不仅提高了文件数据读写效率,还降低了nand flash擦除的操作次数,对于只是追加文件数据的文件,不对历史数据的存储块进行擦除,大大提高了对文件数据写入的性能。
14.可选的,所述基于所述文件名称查询是否存在所述文件数据的历史数据包括:基于所述文件名称查询是否存在所述文件数据的文件头块;若存在所述文件数据的文件头块,则基于所述文件头块的索引信息查询所述文件数据普通数据块或文件尾块;基于所述普通数据块的索引信息查询所述文件数据的下一个普数据块或文件尾块,直至确认所述文件数据的全部存储块;读取所述文件数据的全部存储块,得到所述文件数据的历史数据。
15.通过采用上述技术方案,文件数据采用链式存储块的结构储存至nand flash,通过索引信息查找识别文件数据的不同的存储块,便于查找和自检。
16.可选的,所述将所述n个数据块与所述历史数据对应存储块的块数据作比较,确定所述n个数据块写入和/或改写的存储块,并将所述存储块对应的所述文件数据的数据块写入和/或改写至所述存储块包括:标识当前写入所述文件数据的数据块的块数量为0;从所述n个数据块中选取一所述数据块,将其设置为当前写入数据块,并对当前写入所述文件数据的块数量标识加1;判断当前写入数据块的块位置是否超过所述历史数据的存储至存储块的块长度;若当前写入数据块的块位置未超过所述块长度,则基于所述当前写入数据块的块位置确定所述历史数据的存储块;基于所述当前写入数据块和所述存储块的块数据判断所述存储块是否存在写入和/或改写的情况;若所述存储块存在写入的情况,则将所述数据块写入所述存储块;若所述存储块存在改写的情况,则擦除所述存储块的块数据,将所述数据块写入所述存储块;若所述存储块不存在写入和/或改写的情况,则执行从所述n个数据块中选取一所述数据块,并将其设置为当前写入数据块的步骤;直至所述文件数据的块数量不小于n;若当前写入数据块的块位置超过所述块长度,则基于块属性从nand flash中选取一可写入存储块,将所述当前数据块直接写入所述可写入存储块;执行从所述n个数据块中选取一所述数据块,并将其设置为当前写入数据块的步骤,直至所述文件数据的块数量不小于n。
17.通过采用上述技术方案,在文件数据写入时,当只有对历史数据进行改写时,才会擦除,否则不对nand flash的存储块进行擦除,而是直接写入历史数据的存储块或nand flash中可写入存储块,相对于相关技术中,写入一个字节的数据,要对整个存储块进行擦
除操作,降低了对nand flash存储块的擦除次数,还提高了文件数据写入的效率;当需要为文件数据增加新的存储块时,优先使用未被写入的块属性为空闲的存储块,在所有空闲的存储块都已被写入后,擦除已被写入的块属性为脏数据的存储块进行写入,使得每个存储块擦写次数的均衡分配。
18.可选的,所述文件自检包括:基于所述当前存储块的索引信息查询是否存在文件头块;若存在文件头块,则记录所述文件头块的块属性为有效;基于所述文件头块查询写入文件数据的文件尾块或至少一个所述普通存储块;基于所述文件头块判断所述普通存储块或所述文件尾块的块数据是否为有效;若所述普通存储块或所述文件尾块的块数据为有效,则标记所述普通存储块或所述文件尾块的块属性为有效;若所述普通存储块或所述文件尾块的块数据为无效,则标记所述普通数据块或所述文件尾块的块属性为脏数据。
19.若不存在文件头块,则查询是否存在块属性为有效的存储块;若存在,则将所述存储块的块属性更新为脏数据。
20.通过采用上述技术方案,利用文件头块的索引信息查询普通存储块或文件尾块,通过普通存储块或文件尾块的索引信息查询文件数据有效的存储块,对于文件数据无效的存储块更新其索引信息;若nand flash中不存在文件头块,查询所述nand flash内存在块属性标记为有效的存储块,说明该存储块为无效的存储块,对于无效的存储块或者块属性为写入中的存储块,将该存储块进行擦除回收,而其它存储块的数据不受影响,提高了存储块的利用率,降低存储块浪费的可能性。
21.第二方面,本技术提供一种基于nand flash的文件数据存取装置,采用如下的技术方案:一种基于nand flash的文件数据存取装置,包括:获取模块,用于获取文件数据;选取模块,用于基于块属性从nand flash中选取一可写入存储块作为当前存储块;写入模块,用于将所述文件数据中未写入nand flash的数据写入所述当前存储块;判断模块,用于判断所述文件数据中未写入nand flash的数据是否全部写入所述当前存储块; 若否,则重复所述从nand flash中选取一可写入存储块作为当前存储块的步骤,直至所述文件全部写入nand flash为止;作为模块,用于若依次选取多个可写入存储块作为当前存储块,则选取的第一个可写入存储块为文件头块,选取的最后一个可写入存储块为文件尾块,其余选取的可写入模块为普通存储块;其中,所述当前存储块具有索引信息位,所述文件头块的索引信息位包括文件名称位、块属性位、下一个存储块的块序号位和最后一个存储块的数据长度位;所述文件尾块的索引信息位包括块属性位;所述普通存储块的索引信息位包括块属性位和下一个存储块的块序号位;
第一更新模块,用于若所述当前存储块为所述文件头块,则在所述基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,基于所述文件头块的下一个存储块的块序号更新所述文件头块的索引信息;第二更新模块,用于若所述当前存储块为普通存储块,则在所述基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,基于所述普通头块的下一个存储块的块序号更新所述普通头块的索引信息;第三更新模块,用于若所述当前存储块为文件尾块,则在所述基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,则写入文件数据直至所述文件全部写入nand flash为止。
22.通过采用上述技术方案,通过将文件数据采用链式存储块的结构存储,且链式结构为不连续存储块的方式,通过采用链式结构将文件数据分摊到每一个存储块中,进行分布式存储,无需在nand flash设置关键区(例如文件目录区)的存储块,通过文件头块的索引信息可以查询整个文件数据,在对文件数据进行改写时,降低了对关键区存储块的擦写次数而使得整个nand flash发生损坏的可能性,提高了nand flash磨损均衡的性能,从而提高nand flash的使用寿命。
23.第三方面,本技术提供一种电子设备,采用如下的技术方案:一种电子设备,包括处理器,所述处理器与存储器耦合;所述处理器用于执行所述存储器中存储的计算机程序,以使得所述电子设备执行如第一方面任一项所述基于nand flash的文件数据存取方法计算机程序。
24.第四方面,本技术提供一种计算机可读存储介质,采用如下的技术方案:一种计算机可读存储介质,存储有能够被处理器加载并执行第一方面任一项所述的基于nand flash的文件数据存取方法的计算机程序。
附图说明
25.图1是本技术实施例基于nand flash的文件数据存取方法的流程示意图。
26.图2是本技术实施例文件头块、普通存储块和文件尾块的结构示意图。
27.图3是本技术实施例文件数据存储至nand flash的结构框图。
28.图4是本技术实施例步骤sa~步骤sc的流程示意图。
29.图5是本技术实施例基于nand flash的文件数据存取装置200的结构框图。
30.图6是本技术实施例一种电子设备300的结构框图。
具体实施方式
31.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
32.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
33.下面结合说明书附图对本技术实施例作进一步详细描述。
34.本技术实施例提供一种基于nand flash的文件数据存取方法,所述方法由电子设备执行,该电子设备可以为服务器,也可以为终端设备,其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务集群或者分布式系统,还可以是提供云计算服务的云服务器。终端设备可以是台式计算机、笔记本、手机等,但并不局限于此。
35.如图1所示,所述方法的主要流程描述如下(步骤s101~s108)。
36.步骤s101,获取文件数据;在本实施例中,文件数据的文件结构包括但不限于文件的文件名称、文件长度。
37.步骤s102,基于块属性从nand flash中选取一可写入存储块作为当前存储块;在本实施例中,块属性包括空闲、写入中、有效和脏数据;下面对存储块的块属性进行说明。
38.当对当前存储块进行擦除操作后,更新当前存储块的块属性为空闲;当对文件数据进行写入当前存储块时,更新当前存储块的块属性为写入中;当将文件数据写入当前存储块时,更新当前存储块的块属性为有效;当进行文件自检时,若当前存储块的块数据无效,则更新当前存储块的块属性为脏数据。
39.由于nand flash的每一存储块的擦写次数的标称值是一致的,不均衡的擦写次数会使得nand flash上的部分存储块过早的被写坏,而擦写频度较低的存储块却没有被合理利用。所以为了提高nand flash磨损均衡性能,还对从nand flash中选取一可写入存储块上这一步骤进行了优化。
40.具体的,步骤s102包括以下子步骤(步骤s1021~步骤s1024)(图中未示出):步骤s1021,查询是否存在块属性为空闲的存储块,若存在块属性为空闲的存储块,则从块属性为空闲的存储块中选取任意一个存储块作为当前存储块;步骤s1022,若不存在块属性为空闲的存储块,则查询是否存在块属性为脏数据的存储块;步骤s1023,若存在块属性为脏数据的存储块,则从块属性为脏数据的存储块中选取任意一个存储块;步骤s1024,擦除存储块,并将擦除后的存储块作为当前存储块。
41.通过块属性可以识别不同的存储块,当需要写入文件数据时,优先使用未被写入的块属性为空闲的存储块,在所有空闲的存储块都已被写入后,擦除已被写入的块属性为脏数据的存储块进行写入,降低了部分存储块过度频繁擦写的可能性,使得每个存储块擦写次数的均衡分配,提高了nand flash的磨损均衡的性能。
42.步骤s103,将文件数据中未写入nand flash的数据写入当前存储块;在本实施例中,nand flash的写入是将flash地址上当前存储块的数据从bit1变成bit0,擦除是将flash地址上当前数据块的数据中bit0变成bit1,由于选取的当前存储块如上述步骤s102子步骤的方式选取,当前存储块为空闲的存储块,可直接写入,提高了文件数据写入当前存储块的效率。
43.步骤s104,判断文件数据中未写入nand flash的数据是否全部写入当前存储块;若否,则重复从nand flash中选取一可写入存储块作为当前存储块的步骤,直至文件全部写入nand flash为止;
步骤s105,若依次选取多个可写入存储块作为当前存储块,则选取的第一个可写入存储块为文件头块,选取的最后一个可写入存储块为文件尾块,其余选取的可写入模块为普通存储块;在本实施例中,例如一个存储块的大小为4kb,需要写入10kb的文件数据,那么选取一可写入存储块作为当前存储块,将文件数据写入,且当前存储块为文件头块,然后选取下一个可写入存储块作为当前存储块,继续写入剩余6kb的文件数据,且当前存储块为普通数据块,然后继续选取下一个可写入存储块作为当前存储块,继续写入剩余2kb的文件数据,且当前存储块为文件尾块。
44.图2示出了文件头块、普通存储块和文件尾块的结构示意图。
45.如图2所示,当前存储块具有索引信息位,文件头块的索引信息位包括文件名称位、块属性位、下一个存储块的块序号位和最后一个存储块的数据长度位;文件尾块的索引信息位包括块属性位;普通存储块的索引信息位包括块属性位和下一个存储块的块序号位。
46.步骤s106,若当前存储块为文件头块,则在基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,基于文件头块的下一个存储块的块序号更新文件头块的索引信息位中的下一个存储块的块序号位;并且在文件头块写入文件数据时,更新文件头块的索引信息位中的块属性为写入中,在文件头块写入完后,更新文件头块的索引信息位中的块属性为有效。
47.步骤s107,若当前存储块为普通存储块,则在基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,基于普通头块的下一个存储块的块序号更新普通头块的索引信息中的下一个存储块的块序号位;并且在普通存储块写入文件数据时,更新普通存储块的索引信息位中的块属性为写入中,在普通存储块写入完后,更新普通存储块的索引信息位中的块属性为有效。
48.步骤s108,若当前存储块为文件尾块,则在基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,则写入文件数据直至文件全部写入nand flash为止;并且在文件尾块写入文件数据时,更新文件尾块的索引信息位中的块属性为写入中,在文件尾块写入完后,更新文件尾块的索引信息位中的块属性为有效,更新文件头块的索引信息位的最后一个存储块的数据长度位。
49.下面对文件数据的存储结构进行举例说明。
50.图3示出了文件数据存储至nand flash的结构框图。
51.如图3所示,例如,nand flash中有16个存储块,为存储块1~16,nand flash中存储有文件,分别为文件1和文件2,通过索引信息将这文件1中的所有存储块链接在一起和文件2中的所有存储块链接在一起。
52.文件1的文件数据存储在6个存储块中,分别为存储块1、存储块2、存储块7、存储块12、存储块16和存储块15,文件1的第一个存储块1为文件1的文件头块,最后一个存储块15为文件尾块,上述其它存储块为普通存储块;文件2的文件数据存储在4个存储块中,分别为存储块5、存储块10、存储块11和存储块14,文件2的第一个存储块5为文件2的文件头块,最后一个存储块14为文件尾块,上述其它存储块为普通存储块。nand flash中未存储文件数据的存储块,如存储块3、存储块4、存储块6、存储块8、数据库块9、存储块10为块属性为空闲
的存储块或块属性为脏数据的存储块。
53.本方案通过分布式磨损均衡的方式对文件数据进行管理,将文件数据采用链式数据块的结构存储,且链式结构为不连续存储块的方式,通过采用链式结构将文件数据分摊到每一个存储块中,进行分布式存储,无需在nand flash设置关键区(例如文件目录区)的存储块,通过文件头块的索引信息可以查询整个文件数据,在对文件数据进行改写时,降低了对关键区存储块的擦写次数而使得整个nand flash发生损坏的可能性,提高了nand flash磨损均衡的性能,从而提高了nand flash的使用寿命。
54.作为本实施例的一种可选实施方式,还存在另一种文件数据写入情况。
55.若文件数据存在历史数据,在基于块属性从nand flash中选取一可写入存储块作为当前存储块之前,还包括(步骤sa~sc)步骤sa,基于文件名称查询是否存在文件数据的历史数据;具体的,首先基于文件名称查询是否存在文件数据的文件头块;若存在文件数据的文件头块,则基于文件头块的索引信息查询文件数据普通数据块或文件尾块;然后基于普通数据块的索引信息查询文件数据的下一个普数据块或文件尾块,直至确认文件数据的全部存储块;最后读取文件数据的全部存储块,得到文件数据的历史数据。
56.步骤sb,若nand flash中存在文件数据的历史数据,则将文件数据按照存储块的大小切割成n个数据块;步骤sc,将n个数据块与历史数据对应存储块的块数据作比较,确定n个数据块写入和/或改写的存储块,并将存储块对应的文件数据的数据块写入和/或改写至存储块。
57.具体的,步骤sc包括如下子步骤(步骤sc1~步骤sc5)(图中未示出):步骤sc1,标识当前写入文件数据的数据块的块数量为0;步骤sc2,从n个数据块中选取一数据块,将其设置为当前写入数据块,并对当前写入文件数据的块数量标识加1;步骤sc3,判断当前写入数据块的块位置是否超过历史数据的存储至存储块的块长度;步骤sc4,若当前写入数据块的块位置未超过块长度,则基于当前写入数据块的块位置确定历史数据的存储块;步骤sc5,基于当前写入数据块和存储块的块数据判断存储块是否存在写入和/或改写的情况;若存储块存在写入的情况,则将数据块写入存储块;若存储块存在改写的情况,则擦除存储块的块数据,将数据块写入存储块;若存储块不存在写入和/或改写的情况,则执行从n个数据块中选取一数据块,并将其设置为当前写入数据块的步骤;直至文件数据的块数量不小于n;步骤sc6,若当前写入数据块的块位置超过块长度,则基于块属性从nand flash中选取一可写入存储块,将当前数据块直接写入可写入存储块;执行从n个数据块中选取一数据块,并将其设置为当前写入数据块的步骤,直至文件数据的块数量不小于n。
58.在本实施例中,例如,文件数据的大小为12kb,数据块的大小为4kb,将文件数据按照储存块的大小切割成4个数据块,分别为数据块a、数据块b、数据块c和数据块d,并记录每
个数据块所处于的数据块位置,按照顺序数据块a为文件数据的第一个数据块,数据块b为待写入数据的第二块数据块,数据块c和数据块d以此类推;假设文件数据的历史数据存储在3个存储块中,当写入待写入数据时,从4个数据块中选取一个数据块开始写入,在未写入待写入数据时,标识当前写入文件数据的块数量为0,选取数据块b开始写入时,当前写入文件数据的数据块标识加1确定历史数据的第二块存储块为需要改写的当前储存块,按照数据块的位置确定对应历史数据的存储块,重复选取数据块的步骤,数据块标识加1,直至所有数据块选取完,数据块a历史数据的第一个存储块,数据块c为历史数据的第三个存储块,数据块d需要按照nand flash选取一可写入存储块的方式(上述步骤s102子步骤的方式)选取块属性为空闲的存储块或块属性为脏块的数据块。
59.假设文件数据的历史数据存储在5个存储块中时,按照数据块的位置确定对应历史数据的存储块,和上述数据块a、数据块b、数据块c确定历史数据的存储块的方式一致,在此不再赘述。
60.需要说明的是,当从4个数据块中选取一个数据块时,可以按照顺序选取一个待写入数据的数据块,还可以随机选取一个待写入数据的数据块,本实施例不作具体限定。
61.本方法通过在文件数据写入时,当只有对历史数据进行改写时,才会擦除,否则不对nand flash的存储块进行擦除,而是直接写入历史数据的存储块或nand flash中可写入数据块,相对于相关技术中,写入一个字节的数据,要对整个存储块进行擦除操作,降低了对nand flash存储块的擦除次数,还提高了文件数据写入的效率;当需要为文件数据增加新的存储块时,优先使用未被写入的块属性为空闲的存储块,在所有空闲的存储块都已被写入后,擦除已被写入的块属性为脏数据的存储块进行写入,使得每个存储块擦写次数的均衡分配。
62.为了进一步提高nand flash的使用寿命,本方法还进行了进一步的优化。
63.作为本实施例可选的一种实施方式,还包括文件自检:基于当前存储块的索引信息查询是否存在文件头块;若存在文件头块,则记录文件头块的块属性为有效;基于文件头块查询写入文件数据的文件尾块或至少一个普通存储块;基于文件头块判断普通存储块或文件尾块的块数据是否为有效;若普通存储块或文件尾块的块数据为有效,则标记普通存储块或文件尾块的块属性为有效;若普通存储块或文件尾块的块数据为无效,则标记普通数据块或文件尾块的块属性为脏数据。若不存在文件头块,则查询是否存在块属性为有效的存储块;若存在,则将存储块的块属性更新为脏数据。
64.在本实施例中,上电后,需要进行文件自检,利用文件头块的索引信息查询普通存储块或文件尾块,通过普通存储块或文件尾块的索引信息查询文件数据有效的存储块,对于文件数据无效的存储块更新其索引信息;若nand flash中不存在文件头块,查询nand flash内存在块属性标记为有效的存储块,说明该存储块为无效的存储块,对于无效的存储块或者块属性为写入中的存储块,将该存储块进行擦除回收,而其它存储块的数据不受影响,提高了存储块的利用率,降低存储块浪费的可能性。
65.以上是关于方法实施例的介绍,以下通过装置实施例,对本技术方案进行进一步说明。
66.图5为本技术实施例一种基于nand flash的文件数据存取装置200的结构框图。
67.如图5所示,基于nand flash的文件数据存取装置200主要包括:获取模块201,用于获取文件数据;选取模块202,用于基于块属性从nand flash中选取一可写入存储块作为当前存储块;写入模块203,用于将文件数据中未写入nand flash的数据写入当前存储块;判断模块204,用于判断文件数据中未写入nand flash的数据是否全部写入当前存储块; 若否,则重复从nand flash中选取一可写入存储块作为当前存储块的步骤,直至文件全部写入nand flash为止;作为模块205,用于若依次选取多个可写入存储块作为当前存储块,则选取的第一个可写入存储块为文件头块,选取的最后一个可写入存储块为文件尾块,其余选取的可写入模块为普通存储块;其中,当前存储块具有索引信息位,文件头块的索引信息位包括文件名称位、块属性位、下一个存储块的块序号位和最后一个存储块的数据长度位;文件尾块的索引信息位包括块属性位;普通存储块的索引信息位包括块属性位和下一个存储块的块序号位;第一更新模块206,用于若当前存储块为文件头块,则在基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,基于文件头块的下一个存储块的块序号更新文件头块的索引信息;第二更新模块207,用于若当前存储块为普通存储块,则在基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,基于普通头块的下一个存储块的块序号更新普通头块的索引信息;第三更新模块208,用于若当前存储块为文件尾块,则在基于块属性从nand flash中选取一可写入存储块作为当前存储块之后,则写入文件数据直至文件全部写入nand flash为止。
68.进一步的,块属性包括空闲、写入中、有效和脏数据;当对当前存储块进行擦除操作后,更新当前存储块的块属性为空闲;当对文件数据进行写入当前存储块时,更新当前存储块的块属性为写入中;当将文件数据写入当前存储块时,更新当前存储块的块属性为有效;当进行文件自检时,若当前存储块的块数据无效,则更新当前存储块的块属性为脏数据。
69.作为本实施例的一种可选实施方式,写入模块203包括:第一查询子模块,用于查询是否存在块属性为空闲的存储块,若存在块属性为空闲的存储块,则从块属性为空闲的存储块中选取任意一个存储块作为当前存储块;第二查询子模块,用于若不存在块属性为空闲的存储块,则查询是否存在块属性为脏数据的存储块;选取子模块,用于若存在块属性为脏数据的存储块,则从块属性为脏数据的存储块中选取任意一个存储块;擦除子模块,用于擦除存储块,并将擦除后的存储块作为当前存储块。
70.作为本实施例的一种可选实施方式,文件数据包括文件名称,在基于块属性从
nand flash中选取一可写入存储块作为当前存储块之前,基于nand flash的文件数据存取装置200还包括历史数据查询模块,历史数据查询模块包括:第三查询子模块,用于基于文件名称查询是否存在文件数据的历史数据;切割子模块,用于若nand flash中存在文件数据的历史数据,则将文件数据按照存储块的大小切割成n个数据块;比较子模块,用于将n个数据块与历史数据对应存储块的块数据作比较,确定n个数据块写入和/或改写的存储块,并将存储块对应的文件数据的数据块写入和/或改写至存储块。
71.在本可选实施方式中,第三查询子模块具体用于:基于文件名称查询是否存在文件数据的文件头块;若存在文件数据的文件头块,则基于文件头块的索引信息查询文件数据普通数据块或文件尾块;基于普通数据块的索引信息查询文件数据的下一个普数据块或文件尾块,直至确认文件数据的全部存储块;读取文件数据的全部存储块,得到文件数据的历史数据。
72.在本可选实施方式中,比较子模块具体用于:标识当前写入文件数据的数据块的块数量为0;从n个数据块中选取一数据块,将其设置为当前写入数据块,并对当前写入文件数据的块数量标识加1;判断当前写入数据块的块位置是否超过历史数据的存储至存储块的块长度;若当前写入数据块的块位置未超过块长度,则基于当前写入数据块的块位置确定历史数据的存储块;基于当前写入数据块和存储块的块数据判断存储块是否存在写入和/或改写的情况;若存储块存在写入的情况,则将数据块写入存储块;若存储块存在改写的情况,则擦除存储块的块数据,将数据块写入存储块;若存储块不存在写入和/或改写的情况,则执行从n个数据块中选取一数据块,并将其设置为当前写入数据块的步骤;直至文件数据的块数量不小于n;若当前写入数据块的块位置超过块长度,则基于块属性从nand flash中选取一可写入存储块,将当前数据块直接写入可写入存储块;执行从n个数据块中选取一数据块,并将其设置为当前写入数据块的步骤,直至文件数据的块数量不小于n。
73.作为本实施例的一种可选实施方式,基于nand flash的文件数据存取装置200还包括文件自检模块,文件自检模块具体用于:基于当前存储块的索引信息查询是否存在文件头块;若存在文件头块,则记录文件头块的块属性为有效;基于文件头块查询写入文件数据的文件尾块或至少一个普通存储块;基于文件头块判断普通存储块或文件尾块的块数据是否为有效;若普通存储块或文件尾块的块数据为有效,则标记普通存储块或文件尾块的块属
性为有效;若普通存储块或文件尾块的块数据为无效,则标记普通数据块或文件尾块的块属性为脏数据。
74.若不存在文件头块,则查询是否存在块属性为有效的存储块;若存在,则将存储块的块属性更新为脏数据。
75.在一个例子中,以上任一装置中的模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个专用集成电路(application specific integratedcircuit,asic),或,一个或多个数字信号处理器(digital signal processor,dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,fpga),或这些集成电路形式中至少两种的组合。
76.再如,当装置中的模块可以通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,cpu)或其它可以调用程序的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,soc)的形式实现。
77.在本技术中可能出现的对各种消息/信息/设备/网元/系统/装置/动作/操作/流程/概念等各类客体进行了赋名,可以理解的是,这些具体的名称并不构成对相关客体的限定,所赋名称可随着场景,语境或者使用习惯等因素而变更,对本技术中技术术语的技术含义的理解,应主要从其在技术方案中所体现/执行的功能和技术效果来确定。
78.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
79.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
80.图6为本技术实施例一种电子设备300的结构框图。
81.如图6所示,电子设备300包括处理器301和存储器302,还可以进一步包括信息输入/信息输出(i/o)接口303以及通信组件304中的一种或多种以及通信总线305。
82.其中,处理器301用于控制电子设备300的整体操作,以完成上述的基于nand flash的文件数据存取方法中的全部或部分步骤;存储器302用于存储各种类型的数据以支持在电子设备300的操作,这些数据例如可以包括用于在该电子设备300上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器302可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,sram)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、可编程只读存储器(programmable read-only memory,prom)、只读存储器(read-onlymemory,rom)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。
83.i/o接口303为处理器301和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件304用于测试电子
设备300与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(near field communication,简称nfc),2g、3g或4g,或它们中的一种或几种的组合,因此相应的该通信组件104可以包括:wi-fi部件,蓝牙部件,nfc部件。
84.通信总线305可包括一通路,在上述组件之间传送信息。通信总线305可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa (extended industry standard architecture,扩展工业标准结构)总线等。通信总线305可以分为地址总线、数据总线、控制总线等。
85.电子设备300可以被一个或多个应用专用集成电路 (application specificintegrated circuit,简称asic)、数字信号处理器(digital signal processor,简称dsp)、数字信号处理设备(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的基于nand flash的文件数据存取方法。
86.电子设备300可以包括但不限于数字广播接收器、pda(个人数字助理)、pmp(便携式多媒体播放器)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端,还可以为服务器等。
87.下面对本技术实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的基于nand flash的文件数据存取方法可相互对应参照。
88.本技术还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的基于nand flash的文件数据存取方法的步骤。
89.该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器 (r ead-onlymemory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
90.术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
91.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中申请的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1