一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种嵌入式NORFLASH芯片的数据存储管理方法与流程

2022-02-19 06:05:51 来源:中国专利 TAG:

一种嵌入式nor flash芯片的数据存储管理方法
技术领域
1.本发明属于计算机数据存储技术领域,特别是涉及一种可应用于嵌入式系统的nor flash芯片的数据存储管理方法。


背景技术:

2.随着物联网设备在不同行业领域的广泛应用,物联网嵌入式设备需要采集并存储大量不同类型的传感器数据,nor flash闪存以其相对低廉的成本在物联网设备中被大量使用。但nor flash存储器的读写原理决定了其在写入数据之前必须先擦除,且最小擦除单位为一个扇区或一页,这导致其写入速度较慢,大大降低了系统的数据存储性能。目前嵌入式系统的数据存储区通常采用简单的顺序式管理,即按照先写入先擦除的方式管理数据,并未对不同类型的数据进行灵活分区管理,存在重要数据被提前擦除的风险。
3.因此,急需设计一种嵌入式nor flash芯片的数据存储管理方法,一方面能对存储数据进行分类管理,另一方面还可以在系统空闲时间对已使用的存储资源进行回收,以提升嵌入式系统的数据存储性能。


技术实现要素:

4.(一)要解决的技术问题
5.基于此,本发明公开了一种嵌入式nor flash芯片的数据存储管理方法,该方法能在向flash存储器写入数据前的一段cpu空闲时间内预先擦除flash数据存储空间,待需要写入数据时即可以直接写入,缩短数据写入时间,尤其在批量写入数据时能极大提高写入的效率,还能依据权重对存储数据进行分类管理。
6.(二)技术方案
7.本发明公开了一种嵌入式nor flash芯片的数据存储管理方法,该数据存储管理方法包括:
8.步骤s1:将nor flash芯片的存储空间划分为索引表区、标志管理表区和数据存储区三个部分,检索索引表区内的第一个索引表数据。所述索引表区的索引表结构包含索引号、对应数据区是否被占用标志和对应标志管理表的地址,标志管理表的数据项包括标志管理区号、数据是否被处理标志、数据对应权重和对应数据存储区的地址;
9.步骤s2:通过索引表的标志判断对应数据区是否被占用,若对应数据区未被占用则执行步骤s6;若对应数据区被占用则执行下一步骤;
10.步骤s3:进入对应的标志管理表区,读取标志管理表中的数据是否被处理标志;若被处理则执行步骤s5;若未被处理则执行下一步骤;
11.步骤s4:根据权重统计表判断当前数据权重是否为最低;若否则执行步骤s6;若是则执行下一步骤;
12.步骤s5:将标志对应的数据存储地址放入待擦除区;
13.步骤s6:判断索引表区此轮检索的索引表是否遍历完成,若为否则执行步骤s2以
继续检索下一个索引表,若为是则执行下一步骤;
14.步骤s7:按数据区时间戳先后顺序对待擦除数据进行排序,最先采集的数据地址置于待擦除区首端;
15.步骤s8:判断待擦除数据数量s是否大于等于所需擦除空间的大小n,如果是则将待擦除区数据地址对应的数据存储区擦除;若否,则将所需擦除的空间大小更改为n

s,并把下一个要检索的索引号更改为下一轮检索的首个索引号值,并执行步骤s2以继续检索下一个索引表;若是则执行下一步骤;
16.步骤s9:将待擦除区数据地址对应的数据存储区擦除;
17.步骤s10:将索引表中对应的数据占用标志更改为未占用。
18.进一步的,所述执行步骤s2以继续检索下一个索引表包括:先检索下一个索引号对应的索引号标志,随后执行步骤s2。
19.进一步的,步骤s4中所述的权重统计表为存放于flash最后一个子扇区内的一个数据表。
20.进一步的,步骤s5中所述的待擦除区为从处理器的sram中分配的两个缓存区,其中一个缓存区存放已被处理数据的存储地址,另一个存放未被处理但数据权重为最低的数据存储地址,擦除数据存储区时先根据已被处理数据的存储地址进行擦除。
21.进一步的,在步骤s6中,对所述索引表区内索引表的遍历检索,当索引表数量较为巨大时,则根据所需擦除数据空间的大小设置每轮检索索引表的数量,进行多轮检索。
22.进一步的,在步骤s8中,所述下一轮检索的首个索引号值大于索引表的最大索引号时,将下一轮检索的首个索引号值更改为0,从索引表的开端进行新一轮检索。
23.进一步的,所述的将待擦除区数据地址对应的数据存储区擦除时需根据数据地址判断该数据存储区在flash存储器内是否跨扇区,如果没有跨扇区则将数据帧所在的整个扇区内容读取至4k的缓存区内,在缓存区内删除需擦除的数据帧,然后擦除整个扇区,再将缓存区内的数据一次性写入扇区;如果要擦除的数据帧在flash存储器内跨扇区,则需要在跨越的两个扇区内依次执行以上的操作将数据帧擦除。
24.在另外一方面,本发明还公开了一种嵌入式系统,包括:至少一个处理器以及与所述处理器通信连接的至少一个nor flash存储器,所述处理器内部sram要求容量足够大,在对flash进行扇区擦除时,能至少分配一个4k的缓存区用来缓存一个扇区的内容,且有足够余量用来为待擦除数据地址分配两个缓存区;在所述nor flash存储器中能够执行如上述任一项所述的嵌入式nor flash芯片的数据存储管理方法。
25.(三)有益效果
26.相对于现有技术,本发明具备如下的有益效果:该数据存储管理方法通过对nor flash的存储空间重新进行区域划分,并设置相应的数据标志对存储区内的数据进行分类管理,配合新的存储管理方式可在系统cpu空闲时间对已分配的存储资源进行灵活回收,能有效减少批量数据擦除时的系统等待时间,提高nor flash芯片的数据写入效率。
附图说明
27.通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
28.图1为本发明中索引表区与标志管理表区结构示意图及对应的地址映射关系。
29.图2为本发明中权重统计表和数据存储区示意图。
30.图3为本发明中嵌入式nor flash芯片的数据存储管理方法的流程图。
具体实施方式
31.下面将结合附图和实施例对本发明进行清楚、完整地描述,同时也叙述了本发明技术方案解决的技术问题及有益效果,需要指出的是,所描述的实施例仅旨在便于对本发明的理解,而对其不起任何限定作用。
32.图1

3所示,本发明实施例公开了一种嵌入式nor flash芯片的数据存储管理方法,包括以下步骤:
33.步骤s1:将nor flash芯片的存储空间划分为索引表区、标志管理表区和数据存储区三个部分,检索索引表区内的第一个索引表数据;
34.所述索引表区的索引表结构包含索引号、对应数据区是否被占用标志和对应标志管理表的地址,标志管理表的数据项包括标志管理区号、数据是否被处理标志、数据对应权重和对应数据存储区的地址。
35.如图1所示,以spi flash存储器m25pe16为例,该存储芯片的总容量为2m字节,共分为32个扇区,每个扇区又细分为16个子扇区,每个子扇区包含16页,每页256字节。本发明实施例将存储芯片m25pe16的地址区间0~0efffh分配为索引表区,地址区间0f000h~22fffh分配为标志管理区,从地址23000h开始作为数据存储区,实施例从地址0开始检索第一个索引表的数据。
36.步骤s2:通过索引表的标志判断对应数据区是否被占用,若对应数据区未被占用则执行步骤s6;若对应数据区被占用则执行下一步骤;
37.本实施例中一个索引表的数据项内容占6个字节,检索第二个索引表即从地址6开始检索,往下轮询检索时以此类推。
38.步骤s3:如果索引表中的标志显示对应数据区被占用,则进入对应的标志管理表区,读取标志管理表中的数据是否被处理标志;若被处理则执行步骤s5;若未被处理则执行下一步骤;
39.标志管理表的始址为0f000h,进入对应的标志管理表区读取标志即从该地址开始往下读取。
40.步骤s4:如果标志管理表中的标志显示数据未被处理,则根据权重统计表判断当前数据权重是否为最低;若否则执行步骤s6;若是则执行下一步骤;
41.本实施例中数据权重统计表存放于flash最后一个子扇区内的地址段1ff000h~1ff004h,数据权重根据数据帧的重要程度依次设置从1至5的权重。
42.步骤s5:若数据已被处理或者当前未被处理的数据其权重为最低,则将标志对应的数据存储地址放入待擦除区;
43.具体还包括,设置待擦除区时在缓存区分配了两段数据空间,一段用来存放已被处理数据的存储地址,另一个存放未被处理但数据权重为最低的数据存储地址,擦除数据存储区时先根据已被处理数据的存储地址进行擦除。
44.步骤s6:如果索引表中的标志显示对应数据区未被占用或当前未被处理的数据其
权重不为最低则判断索引表区此轮检索的索引表是否遍历完成,若为否则执行步骤s2以继续检索下一个索引表,若为是则执行下一步骤;
45.所述执行步骤s2以继续检索下一个索引表包括:先检索下一个索引号对应的索引号标志,随后执行步骤s2;
46.具体还包括,步骤s6中对所述索引表区内索引表的遍历检索,当索引表数量较为巨大时,可根据所需擦除数据空间的大小设置每轮检索索引表的数量,进行多轮检索。按照本实施例中flash存储空间的分区设置,索引区最多能包含10000个索引表,如果一次性检索完所有的索引表则时间开销较大,因此设置每轮检索索引表的数量为300,其对应每一类数据帧的存储数量为60条(如图2所示,设置了5类数据帧,分别对应1

5的5个优先级的数据权重的数量)。
47.步骤s7:当索引表区的所有索引表检索完成后,按数据区时间戳先后顺序对待擦除数据进行排序,最先采集的数据地址置于待擦除区首端;
48.步骤s8:判断待擦除数据数量s是否大于等于所需擦除空间的大小n,如果是则将待擦除区数据地址对应的数据存储区擦除;若否,则将所需擦除的空间大小更改为n

s,并把下一个要检索的索引号更改为下一轮检索的首个索引号值,并执行步骤s2以继续检索下一个索引表;若是则执行下一步骤;
49.具体还包括,进行多轮索引表的检索后,若下一轮检索的首个索引号值大于索引表的最大索引号10000,将下一轮检索的首个索引号值更改为0,从索引表的开始位置进行新一轮检索。
50.步骤s9:如果待擦除数据数量s大于等于所需擦除空间的大小n,则将待擦除区数据地址对应的数据存储区擦除;
51.具体还包括,所述的将待擦除区数据地址对应的数据存储区擦除时需根据数据地址判断该数据存储区在flash存储器内是否跨扇区,如果没有跨扇区则将数据帧所在的整个扇区内容读取至4k的缓存区内,在缓存区内删除需擦除的数据帧,然后擦除整个扇区,再将缓存区内的数据一次性写入扇区;如果要擦除的数据帧在flash存储器内跨扇区,则需要在跨越的两个扇区内依次执行上述操作将数据帧擦除。
52.步骤s10、待擦除区数据地址对应的数据存储区被擦除后,则将索引表中对应的数据占用标志更改为未占用。
53.综上,本实施例的步骤s1

s10通过在系统cpu处于空闲状态下循环运行,提前擦除flash存储空间内已被处理及数据权重最低的数据,从而为系统数据写入预留出充足的存储空间,减少了批量数据擦除时的系统等待时间,还能极大提高flash芯片的数据写入效率。
54.在软件程序的实际测试过程中,本实施例的方法大大提高了嵌入式flash芯片的批量数据写入效率,且减少了批量数据擦除时的系统等待时间,具有较高的应用价值。
55.最后说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献