一种基于FLASH存储器的数据记录系统的制作方法

文档序号:32694155发布日期:2022-12-27 20:23阅读:36来源:国知局
一种基于FLASH存储器的数据记录系统的制作方法
一种基于flash存储器的数据记录系统
技术领域
1.本发明涉及数据记录技术领域,更具体地说,涉及一种基于flash存储器的数据记录系统。


背景技术:

2.在嵌入式设备中,很多时候需要记录设备的运行状态,以便在设备发生故障后能回溯设备发生的情况。一般记录的载体是外部非易失性存储器,目前常用的器件是flash和eeprom存储器。flash和eeprom存储器两者的写入寿命差不多,但由于flash存储器的容量远大于eeprom存储器,因此通常选择flash存储器来进行数据记录存储。
3.flash存储器每次写入数据需要先擦除数据所在的扇区,每个扇区的擦出或写入寿命都是有限的,通常是10万到100万次,一般一个扇区擦除或写入次数超越上限,则此扇区变为坏扇区,但其它扇区可以继续擦除和写入。
4.通常设备的数据记录系统需要记录两种类型的数据,一种是统计型记录,例如设备总的上电次数、总的运行时间等,统计型记录只需占用一个固定的存储空间。另一种是递增型记录,例如记录在某个时间,设备的运行状态,递增型记录是一直往后增加的。
5.目前数据记录的统计型记录,由于每次更新都是写入相同的物理地址,因此,flash存储器的一部分扇区被频繁擦除和写入,而另一部分扇区则常被闲置;存储数据所在的扇区容易被写坏,造成整个数据记录系统运行的影响。因此,若能将flash存储器的扇区进行合理、充分地利用,则有利于提高flash存储器的写入寿命和使用寿命。


技术实现要素:

6.为克服现有技术中的缺点与不足,本发明的目的在于提供一种基于flash存储器的数据记录系统;该数据记录系统利用多个分区循环将数据记录写入,避免数据每次都写入相同的物理地址,将flash存储器的扇区进行合理、充分地利用,可提高flash存储器的写入寿命和使用寿命,从而提升可靠性和安全性。
7.为了达到上述目的,本发明通过下述技术方案予以实现:一种基于flash存储器的数据记录系统,采用flash存储器存储数据记录;数据记录包括统计型记录和递增型记录;其特征在于:从flash存储器中分出用于存储统计型记录的存储空间,以及用于存储递增型记录的存储空间;
8.将flash存储器用于存储统计型记录的存储空间分为n个逻辑分区;每个逻辑分区的数据包括头部信息和数据内容;其中,头部信息包括特征字符、写入次数计数器、数据内容crc校验和头部信息crc校验;
9.统计型记录的上电加载方法是:上电后读入各个逻辑分区:分别对各个逻辑分区的数据内容crc校验和头部信息crc校验进行校验;若符合校验,则记录逻辑分区的索引号和写入次数计数器;读入所有逻辑分区后,通过找出记录里最大的写入次数计数器来获取最新写入的逻辑分区;将最新写入的逻辑分区的索引号logic_index和数据分别加载到缓
存的逻辑分区索引和逻辑分区空间中;
10.统计型记录的写入方法是:对当前缓存的逻辑分区空间,计算数据内容crc校验和头部信息crc校验;根据缓存中的索引号logic_index找到下一个逻辑分区;将下一个逻辑分区擦除,之后写入缓存中的逻辑分区数据。
11.优选地,所述统计型记录的上电加载方法,包括如下步骤:
12.x1、将最大写入次数计数器max_counter、最大索引号max_index、当前逻辑分区索引号分别初始化为零;
13.x2、比较当前逻辑分区索引号与最大索引号max_index的大小:
14.x21、若当前逻辑分区索引号≥最大索引号max_index,则根据当前逻辑分区索引号,加载当前逻辑分区数据到缓存的逻辑分区空间中;对当前逻辑分区的数据内容crc校验和头部信息crc校验进行校验:
15.若不符合校验,则丢弃当前逻辑分区,将当前逻辑分区索引号加1;之后重新执行x2;
16.若符合校验,则判断当前逻辑分区写入次数计数器是否大于最大写入次数计数器max_counter:若是,则将最大写入次数计数器max_counter的数值设定为当前逻辑分区的写入次数计数器,将最大索引号max_index设定为当前逻辑分区索引号,之后将当前逻辑分区索引号加1;否则直接将当前逻辑分区索引号加1;之后重新执行x2;
17.x22、若当前逻辑分区索引号<最大索引号max_index,则判断最大写入次数计数器max_counter的大小:
18.若最大索引号max_index=0,则清空所有逻辑分区数据,置缓存的逻辑分区空间中的写入次数计数器为1;
19.若最大索引号max_index≠0,则判定索引号为max_index的逻辑分区为最新写入的逻辑分区;将最新写入的逻辑分区的索引号logic_index和数据分别加载到缓存的逻辑分区索引和逻辑分区空间中。
20.优选地,所述x21中,对当前逻辑分区的数据内容crc校验和头部信息crc校验进行校验是指:校验条件为两个,分别是当前逻辑分区的头部信息crc校验是否正确,以及数据内容crc校验与头部信息crc校验是否相同;
21.若当前逻辑分区的头部信息crc校验正确,且数据内容crc校验与头部信息crc校验相同,则判定符合校验;否则不符合校验。
22.优选地,所述统计型记录的写入方法,包括如下步骤:
23.y1、对当前缓存的逻辑分区空间,计算数据内容crc校验和头部信息crc校验,写入次数计数器加1;
24.y2、根据当前缓存的逻辑分区索引的索引号logic_index和逻辑分区数量n,计算下一个逻辑分区索引号logic_index'为:
25.logic_index'=(logic_index+1)%n;其中,%为求余运算符;
26.y3、将索引号为logic_index'的逻辑分区擦除,之后写入缓存的逻辑分区空间中的数据。
27.每个逻辑分区均包含一个以上flash存储器物理扇区。
28.优选地,递增型记录的写入方法是:将flash存储器用于存储递增型记录的存储空
间以m为长度划分为l个区间;采用l个区间循环写入递增型记录。
29.优选地,所述长度m≥递增型记录的最大长度。
30.与现有技术相比,本发明具有如下优点与有益效果:
31.本发明数据记录系统利用多个分区循环将数据记录写入,避免数据每次都写入相同的物理地址,将flash存储器的扇区进行合理、充分地利用,可提高flash存储器的写入寿命和使用寿命,从而提升数据记录系统的可靠性和安全性。
附图说明
32.图1是本发明数据记录系统的统计型记录的上电加载方法的流程图;
33.图2是本发明数据记录系统的统计型记录的写入方法的流程图。
具体实施方式
34.下面结合附图与具体实施方式对本发明作进一步详细的描述。
35.实施例
36.本实施例一种基于flash存储器的数据记录系统,采用flash存储器存储数据记录;数据记录包括统计型记录和递增型记录。从flash存储器中分出用于存储统计型记录的存储空间,以及用于存储递增型记录的存储空间。本实施例把flash存储器存储空间前面一部分用来存储统计型记录,剩余的空间用来存储递增型记录。
37.本发明利用多个分区循环写入的原理,避免数据每次都写入相同的物理地址,提高flash存储器的写入寿命。将flash存储器用于存储统计型记录的存储空间分为n个逻辑分区;每个逻辑分区均包含一个以上flash存储器物理扇区。假设每个逻辑分区的大小为a个字节,则数据记录系统统计型记录的存储布局如表1所示。
38.物理地址逻辑分区0-(a-1)逻辑分区0a-(2a-1)逻辑分区12a-(3a-1)逻辑分区2
……
(n-1)*a-(n*a-1)逻辑分区n-1
39.表1统计型数据存储布局
40.每个逻辑分区的数据包括头部信息和数据内容,如表2所示;其中,头部信息包括特征字符、写入次数计数器、数据内容crc校验和头部信息crc校验,如表3所示。
41.头部信息数据内容
42.表2逻辑分区的数据结构
43.特征字符写入次数计数器数据内容crc校验头部信息crc校验
44.表3逻辑分区头部信息数据结构
45.统计型记录的上电加载方法是:上电后读入各个逻辑分区:分别对各个逻辑分区的数据内容crc校验和头部信息crc校验进行校验;若符合校验,则记录逻辑分区的索引号和写入次数计数器;读入所有逻辑分区后,通过找出记录里最大的写入次数计数器来获取
最新写入的逻辑分区;将最新写入的逻辑分区的索引号logic_index和数据分别加载到缓存的逻辑分区索引和逻辑分区空间中。
46.数据内容crc校验和头部信息crc校验可分别通过现有算法计算得到:数据内容crc校验是根据逻辑分区的数据内容计算出来,然后头部信息crc校验由特征字符、写入次数计数器、数据内容crc校验所有字节计算出来。头部信息crc校验的作用是先确认逻辑分区的头部信息是否正确,然后用数据内容crc校验来确认数据内容是否正确。读取逻辑分区时,要检验头部信息crc校验是否正确,再检验数据内容crc校验是否正确,两者都正确才认为此逻辑分区的数据是有效的。
47.缓存的数据结构如表4所示。
48.逻辑分区空间逻辑分区首地址逻辑分区索引是否改变标志
49.表4系统缓存的数据结构
50.具体地说,统计型记录的上电加载方法,如图1所示,包括如下步骤:
51.x1、将最大写入次数计数器max_counter、最大索引号max_index、当前逻辑分区索引号分别初始化为零;
52.x2、比较当前逻辑分区索引号与最大索引号max_index的大小:
53.x21、若当前逻辑分区索引号≥最大索引号max_index,则根据当前逻辑分区索引号,加载当前逻辑分区数据到缓存的逻辑分区空间中;对当前逻辑分区的数据内容crc校验和头部信息crc校验进行校验;
54.对当前逻辑分区的数据内容crc校验和头部信息crc校验进行校验是指:校验条件为两个,分别是当前逻辑分区的头部信息crc校验是否正确,以及数据内容crc校验与头部信息crc校验是否相同;若当前逻辑分区的头部信息crc校验正确,且数据内容crc校验与头部信息crc校验相同,则判定符合校验;否则不符合校验;
55.若不符合校验,则丢弃当前逻辑分区,将当前逻辑分区索引号加1;之后重新执行x2;
56.若符合校验,则判断当前逻辑分区写入次数计数器是否大于最大写入次数计数器max_counter:若是,则将最大写入次数计数器max_counter的数值设定为当前逻辑分区的写入次数计数器,将最大索引号max_index设定为当前逻辑分区索引号,之后将当前逻辑分区索引号加1;否则直接将当前逻辑分区索引号加1;之后重新执行x2;
57.x22、若当前逻辑分区索引号<最大索引号max_index,则判断最大写入次数计数器max_counter的大小:
58.若最大索引号max_index=0,则判定所有逻辑分区都没有写入过数据,清空所有逻辑分区数据,置缓存的逻辑分区空间中的写入次数计数器为1;
59.若最大索引号max_index≠0,则判定索引号为max_index的逻辑分区为最新写入的逻辑分区;将最新写入的逻辑分区的索引号logic_index和数据分别加载到缓存的逻辑分区索引和逻辑分区空间中。
60.随着设备运行,缓存中逻辑分区空间的写入次数计数器不断增大。
61.当需要记录统计型记录时,统计型记录写入flash存储器中。统计型记录的写入方法是:对当前缓存的逻辑分区空间,计算数据内容crc校验和头部信息crc校验;根据缓存中的索引号logic_index找到下一个逻辑分区;将下一个逻辑分区擦除,之后写入缓存中的逻
辑分区数据。
62.具体地说,统计型记录的写入方法,如图2所示,包括如下步骤:
63.y1、对当前缓存的逻辑分区空间,计算数据内容crc校验和头部信息crc校验,写入次数计数器加1;先根据数据内容计算出数据内容crc校验,然后再计算头部信息crc校验,数据内容crc校验和头部信息crc校验可通过现有算法来计算;
64.y2、根据当前缓存的逻辑分区索引的索引号logic_index和逻辑分区数量n,计算下一个逻辑分区索引号logic_index'为:
65.logic_index'=(logic_index+1)%n;其中,%为求余运算符;
66.y3、将索引号为logic_index'的逻辑分区擦除,之后写入缓存的逻辑分区空间中的数据。
67.递增型记录采用每条记录固定大小空间的数据类型。递增型记录的写入方法是:将flash存储器用于存储递增型记录的存储空间以m为长度划分为l个区间;长度m≥递增型记录的最大长度。采用l个区间循环写入递增型记录。
68.假设flash存储器用于存储递增型记录的存储空间总共能容纳l条递增型记录,写满l条递增型记录后,循环从第一条递增型记录所在的地址,写入下一条递增型记录。由于l是一个较大的数,递增型记录是在l个区间进行循环写入,即使频繁写入,写入寿命也是一个flash存储器扇区擦写寿命的l倍。
69.假设递增型记录的起始地址为b,则递增型记录的存储布局如表5所示。
70.物理地址数据记录索引b

(b+m-1)记录1(b+m)

(b+2m-1)记录2b+2m

(b+3m-1)记录3
……
b+(l-1)*m

(b+l*m-1)记录n
71.表5递增型记录的存储布局
72.上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1