一种使用FLASH进行高效数据存储的方法与流程

文档序号:26138895发布日期:2021-08-03 14:22阅读:269来源:国知局
一种使用FLASH进行高效数据存储的方法与流程

本发明属于flash数据存储技术领域,具体涉及一种使用flash进行高效数据存储的方法。



背景技术:

flash是一种大容量非易失性存储器件。由于工艺原理限制,对已写入数据的地址进行再次写入数据之前,必须进行数据的擦除,并且不提供字节擦除功能,只能进行扇区擦除。

以某flash产品为例,容量4mbit,扇区配置结构如图1所示。手册建议的字节擦除时间最大300us,扇区擦除时间最大30s。芯片可靠擦除次数1万次。

在一些应用系统中,设备的工作参数、工作模式、产生的工作数据等需要保存在flash芯片中,以便在设备关闭、重启后可以恢复之前工作状态进行工作。

在使用固定地址保存数据时,即使需要改变的数据量很小,也要将整个扇区数据全部擦除,即降低了flash芯片的使用寿命(flash芯片都有擦除次数限制),也增加了单次写入数据的时间。

为了应对这种情况,flash芯片中通常提供小扇区,如图1中的sa8/sa9,用于保存动态数据。但这也只是减少的数据写入之前扇区擦除的时间,并没有改善芯片使用寿命。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是如何提供一种使用flash进行高效数据存储的方法,以解决flash芯片使用寿命降低的问题。

(二)技术方案

为了解决上述技术问题,本发明提出一种使用flash进行高效数据存储的方法,在flash中划分索引扇区和动态参数扇区,索引扇区包括n个索引存储区,动态参数扇区包括m个动态参数存储区,每个索引存储区中均保存有动态参数存储区号和crc校验码,动态参数存储区号指示当前索引对应的动态参数保存的存储区地址,动态参数存储区用于保存动态参数,该方法包括如下步骤:

(1.1)开机运行,索引存储区号置0;

(1.2)读取索引存储区号中的索引,并计算索引中的动态参数存储区号的crc校验码,与索引中的crc校验码进行比较,如二者一致,索引数据完整,如二者不一致,索引数据不完整;

(1.3)若不完整,则表明当前无有效动态参数,设置索引存储区号=0,退出;若完整,进行步骤(1.4);

(1.4)索引存储区号+1,读取索引,采用步骤1.2中的方法判断读取到的索引数据的完整性;

(1.5)若不完整,进行步骤(1.6);若完整,判断是否为最后一个地址,如果是,则进行步骤(1.7),否则,进行步骤(1.4);

(1.6)索引存储区号-1;

(1.7)读取索引,得到动态参数存储区号,读取动态参数。

进一步地,n个索引存储区大小一致连续存储,m个动态参数存储区大小一致连续存储。

进一步地,索引存储区的数量n等于动态参数存储区的数量m。

进一步地,所述crc校验码是对动态参数存储区号进行校验产生的校验码。

进一步地,校验方法为crc循环冗余校验。

一种使用flash进行高效数据存储的方法,在flash中划分索引扇区和动态参数扇区,索引扇区包括n个索引存储区,动态参数扇区包括m个动态参数存储区,每个索引存储区中均保存有动态参数存储区号和crc校验码,动态参数存储区号指示当前索引对应的动态参数保存的存储区地址,动态参数存储区用于保存动态参数,该方法包括如下步骤:

(2.1)接收动态参数,动态参数存储区号+1;

(2.2)写动态参数到动态参数存储区号指定的地址;

(2.3)动态参数存储区中数据读出校验判断;

(2.4)若校验通过,进行步骤(2.5);否则,判断是否进行过扇区擦除操作,如果是,命令执行失败,否则,进行扇区擦除,进行步骤(2.2);

(2.5)索引存储区号+1;

(2.6)写索引到索引存储区号对应的索引存储区;

(2.7)索引存储区中数据读出校验判断;

(2.8)若校验通过,则指令正确执行;否则,判断是否进行过扇区擦除操作,如果是,命令执行失败,否则,进行扇区擦除,进行步骤(2.6)。

进一步地,n个索引存储区大小一致连续存储,m个动态参数存储区大小一致连续存储。

进一步地,索引存储区的数量n等于动态参数存储区的数量m。

进一步地,所述crc校验码是对动态参数存储区号进行校验产生的校验码。

进一步地,校验方法为crc循环冗余校验。

(三)有益效果

本发明提出一种使用flash进行高效数据存储的方法,创新性的引入索引自校验命中方法,高效获取到系统最后一次使用的索引。引入数据索引查找方法,通过索引指针获取到动态数据保存的地址,进行数据的读写。充分利用了flash存储器的大容量存储空间,提高了数据平均写入速度和芯片的使用寿命。

附图说明

图1为某flash产品的扇区配置结构;

图2为本发明的flash存储器数据结构图;

图3为本发明的读取索引以及动态参数的流程图;

图4为本发明的写动态参数的流程图。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明主要涉及flash数据存储技术领域,具体是一种使用flash存储器进行高效数据存储的方法。

本文提出一种使用flash进行高效数据存储的方法,可以很好的解决上面提到的问题。主要是2项关键技术,一种是基于自校验进行索引命中的方法,一种是基于索引进行数据查找的方法。

如图2所示,在flash中划分索引扇区和动态参数扇区,索引扇区包括n个索引存储区,动态参数扇区包括m个动态参数存储区,每个索引存储区中均保存有动态参数存储区号和crc校验码,动态参数存储区号指示当前索引对应的动态参数保存的存储区地址,动态参数存储区用于保存动态参数。索引扇区和动态参数扇区分别用于保存索引数据和动态参数数据,每个索引数据和每个动态参数数据设计占用固定长度并连续存储。附图2中的n=m时,达到设计最优。

以某芯片为例,使用扇区4作为索引扇区,大小为64kb,每个索引数据16个字节(14字节数据,2字节crc校验码),可以保存4k份索引数据;使用扇区0-3作为动态参数扇区,大小为64k*4字节,每个动态参数数据区4kb,可以保存64份动态参数数据。

每个索引含两部分内容,第一部分为动态参数存储区号,指示当前索引对应的动态参数保存的存储区地址和一些系统参数,第二部分为crc校验码,是对第一部分数据进行校验产生的校验码,可采用crc循环冗余校验。

n个索引存储区大小一致连续存储,m个动态参数存储区大小一致连续存储,所以只要知道了动态数据的存储区号就可以找到对应的动态参数。

如图3所示,系统上电后首先读取索引扇区,得到最后一次的索引存储区地址,进而得到动态参数存储区号,并读取对应的动态参数,具体包括以下步骤:

(1.1)开机运行,索引存储区号置0;

(1.2)读取索引存储区号中的索引,并计算索引中的动态参数存储区号的crc校验码,与索引中的crc校验码进行比较,二者一致,索引数据完整,二者不一致,索引数据不完整;

(1.3)若不完整,则表明当前无有效动态参数,设置索引存储区号=0,退出;若完整,进行步骤(1.4);

(1.4)索引存储区号+1,读取索引,判断读取到的索引数据的完整性,判断方法同1.2;

(1.5)若不完整,进行步骤(1.6);若完整,判断是否为最后一个地址,如果是,则进行步骤(1.7),否则,进行步骤(1.4);

(1.6)索引存储区号-1;

(1.7)读取索引,得到动态参数存储区号,读取动态参数。

如图4所示,系统运行时,接收到动态参数进行数据存储的处理的具体步骤包括:

(2.1)接收动态参数,动态参数存储区号+1;

(2.2)写动态参数到动态参数存储区号指定的地址;

(2.3)动态参数存储区中数据读出校验判断;

(2.4)若校验通过,进行步骤(2.5);否则,判断是否进行过扇区擦除操作,如果是,命令执行失败,否则,进行扇区擦除,进行步骤(2.2);

(2.5)索引存储区号+1;

(2.6)写索引到索引存储区号对应的索引存储区;

(2.7)索引存储区中数据读出校验判断;

(2.8)若校验通过,则指令正确执行;否则,判断是否进行过扇区擦除操作,如果是,命令执行失败,否则,进行扇区擦除,进行步骤(2.6)。

本文提出了一种使用flash进行高效数据存储的方法,创新性的引入索引自校验命中方法,高效获取到系统最后一次使用的索引。引入数据索引查找方法,通过索引指针获取到动态数据保存的地址,进行数据的读写。充分利用了flash存储器的大容量存储空间,提高了数据平均写入速度和芯片的使用寿命。现申请对于索引自同步的命中方法和数据索引查找方法进行保护,包括但不限于flash芯片中的数据存储。

可以举例对比提高寿命的倍数:每次对固定位置写一次,擦一次。而本方法写n次,写满整个索引扇区,再擦一次,使用效率提高n倍,延长了使用寿命。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1