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

一种应用于闪存的数据存储方法及系统与流程

2022-07-30 08:52:54 来源:中国专利 TAG:


1.本发明涉及数据存储技术领域,尤其涉及一种应用于闪存的数据存储方法及系统。


背景技术:

2.目前闪存flash在存储数据时,通常都是先擦除flash存储区域,然后写入需要存储的数据。擦除flash数据都是要么按页擦除,要么按块擦除,但闪存flash的擦除次数都是有限的,大多数闪存flash支持的是10万次擦除操作,之后闪存flash再次擦除存储时就不能保证稳定性了。
3.在使用闪存flash进行存储数据时,很多时候存储的数据是需要改变的,就存在需要频繁擦除之后重写。按照传统的先擦除再存储的数据存储操作模式,在闪存flash的一个地址位置存储经常需要变化的数据时,需要先擦除该区域,然后将改变之后的数据存储写到该地址位置。对于数据变化非常频繁的数据,按照这种数据存储操作模式很快就会将闪存flash的允许擦除次数寿命用完,从而造成闪存flash对应区域损坏失效。


技术实现要素:

4.针对现有技术中存在的问题,本发明提供一种应用于闪存的数据存储方法,预先于一闪存中划分出一块易变数据存储区域;则所述数据存储方法包括一数据写入过程,所述数据写入过程包括:
5.步骤s1,获取一待写入数据和所述易变数据存储区域中当前存储数据的存储起始地址,并根据所述待写入数据的写入数据长度和所述存储起始地址判断所述易变数据存储区域的可写入空间是否足够存储所述待写入数据:
6.若否,则转向步骤s2;
7.若是,则转向步骤s3;
8.步骤s2,对所述易变数据存储区域进行整体擦除,随后由所述易变数据存储区域的区域起始地址开始写入所述待写入数据,作为所述当前存储数据,随后返回所述步骤s1;
9.步骤s3,由所述存储起始地址开始读取得到所述写入数据长度的一读取数据,并根据所述读取数据和所述待写入数据判断是否能够由所述存储起始地址开始写入所述待写入数据:
10.若是,则由所述存储起始地址开始写入具有所述待写入数据作为所述当前存储数据,随后返回所述步骤s1;
11.若否,则由所述存储起始地址开始写入具有所述写入数据长度的全0数据,并将所述全0数据的结束地址的下一地址作为所述存储起始地址,随后返回所述步骤s1。
12.优选的,所述步骤s1中,判断所述易变数据存储区域的可写入空间是否足够存储所述待写入数据的过程包括:
13.判断所述易变数据存储区域中由所述存储起始地址开始的剩余地址长度是否大
于所述写入所述数据长度:
14.若否,则表示所述可写入空间不足够存储所述待写入数据,随后转向所述步骤s2;
15.若是,则表示所述可写入空间足够存储所述待写入数据,随后转向所述步骤s3。
16.优选的,所述步骤s3中,根据所述读取数据和所述待写入数据判断是否能够由所述存储起始地址开始写入所述待写入数据的过程包括:
17.步骤a1,判断所述待写入数据是否为全0数据:
18.若是,则转向步骤a2;
19.若否,则转向步骤a3;
20.步骤a2,判断所述读取数据是否全为0xff:
21.若是,则表示能够由所述存储起始地址开始写入所述待写入数据,不执行写入操作,并将所述读取数据作为所述当前存储数据,随后返回所述步骤s1;
22.若否,则表示能够由所述存储起始地址开始写入所述待写入数据,由所述存储起始地址开始写入所述待写入数据作为所述当前存储数据,随后返回所述步骤s1;
23.步骤a3,判断所述待写入数据与所述读取数据的按位相与的结果是否等于所述待写入数据:
24.若是,则表示能够由所述存储起始地址开始写入所述待写入数据,由所述存储起始地址开始写入所述待写入数据作为所述当前存储数据,随后返回所述步骤s1;
25.若否,则表示不能够由所述存储起始地址开始写入所述待写入数据,由所述存储起始地址开始写入具有所述写入数据长度的全0数据,并将所述全0数据的结束地址的下一地址作为所述存储起始地址,随后返回所述步骤s1。
26.优选的,所述步骤a2、所述步骤a3中,将所述读取数据作为所述当前存储数据之后,还包括将所述当前存储地址记录为写入起始遍历地址;
27.由所述存储起始地址开始写入所述待写入数据作为所述当前存储数据之后,还包括将所述待写入数据的写入结束地址的下一地址记录为所述写入起始遍历地址;
28.则所述步骤s1中,获取所述存储起始地址的过程包括:
29.判断是否查询到所述写入起始遍历地址:
30.若是,则由所述写入起始遍历地址开始遍历所述易变数据存储区域,以将首个不为0的数据地址作为所述存储起始地址;
31.若否,则由所述易变数据存储区域的所述区域起始地址开始遍历所述易变数据存储区域,以将首个不为0的数据地址作为所述存储起始地址。
32.优选的,所述数据存储方法还包括一数据读取过程,所述数据读取过程包括:
33.步骤b1,根据外部一读取请求于所述易变数据存储区域获取一读取起始地址;
34.步骤b2,判断所述易变数据存储区域中由所述读取起始地址开始的剩余地址长度是否大于所述读取数据长度:
35.若否,则返回所述当前存储数据为全零的数据读取结果,随后返回所述步骤b1;
36.若是,则转向步骤b3;
37.步骤b3,判断在所述剩余地址长度内是否查询到不全为0xff的所述当前存储数据:
38.若是,则返回查询到的所述当前存储数据作为所述数据读取结果,随后返回所述
步骤b1;
39.若否,则返回所述当前存储数据为全零的数据读取结果,随后返回所述步骤b1。
40.优选的,所述读取请求包含一读取数据长度;则所述步骤b3包括:
41.步骤b31,判断所述读取起始地址开始的所述读取数据长度的所述当前存储数据是否全为0:
42.若是,则将所述当前存储数据的结束地址的下一地址作为所述读取起始地址,随后返回所述步骤b31;
43.若否,则转向步骤b32;
44.步骤b32,判断所述当前存储数据是否全为0xff:
45.若是,则返回所述当前存储数据为全零的数据读取结果,随后返回所述步骤b1;
46.若否,则返回所述当前存储数据作为所述数据读取结果,随后返回所述步骤b1。
47.优选的,所述步骤b2中,所述剩余地址长度不大于所述读取数据长度时,还包括将所述读取起始地址减去所述读取数据长度得到数据地址记录为所述读取起始遍历地址;
48.所述步骤b31中,所述读取起始地址开始的所述读取数据长度的所述当前存储数据不全为0时,还包括将所述读取起始地址作为所述读取起始遍历地址;
49.则所述步骤b1中,获取所述读取起始地址的过程包括:
50.判断是否查询到所述读取起始遍历地址:
51.若是,则由所述读取起始遍历地址开始遍历所述易变数据存储区域,以将首个不为0的数据地址作为所述读取起始地址;
52.若否,则由所述易变数据存储区域的所述区域起始地址开始遍历所述易变数据存储区域,以将首个不为0的数据地址作为所述读取起始地址。
53.本发明还提供一种应用于闪存的数据存储系统,应用上述的数据存储方法,所述数据存储系统包括:
54.数据写入模块,连接一闪存的一易变数据存储区域,所述数据写入模块包括:
55.第一判断单元,用于获取一待写入数据和所述易变数据存储区域中当前存储数据的存储起始地址,并根据所述待写入数据的写入数据长度和所述存储起始地址判断所述易变数据存储区域的可写入空间不足够存储所述待写入数据时输出一擦除信号,以及在所述可写入空间足够存储所述待写入数据时输出一写入信号;
56.擦除后写入单元,连接所述第一判断单元,用于根据所述擦除信号对所述易变数据存储区域进行整体擦除,随后由所述易变数据存储区域的区域起始地址开始写入所述待写入数据,作为所述当前存储数据;
57.第二判断单元,连接所述第一判断单元,用于根据所述写入信号由所述存储起始地址开始读取得到所述写入数据长度的一读取数据,并根据所述读取数据和所述待写入数据判断能够由所述存储起始地址开始写入所述待写入数据时,由所述存储起始地址开始写入所述待写入数据作为所述当前存储数据,
58.以及在不能够由所述存储起始地址开始写入所述待写入数据时,由所述存储起始地址开始写入具有所述写入数据长度的全0数据,并将所述全0数据的结束地址的下一地址作为所述存储起始地址。
59.优选的,所述第二判断单元包括:
60.第一判断子单元,用于在判断所述待写入数据为全0数据时输出一第一信号,以及在判断所述待写入数据不全为0时输出一第二信号;
61.第二判断子单元,连接所述第一判断子单元,用于根据所述第一信号判断所述读取数据全为0xff时,不执行写入操作并将所述读取数据作为所述当前存储数据,以及判断所述读取数据不全为0xff时,由所述存储起始地址开始写入所述待写入数据作为所述当前存储数据;
62.第三判断子单元,连接所述第一判断子单元,用于根据所述第二信号判断所述待写入数据与所述读取数据的按位相与的结果等于所述待写入数据时,由所述存储起始地址开始写入所述待写入数据作为所述当前存储数据,
63.以及判断所述结果不等于所述待写入数据时,由所述存储起始地址开始写入具有所述写入数据长度的全0数据,并将所述全0数据的结束地址的下一地址作为所述存储起始地址。
64.优选的,还包括一数据读取模块,连接所述易变数据存储区域,所述数据读取模块包括:
65.地址获取单元,用于根据外部一读取请求于所述易变数据存储区域获取一读取起始地址;
66.第三判断单元,连接所述地址获取单元,用于判断所述易变数据存储区域中由所述读取起始地址开始的剩余地址长度不大于所述读取数据长度时,返回所述当前存储数据为全零的数据读取结果,以及在所述剩余地址长度大于所述读取数据长度时输出一第三信号;
67.第四判断单元,连接所述第三判断单元,用于根据所述第三信号判断在所述剩余地址长度内能够查询到不全为0xff的所述当前存储数据时,返回查询到的所述当前存储数据作为所述数据读取结果,以及在不能够查询到不全为0xff的所述当前存储数据时,返回所述当前存储数据为全零的数据读取结果。
68.上述技术方案具有如下优点或有益效果:
69.1)在闪存中划分出一块易变数据存储区域,实现在写入数据时,能够从易变数据存储区域的区域起始地址开始写入,直至从易变数据存储区域的区域结束地址使用完后,对该易变数据存储区域进行一次整体擦除,然后再从区域起始地址开始写入,以此类推,能够均匀使用易变数据存储区域,同时有效减少闪存擦除次数,从而增加闪存使用寿命;
70.2)应用闪存的比特位只可以从1写成0的特性,在写入变化的数据时,能够实现将易变数据存储区域的当前存储区域全部写成0,再向下一相邻存储区域写入变化的数据,进而实现在数据读取时,从易变数据存储区域的区域起始地址开始直至读取到不为0的数据即为当前存储数据,如果全为0xff则表示当前存储数据为0。
附图说明
71.图1为本发明的较佳的实施例中,数据写入过程的流程示意图;
72.图2为本发明的较佳的实施例中,根据读取数据和待写入数据判断是否能够由存储起始地址开始写入待写入数据的过程的流程示意图;
73.图3为本发明的较佳的实施例中,数据读取过程的流程示意图;
74.图4为本发明的较佳的实施例中,步骤b3的子流程示意图;
75.图5为本发明的较佳的实施例中,数据存储系统的结构示意图;
76.图6为本发明的优选的实施方式中,闪存flash内离线烧录信息存储示意图。
具体实施方式
77.下面结合附图和具体实施例对本发明进行详细说明。本发明并不限定于该实施方式,只要符合本发明的主旨,则其他实施方式也可以属于本发明的范畴。
78.本发明的较佳的实施例中,基于现有技术中存在的上述问题,现提供一种应用于闪存的数据存储方法,预先于一闪存中划分出一块易变数据存储区域;则数据存储方法包括一数据写入过程,如图1所示,数据写入过程包括:
79.步骤s1,获取一待写入数据和易变数据存储区域中当前存储数据的存储起始地址,并根据待写入数据的写入数据长度和存储起始地址判断易变数据存储区域的可写入空间是否足够存储待写入数据:
80.若否,则转向步骤s2;
81.若是,则转向步骤s3;
82.步骤s2,对易变数据存储区域进行整体擦除,随后由易变数据存储区域的区域起始地址开始写入待写入数据,作为当前存储数据,随后返回步骤s1;
83.步骤s3,由存储起始地址开始读取得到写入数据长度的一读取数据,并根据读取数据和待写入数据判断是否能够由存储起始地址开始写入待写入数据:
84.若是,则由存储起始地址开始写入待写入数据作为当前存储数据,随后返回步骤s1;
85.若否,则由存储起始地址开始写入具有写入数据长度的全0数据,并将全0数据的结束地址的下一地址作为存储起始地址,随后返回步骤s1。
86.具体地,本实施例中,上述易变数据存储区域包括但不限于闪存中的一页区域或一块区域。利用闪存的比特位只可以从1写成0的特性,在易变数据存储区域执行一次整体擦除后,易变数据存储区域的各比特位为1,随后待写入数据从易变数据存储区域的区域起始地址开始写入,此时易变数据存储区域中当前存储数据的存储起始地址即为区域起始地址,以易变数据存储区域的大小为128个字节,待写入数据的写入数据长度为32位(4个字节)为例,此时,易变数据存储区域的可写入空间足够存储待写入数据。基于此,由存储起始开始读取得到4个字节的读取数据,可知此时读取数据的各比特位均为1,利用闪存的比特位只可以能从1写成0的特性,此时,无论待写入数据为何数值,其均能够由存储起始地址开始写入待写入数据。
87.在一次写入完成后,若待写入数据需再次变化,再次执行上述步骤,此时,存储起始地址仍为区域起始地址,可见易变数据存储区域的可写入空间仍足够存储待写入数据。基于此,由存储起始地址开始读取得到4个字节的读取数据,可知此时读取数据的各比特位为上一次的待写入数据,利用闪存的比特位只可以从1写成0的特性,以上一次待写入数据中的其中一个比特位为0,而当前需要写入的待写入数据的该比特位为1为例,则由于比特位无法从0写成1,此时认为不能够由存储起始地址开始写入待写入数据,此时,首先由存储起始地址开始写入4个字节的全0数据,并将全0数据的结束地址的下一地址作为存储起始
地址。随后再次判断该存储起始地址至易变数据存储区域的区域结束地址之间能否容纳4个字节,可以容纳则从全0数据的结束地址的下一地址开始写入当前需要写入的待写入数据,以此类推,直至易变存储区域的可写入空间不足够存储待写入数据,则需要对易变存储区域进行一次整体擦除,随后由易变数据存储区域的区域起始地址开始写入待写入数据,循环进行数据存储操作。
88.可以看出,采用本技术方案的数据存储方法,以经常变化的待写入数据为4个字节,易变数据存储区域的大小为128个字节为例,则待写入数据至少变化128/4=32次后,才会对该易变数据存储区域进行一次擦除操作,实现均匀使用易变数据存储区域,同时减少闪存的擦除次数,进而增加闪存使用寿命。优选的,可以根据经常变化的待写入数据的变化频率配置易变数据存储区域的大小,如变化频率比较大,则可以相应配置更大存储空间的易变数据存储区域,以降低闪存的擦除次数。
89.本发明的较佳的实施例中,步骤s1中,判断易变数据存储区域的可写入空间是否足够存储待写入数据的过程包括:
90.判断易变数据存储区域中由存储起始地址开始的剩余地址长度是否大于写入数据长度:
91.若否,则表示可写入空间不足够存储待写入数据,随后转向步骤s2;
92.若是,则表示可写入空间足够存储待写入数据,随后转向步骤s3。
93.具体地,本实施例中,该剩余地址长度表示存储起始地址至易变数据存储区域的区域结束地址之间的存储空间大小。
94.本发明的较佳的实施例中,步骤s3中,如图2所示,根据读取数据和待写入数据判断是否能够由存储起始地址开始写入待写入数据的过程包括:
95.步骤a1,判断待写入数据是否为全0数据:
96.若是,则转向步骤a2;
97.若否,则转向步骤a3;
98.步骤a2,判断读取数据是否全为0xff:
99.若是,则表示能够由存储起始地址开始写入待写入数据,不执行写入操作,并将读取数据作为当前存储数据,随后返回步骤s1;
100.若否,则表示能够由存储起始地址开始写入待写入数据,由存储起始地址开始写入待写入数据作为当前存储数据,随后返回步骤s1;
101.步骤a3,判断待写入数据与读取数据的按位相与的结果是否等于待写入数据:
102.若是,则表示能够由存储起始地址开始写入待写入数据,由存储起始地址开始写入待写入数据作为当前存储数据,随后返回步骤s1;
103.若否,则表示不能够由存储起始地址开始写入待写入数据,由存储起始地址开始写入具有写入数据长度的全0数据,并将全0数据的结束地址的下一地址作为存储起始地址,随后返回步骤s1。
104.具体地,本实施例中,在待写入数据为全0数据时,若读取数据全为0xff,则可以表示易变存储区域的当前存储数据已经是0,此时可以认为该待写入数据未发生变化,无需再次执行写入操作。在待写入数据为全0数据,读取数据不全为0xff时,说明待写入数据发生变化,需要执行写入操作,且由于待写入数据为全0,利用闪存的比特位只可以能从1写成0
的特性,可以由存储起始地址开始成功写入待写入数据作为当前存储数据,采用覆盖写入的方式,无需先擦除再写入,实现该存储空间的复用,进一步减少闪存的擦除次数。
105.在待写入数据不为全0数据时,将待写入数据与读取数据按位相与,若待写入数据的其中一个比特位为0,则无论读取数据对应的比特位的值为1或0,按位相与的结果均为0,若待写入数据的其中一个比特位为1,则读取数据对应的比特位的值需要为1,其按位相与的结果才与待写入数据对应的比特位相等。若待写入数据的其中一个比特位为1,读取数据对应的比特位的值为0,其按位相与的结果为0,与待写入数据对应的比特位不相等,利用闪存的比特位只可以从1写成0的特性,若此时仍采用覆盖写入的方式,则无法写入成功。基于此,本实施例中,在待写入数据与读取数据的按位相与的结果等于待写入数据时,采用覆盖写入的方式实现易变数据存储区域的该存储空间的复用,在待写入数据与读取数据的按位相与的结果不等于待写入数据时,由存储起始地址开始写入具有写入数据长度的全0数据,并将全0数据的结束地址的下一地址作为存储起始地址,随后返回步骤s1,重复上述流程,以实现成功写入该待写入数据的同时,减少闪存的擦除次数。
106.本发明的较佳的实施例中,步骤a2、步骤a3中,将读取数据作为当前存储数据之后,还包括将当前存储地址记录为写入起始遍历地址;
107.由存储起始地址开始写入待写入数据作为当前存储数据之后,还包括将待写入数据的写入结束地址的下一地址记录为写入起始遍历地址;
108.则步骤s1中,获取存储起始地址的过程包括:
109.判断是否查询到写入起始遍历地址:
110.若是,则由写入起始遍历地址开始遍历易变数据存储区域,以将首个不为0的数据地址作为存储起始地址;
111.若否,则由易变数据存储区域的区域起始地址开始遍历易变数据存储区域,以将首个不为0的数据地址作为存储起始地址。
112.具体地,本实施例中,通过记录写入起始遍历地址,使得在下次需要写入待写入数据时,无需从易变数据存储区域的区域起始地址开始查询存储起始地址,有效提升查询效率。同时,考虑到闪存初始化时,其可能不存在写入起始遍历地址,则此时由易变数据存储区域的区域起始地址开始查询,以获取存储起始地址。
113.本发明的较佳的实施例中,数据存储方法还包括一数据读取过程,如图3所示,数据读取过程包括:
114.步骤b1,根据外部一读取请求于易变数据存储区域获取一读取起始地址;
115.步骤b2,判断易变数据存储区域中由读取起始地址开始的剩余地址长度是否大于读取数据长度:
116.若否,则返回当前存储数据为全零的数据读取结果,随后返回步骤b1;
117.若是,则转向步骤b3;
118.步骤b3,判断在剩余地址长度内是否查询到不全为0xff的当前存储数据:
119.若是,则返回查询到的当前存储数据作为数据读取结果,随后返回步骤b1;
120.若否,则返回当前存储数据为全零的数据读取结果,随后返回步骤b1。
121.本发明的较佳的实施例中,读取请求包含一读取数据长度;如图4所示,则步骤b3包括:
122.步骤b31,判断读取起始地址开始的读取数据长度的当前存储数据是否全为0:
123.若是,则将当前存储数据的结束地址的下一地址作为读取起始地址,随后返回步骤b31;
124.若否,则转向步骤b32;
125.步骤b32,判断当前存储数据是否全为0xff:
126.若是,则返回当前存储数据为全零的数据读取结果,随后返回步骤b1;
127.若否,则返回当前存储数据作为数据读取结果,随后返回步骤b1。
128.本发明的较佳的实施例中,步骤b2中,剩余地址长度不大于读取数据长度时,还包括将读取起始地址减去读取数据长度得到数据地址记录为读取起始遍历地址;
129.步骤b31中,读取起始地址开始的读取数据长度的当前存储数据不全为0时,还包括将读取起始地址作为读取起始遍历地址;
130.则步骤b1中,获取读取起始地址的过程包括:
131.判断是否查询到读取起始遍历地址:
132.若是,则由读取起始遍历地址开始遍历易变数据存储区域,以将首个不为0的数据地址作为读取起始地址;
133.若否,则由易变数据存储区域的区域起始地址开始遍历易变数据存储区域,以将首个不为0的数据地址作为读取起始地址。
134.具体地,本实施例中,通过记录读取起始遍历地址,使得在下次需要读取数据时,无需从易变数据存储区域的区域起始地址开始查询读取起始地址,有效提升读取效率。
135.本发明还提供一种应用于闪存的数据存储系统,应用上述的数据存储方法,如图5所示,数据存储系统包括:
136.数据写入模块1,连接一闪存的一易变数据存储区域2,数据写入模块1包括:
137.第一判断单元11,用于获取一待写入数据和易变数据存储区域中当前存储数据的存储起始地址,并根据待写入数据的写入数据长度和存储起始地址判断易变数据存储区域的可写入空间不足够存储待写入数据时输出一擦除信号,以及在可写入空间足够存储待写入数据时输出一写入信号;
138.擦除后写入单元12,连接第一判断单元11,用于根据擦除信号对易变数据存储区域进行整体擦除,随后由易变数据存储区域的区域起始地址开始写入待写入数据,作为当前存储数据;
139.第二判断单元13,连接第一判断单元11,用于根据写入信号由存储起始地址开始读取得到写入数据长度的一读取数据,并根据读取数据和待写入数据判断能够由存储起始地址开始写入待写入数据时,由存储起始地址开始写入待写入数据作为当前存储数据,
140.以及在不能够由存储起始地址开始写入待写入数据时,由存储起始地址开始写入具有写入数据长度的全0数据,并将全0数据的结束地址的下一地址作为存储起始地址。
141.本发明的较佳的实施例中,第二判断单元13包括:
142.第一判断子单元131,用于在判断待写入数据为全0数据时输出一第一信号,以及在判断待写入数据不全为0时输出一第二信号;
143.第二判断子单元132,连接第一判断子单元131,用于根据第一信号判断读取数据全为0xff时,不执行写入操作并将读取数据作为当前存储数据,以及判断读取数据不全为
0xff时,由存储起始地址开始写入待写入数据作为当前存储数据;
144.第三判断子单元133,连接第一判断子单元132,用于根据第二信号判断待写入数据与读取数据的按位相与的结果等于待写入数据时,由存储起始地址开始写入待写入数据作为当前存储数据,
145.以及判断结果不等于待写入数据时,由存储起始地址开始写入具有写入数据长度的全0数据,并将全0数据的结束地址的下一地址作为存储起始地址。
146.本发明的较佳的实施例中,还包括一数据读取模块3,连接易变数据存储区域2,数据读取模块3包括:
147.地址获取单元31,用于根据外部一读取请求于易变数据存储区域获取一读取起始地址;
148.第三判断单元32,连接地址获取单元31,用于判断易变数据存储区域中由读取起始地址开始的剩余地址长度不大于读取数据长度时,返回当前存储数据为全零的数据读取结果,以及在剩余地址长度大于读取数据长度时输出一第三信号;
149.第四判断单元33,连接第三判断单元32,用于根据第三信号判断在剩余地址长度内能够查询到不全为0xff的当前存储数据时,返回查询到的当前存储数据作为数据读取结果,以及在不能够查询到不全为0xff的当前存储数据时,返回当前存储数据为全零的数据读取结果。
150.作为优选的实施方式,本技术方案可以应用于在烧录器中使用到闪存flash记录烧录器离线烧录芯片程序次数,预设的允许离线烧录芯片次数之后,每次成功下载一次之后需要记录减去一次使用次数的应用场景。
151.具体地,闪存flash内离线烧录信息存储如图6所示,将烧录总数存储在一个sector 4k区域,由于烧录总数最大值设置为9999999次,所以按照32位数据(4个字节)为最小单元进行存储。
152.设置烧录总数的时候,先从烧录总数存储区的起始区进行查询存储,直到结束区全被存储过且无法再次进行存储时,才会擦除一次烧录总数存储区,然后再次从起始区进行存储。
153.已用次数存储区同样存储在一个sector 4k区域,存储32位(4字节)已使用次数数据,存储方式也是先从已用次数存储区的起始区进行查询存储,直到结束区全被存储过且无法再次进行存储时,才会擦除一次已用次数存储区。
154.设置烧录总数时,需要将已使用次数清零,读取判断已用次数存储区数据是否为0,不为0先写为0。
155.已用次数小计存储区同样存储在一个sector 4k区域,存储1字节(4字节)为最小单元,同时计数已最小单元的1位从1变为0时,作为一次使用次数计数,所以1字节可以记录8次使用次数。按照这种记录方式,将4k区域的1全写为0时,可以计数4096*8=32768次。
156.设置烧录总数时,需要检测已用次数小计存储区是否有计数,如果有计数需要擦除清零处理。
157.如果已用次数小计存储区计数超出32768次数之后,只需要擦除一次已用次数小计存储区将该区域所有数据全变为1。然后已用次数存储的32位数据加32768次之后进行存储。
158.按照本技术方案进行存储计数,可以更有效的减少擦除闪存flash次数,同时增加闪存flash的使用寿命。
159.以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
再多了解一些

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

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

相关文献