一种可变数据块宽度的EEPROM读写方法技术

技术编号:30967277 阅读:11 留言:0更新日期:2021-11-25 20:40
本发明专利技术涉及一种EEPROM数据结构及其读写方法,包括动态适应写入数据块的大小,将数据循环写入存储空间中的不同区域且在每个循环后将之平移一定位移量。平移的基准是最后一次位置之后、上个循环之中最近的写入起始位置,因此位移量随循环变化、同时实现相较上个循环中的一个数据块进行了地址偏移,两者写入的数据块内容大部分重叠而无需更改、少部分错开而避免了集中写入某些地址而过多损耗寿命。上述方法解决了一些应用中写入的少部分数据频繁变化,多数数据通常为0、仅偶尔变化,如此数据特性造成的EEPROM存储单元寿命磨损不平均的问题,在保证空间使用效率的同时延长EEPROM存储器的使用寿命。储器的使用寿命。储器的使用寿命。

【技术实现步骤摘要】
一种可变数据块宽度的EEPROM读写方法


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

技术介绍

[0002] 在嵌入式系统设计中,经常会遇到断电后需保留部分动态参数的应用,通常使用但EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器)实现断电存储功能。
[0003]但是EEPROM的写入和擦除有寿命限制,一般为10万次。
[0004]通常,延长EEPROM写寿命的方法是将其存储空间固定划分为若干区域,每次写入时论轮流使用各个区域,避免重复写入同一个地址而不使用其他空间,使得整个存储空间的写入寿命均匀损耗。
[0005]但是,在一些应用中,在每次存储数据时,部分参数会有变化,但其余多数参数是0,并不需要重复写入。按照常用的分区域写入方法,意味着频繁变化的参数的存储位置的损耗速度远高于通常为0的参数的存储位置,即存储空间的写入寿命没有均匀损耗。

技术实现思路

[0006]对此,本专利技术提供一种根据写入数据长度动态读写并循环调整写入偏移量的EEPROM数据结构及其读写方法,通过记录过往写入的数据位置并在其起始位置添加偏移量,无论输入数据长度为何均可实现频繁改变的数据和全0的数据写入同一存储单元的概率相同,即所有存储空间的写入寿命均匀损耗。
[0007]为了达成上述目的,本专利技术提供一种可变数据块宽度的EEPROM读写方法,该方法包括如下步骤
[0008]步骤之一,从预设值获取状态存储区单元数S
state
和数据存储区单元数S
data
,将存储空间划分为状态存储区和数据存储区;所述状态存储区各个单元以从0开始递增的状态地址标识,每个单元的容量固定为一定字节数并占据1个地址;每个单元存储数据块编号、数据块起始地址和数据块终止地址三个值;所有所述数据块编号在复位时写入S
state
+1;所述数据存储区各个单元以从0开始递增的数据地址标识,每个单元的容量固定为一定字节数并占据1个地址,每个单元存储数据,若干个连续单元构成存储一个数据块;所述地址均允许循环访问,即所述存储地址中的末尾地址的下一位,自动指向所述存储地址中的首位地址,所述数据地址中的末尾地址的下一位,自动指向所述数据地址中的首位地址;数学上,这可以通过取余运算进行,符号为%。
[0009]步骤之二,开始读取流程,从所述状态存储区读取各个单元的所述数据块编号,将之组成数据块编号序列并保留其前后顺序,并在下述访问过程中允许循环访问,即序列的末尾的下一位定义为序列的首位。
[0010]步骤之三,在所述数据块编号序列中,从首位向后搜索第一个编号不连续的位置;
如果不存在不连续位置,则记录当前块状态地址P
index
=0,当前块编号V
index
=0,当前块起始地址为B
data
=0,输出空数据,结束读取流程,并跳转到步骤之十一;否则,记录所述编号不连续位置的两个编号中的靠前一个的地址为最后写入块状态地址P
index,
‑1(如果是末尾编号和首位编号不连续,P
index,
‑1=S
state

1),并进行下一步骤。
[0011]步骤之四,按照所述最后写入块状态地址P
index,
‑1,从状态存储区读出其指向的存储单元中存储的状态信息,分别记为最后写入块编号V
index,
‑1、最后写入块起始地址B
data,
‑1和最后写入块终止地址E
data,
‑1。
[0012]步骤之五,读出并输出数据存储区中B
data,
‑1到E
data,
‑1地址中的数据,结束读取流程。
[0013] 步骤之六,记当前块编号V
index
=(V
index,
‑1+1)%(S
state
+1),当前块状态地址P
index
=(P
index,
‑1+1)% S
state

[0014]步骤之七,从所述状态存储区读取各个单元的一对所述数据块起始地址和所述数据块终止地址,将每一对视为一个元素,组成数据块起止地址序列并保留其前后顺序,并在下述访问过程中允许循环访问这个序列,即序列的末尾的下一位定义为序列的首位。
[0015]步骤之八,在所述数据块起止地址序列中,从所述最后写入块状态地址的前一地址(P
index,
‑1‑
1)%S
state
开始,向前搜索第一个所述起止地址的区间包含所述最后写入块终止地址的单元,直到返回最后写入块状态地址的后一地址(P
index,
‑1+1)%S
state
;如果搜索无结果,则记当前块起始地址为B
data
=(E
data,
‑1+1)%S
data
,并跳转步骤之十一;否则,则记搜索到的元素对应所述状态存储单元中记录的所述数据块编号为前重叠块编号V
index,op
,并进行下一步骤。
[0016]步骤之九,记前重叠块后块编号V
index,aop
=(V
index,op
+1)%S
state

[0017]步骤之十,在所述状态存储区中,读出数据块编号等于所述前重叠块后块编号的单元中的数据块起始地址,记为前重叠块后块起始地址B
data,aop
;计算当前块起始地址B
data
=(E
data,aop
+1)%S
data

[0018]步骤之十一,开始写入流程,从外部输入数据,长度为S
block
,计算当前块终止地址E
data
=(B
data
+S
block

1)%S
data

[0019]步骤之十二,将所述状态V
index
,B
data
,E
data
分别写入所述地址P
index
指向的所述状态存储区的单元,将所述输入数据写入所述地址B
data
开始到E
data
地址所指向的数据存储区的单元,结束写入流程。
附图说明
[0020]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种EEPROM数据结构及其读写方法,其特征在于,包括如下步骤:步骤之一,从预设值获取状态存储区单元数S
state
和数据存储区单元数S
data
,将存储空间划分为状态存储区和数据存储区;所述状态存储区各个单元以从0开始递增的状态地址标识,每个单元的容量固定为一定字节数并占据1个地址;每个单元存储数据块编号、数据块起始地址和数据块终止地址三个值;所有所述数据块编号在复位时写入S
state
+1;所述数据存储区各个单元以从0开始递增的数据地址标识,每个单元的容量固定为一定字节数并占据1个地址,每个单元存储数据,若干个连续单元构成存储一个数据块;所述地址均允许循环访问,即所述存储地址中的末尾地址的下一位,自动指向所述存储地址中的首位地址,所述数据地址中的末尾地址的下一位,自动指向所述数据地址中的首位地址;数学上,这可以通过取余运算进行,符号为%;步骤之二,开始读取流程,从所述状态存储区读取各个单元的所述数据块编号,将之组成数据块编号序列并保留其前后顺序,并在下述访问过程中允许循环访问,即序列的末尾的下一位定义为序列的首位;步骤之三,在所述数据块编号序列中,从首位向后搜索第一个编号不连续的位置;如果不存在不连续位置,则记录当前块状态地址P
index
=0,当前块编号V
index
=0,当前块起始地址为B
data
=0,输出空数据,结束读取流程,并跳转到步骤之十一;否则,记录所述编号不连续位置的两个编号中的靠前一个的地址为最后写入块状态地址P
index,
‑1(如果是末尾编号和首位编号不连续,P
index,
‑1=S
state

1),并进行下一步骤;步骤之四,按照所述最后写入块状态地址P
index,
‑1,从状态存储区读出其指向的存储单元中存储的状态信息,分别记为最后写入块编号V
index,
‑1、最后写入块起始地址B
data,
‑1和最后写入块终止地址E
data,
‑1;步骤之五,读出并输出数据存储区中B
data,
‑1到E
data,
‑1地址中的数据,结束读取流程;步骤之六,记当前块编号V
index
=(V
index,
‑1+1)%(S
state
+1),当前块状态...

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

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

1