一种磨损均衡的固定数据页宽度的FLASH读写方法技术

技术编号:30967279 阅读:61 留言:0更新日期:2021-11-25 20:40
本发明专利技术涉及一种磨损均衡的固定数据页宽度的FLASH数据结构及其读写方法,包括固定写入数据块的页数,将数据循环写入存储空间中的不同区域且在每个循环后将之平移一定位移量,位移量随循环变化,在位移使数据块平移到存储空间最大范围时重置偏移量。上述方法解决了一些应用中写入的少部分数据页频繁变化,多数数据页通常为0、仅偶尔变化,如此数据特性造成的FLASH存储单元寿命磨损不平均的问题,在保证空间使用效率的同时延长FLASH存储器的使用寿命。命。命。

【技术实现步骤摘要】
一种磨损均衡的固定数据页宽度的FLASH读写方法


[0001]本专利技术涉及存储设备领域,具体涉及一种延长FLASH写寿命的方法。

技术介绍

[0002]在嵌入式系统设计中,经常会遇到断电后需保留部分动态参数的应用,通常使用但EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器)实现断电存储功能。
[0003]EEPROM的缺点之一是写入和擦除有寿命限制,一般为10万次;之二是价格高、容量低。
[0004]FLASH是一种类似EEPROM的存储器,由于原理的差异,其价格相较EEPROM低、容量高。
[0005]但是,相对于EEPROM一次可任意改写某一字节的存储内容,FLASH清除并改写的最小单位是一个页(通常由数百以上个字节组成),即只要一个页内任何数据需要改写,同页的数据将被全部清0、再重新写入非0的内容。
[0006]通常,延长FLASH写寿命的方法是将其存储空间固定划分为若干区域,每次写入时论轮流使用各个区域,避免重复写入同一个地址而不使用其他空间,使得整个存储空间的写入寿命均匀损耗。
[0007]但是,在一些应用中,在每次存储数据时,部分参数会有变化,但其余多数参数是0,并不需要重复写入。按照常用的分区域写入方法,意味着频繁变化的参数的存储位置的损耗速度远高于通常为0的参数的存储位置,即存储空间的写入寿命没有均匀损耗。
[0008]一个典型的例子是程序日志的记录。为了保持数据结构的完整,通常会有跨多个页区域被预留以写入程序日志。参数和惯例日志总会被写入固定区域;在多数情况下,程序不发生异常,不产生异常日志,因此多数预留空间不会被改变而为0。这显然造成参数和惯例日志区域被频繁改写而寿命损耗,异常日志区则鲜有被使用,即没有均匀损耗、充分利用存储器寿命。

技术实现思路

[0009]基于此,有必要针对存在部分页频繁改变、部分页通常不变造成的寿命磨损不均的问题,提供一种磨损均衡的固定数据页宽度的FLASH读写方法。
[0010]一种磨损均衡的固定数据页宽度的FLASH读写方法,包括如下步骤:步骤之一,启动FLASH存储器及配套的、用于存储状态信息的EEPROM存储器;从预设值获取所述EEPROM存储器物理地址划分为固定的偏移量记录区和写入块编号记录区、FLASH存储器划分为数据块区的预设范围;所述偏移量记录区存储一个偏移量值;所述写入块编号记录区存储S
index
个编号组成的序列,所述编号为整数、可取的最大、最小值分别为编号值上限V
max
和编号值下限V
min
,且所述写入块编号记录区的初始值为
预设的、大于编号值上限的无效编号值V
inv
;所述数据块区存储若干数据块,每一所述数据块的FLASH页数固定、记为S
block
、起始位置可变;步骤之二,开始读取流程,从所述偏移量记录区读取前次偏移量V
bias,
‑1。
[0011]步骤之三,从所述写入块编号记录区读取全部编号序列并保留其前后顺序,并在下述访问过程中,将此序列视为尾

首相接,即序列的末位的下一位定义为序列的首位。
[0012]步骤之四,在所述编号序列中,忽略等于无效值V
inv
的值、搜索最大值,记为最大编号值V
max,
‑1;如果所述V
max,
‑1不存在,返回空数据做为读取数据,并记录最新偏移量为V
bias,
‑1=0、最新编号值为V
index,
‑1=V
min

1、最新编号位置为P
index,
‑1=

1,结束读取流程,并跳转到步骤之十;如果存在,进行下一步骤。
[0013]步骤之五,判断V
max,
‑1是否小于所述编号值上限V
max
,如果是,则记录其最新编号值V
index,
‑1=V
max,
‑1、V
max,
‑1在所述编号序列中的顺序为最新编号位置P
index,
‑1,并跳转步骤之八;如果否,进行下一步骤。
[0014]步骤之六,判断所述最大编号值在所述编号序列中的下一位是否大于所述编号值下限V
min
;如果是,则记录所述最大编号值为最新编号值V
index,
‑1=V
max,
‑1、所述最大编号值在所述编号序列中的位置为最新编号位置P
index,
‑1,并跳转到步骤之八;如果否,则将所述最大编号值在所述编号序列中的下一位记录为第1检查编号值,并进行下一步骤。
[0015]步骤之七,记录所述第1检查编号值在所述编号序列中的下一位为第2检查编号值,判断第2检查编号值是否为第1检查编号值加1,如果是,则将第1检查编号值更新为第2检查编号值,并重复本步骤之七;如果否,则记录所述第1编号值为最新编号值V
index,
‑1、所述第1编号值在所述编号序列中的位置为最新编号位置P
index,
‑1,并进行下一步骤。
[0016]步骤之八,计算最新数据块起始页号为:A
s,
‑1=(V
index,
‑1‑
V
min
)*S
block
+V
bias,
‑1。
[0017]步骤之九,根据所述最新数据块页号以及数据块页数,读取并返回最新数据块作为读取数据,结束读取流程。
[0018]步骤之十,开始写入流程,输入待写入数据块的内容。
[0019]步骤之十一,计算当前编号值V
index
=V
index,
‑1+1,当前偏移量V
bias
=V
bias
‑1,当前编号值位置P
index
=(P
index
‑1+1)%S
index

[0020]步骤之十二,计算当前数据块写入起始页号A
s
=(V
index

V
min
)*S
block
+V
bias
;计算当前数据块写入结束页号为A
e
=A
s
+S
block

1。
[0021]步骤之十三,判断A
e
是否小于所述数据块区的最大页号;如果是,跳转到步骤之十五;如果否,则进行下一步骤。
[0022]步骤之十四,更新所述当前偏移量V
bias
=(V
bias
‑1+1)%S
blo本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种磨损均衡的固定数据页宽度的FLASH读写方法,其特征在于,包括如下步骤:步骤之一,启动FLASH存储器及配套的、用于存储状态信息的EEPROM存储器;从预设值获取所述EEPROM存储器物理地址划分为固定的偏移量记录区和写入块编号记录区、FLASH存储器划分为数据块区的预设范围;所述偏移量记录区存储一个偏移量值;所述写入块编号记录区存储S
index
个编号组成的序列,所述编号为整数、可取的最大、最小值分别为编号值上限V
max
和编号值下限V
min
,且所述写入块编号记录区的初始值为预设的、大于编号值上限的无效编号值V
inv
;所述数据块区存储若干数据块,每一所述数据块的FLASH页数固定、记为S
block
、起始位置可变;步骤之二,开始读取流程,从所述偏移量记录区读取前次偏移量V
bias,
‑1;步骤之三,从所述写入块编号记录区读取全部编号序列并保留其前后顺序,并在下述访问过程中,将此序列视为尾

首相接,即序列的末位的下一位定义为序列的首位;步骤之四,在所述编号序列中,忽略等于无效值V
inv
的值、搜索最大值,记为最大编号值V
max,
‑1;如果所述V
max,
‑1不存在,返回空数据做为读取数据,并记录最新偏移量为V
bias,
‑1=0、最新编号值为V
index,
‑1=V
min

1、最新编号位置为P
index,
‑1=

1,结束读取流程,并跳转到步骤之十;如果存在,进行下一步骤;步骤之五,判断V
max,
‑1是否小于所述编号值上限V
max
,如果是,则记录其最新编号值V
index,
‑1=V
max,
‑1、V
max,
‑1在所述编号序列中的顺序为最新编号位置P
index,
‑1,并跳转步骤之八;如果否,进行下一步骤;步骤之六,判断所述最大编号值在所述编号序列中的下一位是否大于所述编号值下限V
min
;如果是,则记录所述最大编号值为最新编号值V
index,
‑1=V
max,
‑1、所述最大编号值在所述编号序列中的位置为最新编号位置P
index,
‑1,并跳转到步骤之八;如果否,则将所述最大编号值在所述编号序列中的下一位记录为第1检查编号...

【专利技术属性】
技术研发人员:马朔昕邰元王坦
申请(专利权)人:南京泰立瑞信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1