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

一种基于单片机的闪存数据交换方法及终端与流程

2022-06-11 15:24:15 来源:中国专利 TAG:


1.本发明涉及嵌入式技术领域,特别涉及一种基于单片机的闪存数据交换方法及终端。


背景技术:

2.flash是一种非易失性(non-volatile)内存,它能在没有供电的条件下也能够长久地保持数据,其存储特性相当于硬盘。
3.目前flash常见的是最小以扇区为单位执行擦除的,即如果只想更新flash中某个字节的数据,就只能将该字节所在flash扇区全部擦除后,再更新数据并重新写入其余数据。
4.但是每个flash扇区的擦除次数有限,一般是在1万次到100万次之间,当前市面上flash一般为10万次,只要扇区的擦除次数达到了上限,将会造成存储数据的丢失、无法写入的等问题。并且在嵌入式设备中,flash通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。
5.以常见的外部flash芯片w25q128bv为例,它由65536可编程的页组成,每页256个字节。在擦除时,最少一次性擦除一个扇区(即16页,256*16=4kb),哪怕只需要更新一个字节数据,也需要将更新地址对应的扇区整个擦除。为了避免其他不更改数据的丢失,需要将当前扇区的其他数据先读出来保存,然后更新数据后,再次写入扇区中。而这个时候单片机就至少需要申请4096字节缓存用于存储这些数据,当使用ram空间资源紧张的单片机时是无法接受的,例如本身只有4kbyteram的单片机。通常面对这种情况,只能选用单个扇区大小更小的flash(比如512字节)或者选择价格贵的eeprom,再或者甚至改用ram资源丰富的单片机。


技术实现要素:

6.本发明所要解决的技术问题是:提供一种基于单片机的闪存数据交换方法及终端,能够减少更新闪存扇区时的内存占用并减少闪存磨损程度。
7.为了解决上述技术问题,本发明采用的技术方案为:
8.一种基于单片机的闪存数据交换方法,包括步骤:
9.在闪存中设置数据扇区、临时缓存空间和交换扇区,所述数据扇区的大小与所述交换扇区的大小相同,所述临时缓存空间的大小小于内存页的大小;
10.擦除所述交换扇区,将所述数据扇区中的数据通过所述临时缓存空间写入所述交换扇区中;
11.擦除所述数据扇区,将所述交换扇区中的数据通过所述临时缓存空间写回所述数据扇区中,并在所述临时缓存空间中进行数据更新。
12.为了解决上述技术问题,本发明采用的另一种技术方案为:
13.一种基于单片机的闪存数据交换终端,包括存储器、处理器以及存储在所述存储
器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
14.在闪存中设置数据扇区、临时缓存空间和交换扇区,所述数据扇区的大小与所述交换扇区的大小相同,所述临时缓存空间的大小小于内存页的大小;
15.擦除所述交换扇区,将所述数据扇区中的数据通过所述临时缓存空间写入所述交换扇区中;
16.擦除所述数据扇区,将所述交换扇区中的数据通过所述临时缓存空间写回所述数据扇区中,并在所述临时缓存空间中进行数据更新。
17.本发明的有益效果在于:在闪存中设置数据扇区、临时缓存空间和交换扇区,其中数据扇区与交换扇区的扇区大小相同,临时缓存空间的大小小于内存页的大小,因此减少缓存空间即减少更新闪存扇区时的内存占用。在数据交换时,先擦除交换扇区,将数据扇区中的数据通过临时缓存空间写入交换扇区;再擦除数据扇区,将交换扇区中的数据在临时缓存空间更新后再写回数据扇区。因此在临时缓存空间进行数据更新,不需要每次更新都擦除整个扇区的内容,减少闪存磨损程度。
附图说明
18.图1为本发明实施例的一种基于单片机的闪存数据交换方法的流程图;
19.图2为本发明实施例的一种基于单片机的闪存数据交换终端的示意图;
20.图3为本发明实施例的一种基于单片机的闪存数据交换方法的时序图;
21.图4为本发明实施例的一种基于单片机的闪存数据交换方法的交换扇区划分图;
22.图5为本发明实施例的一种基于单片机的闪存数据交换方法的交换扇区失效图;
23.标号说明:
24.1、一种基于单片机的闪存数据交换终端;2、存储器;3、处理器。
具体实施方式
25.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
26.请参照图1和图3,本发明实施例提供了一种基于单片机的闪存数据交换方法,包括步骤:
27.在闪存中设置数据扇区、临时缓存空间和交换扇区,所述数据扇区的大小与所述交换扇区的大小相同,所述临时缓存空间的大小小于内存页的大小;
28.擦除所述交换扇区,将所述数据扇区中的数据通过所述临时缓存空间写入所述交换扇区中;
29.擦除所述数据扇区,将所述交换扇区中的数据通过所述临时缓存空间写回所述数据扇区中,并在所述临时缓存空间中进行数据更新。
30.从上述描述可知,本发明的有益效果在于:在闪存中设置数据扇区、临时缓存空间和交换扇区,其中数据扇区与交换扇区的扇区大小相同,临时缓存空间的大小小于内存页的大小,因此减少缓存空间即减少更新闪存扇区时的内存占用。在数据交换时,先擦除交换扇区,将数据扇区中的数据通过临时缓存空间写入交换扇区;再擦除数据扇区,将交换扇区
中的数据在临时缓存空间更新后再写回数据扇区。因此在临时缓存空间进行数据更新,不需要每次更新都擦除整个扇区的内容,减少闪存磨损程度。
31.进一步地,所述将所述数据扇区中的数据通过所述临时缓存空间写入所述交换扇区中包括:
32.从所述数据扇区的首地址依次读取所述临时缓存空间大小的数据,存储至所述临时缓存空间,并将所述临时缓存空间的数据写入所述交换扇区中,直至所述数据扇区中的数据全部写入所述交换扇区。
33.由上述描述可知,依次将数据扇区中临时缓存大小的数据存储至临时缓存空间并进一步转存至交换扇区中,相较于现有技术中申请扇区大小的字节进行缓存,能够较少数据交换时占用的内存。
34.进一步地,将所述交换扇区中的数据通过所述临时缓存空间写回所述数据扇区中,并在所述临时缓存空间中进行数据更新包括:
35.从所述交换扇区的首地址依次读取所述临时缓存空间大小的数据,存储至所述临时缓存空间;
36.判断数据是否需要更新,若是,则在所述临时缓存空间中对待更新的数据进行替换;
37.将所述临时缓存空间的数据写回所述数据扇区中,直至所述交换扇区中的数据全部写回所述数据扇区。
38.由上述描述可知,在将交换扇区中的数据写回数据扇区的过程中,若转移的数据需要更新,则在临时缓存空间对待更新的数据进行替换,因此批量更新数据时不需要在每次更新时都擦除一次扇区,减少闪存的磨损程度。
39.进一步地,所述在闪存中设置交换扇区之后包括:
40.将所述交换扇区规划为多个交换子扇区,循环使用每一个所述交换子扇区进行数据交换。
41.由上述描述可知,将交换扇区规划为多个交换子扇区,循环使用交换子扇区进行数据交换,能够使每一个交换子扇区的使用次数相近,避免过度使用同一个子扇区,提高扇区整体的使用时间。
42.进一步地,所述循环使用每一个所述交换子扇区进行数据交换包括:
43.判断每一个所述交换子扇区的擦写次数是否超过预设次数,若是,则不再循环所述交换子扇区。
44.由上述描述可知,擦写次数超过预设次数的交换子扇区不再循环使用,能够有效避免扇区异常导致数据丢失的情况。
45.请参照图2,本发明另一实施例提供了一种基于单片机的闪存数据交换终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
46.在闪存中设置数据扇区、临时缓存空间和交换扇区,所述数据扇区的大小与所述交换扇区的大小相同,所述临时缓存空间的大小小于内存页的大小;
47.擦除所述交换扇区,将所述数据扇区中的数据通过所述临时缓存空间写入所述交换扇区中;
48.擦除所述数据扇区,将所述交换扇区中的数据通过所述临时缓存空间写回所述数据扇区中,并在所述临时缓存空间中进行数据更新。
49.由上述描述可知,在闪存中设置数据扇区、临时缓存空间和交换扇区,其中数据扇区与交换扇区的扇区大小相同,临时缓存空间的大小小于内存页的大小,因此减少缓存空间即减少更新闪存扇区时的内存占用。在数据交换时,先擦除交换扇区,将数据扇区中的数据通过临时缓存空间写入交换扇区;再擦除数据扇区,将交换扇区中的数据在临时缓存空间更新后再写回数据扇区。因此在临时缓存空间进行数据更新,不需要每次更新都擦除整个扇区的内容,减少闪存磨损程度。
50.进一步地,所述将所述数据扇区中的数据通过所述临时缓存空间写入所述交换扇区中包括:
51.从所述数据扇区的首地址依次读取所述临时缓存空间大小的数据,存储至所述临时缓存空间,并将所述临时缓存空间的数据写入所述交换扇区中,直至所述数据扇区中的数据全部写入所述交换扇区。
52.由上述描述可知,依次将数据扇区中临时缓存大小的数据存储至临时缓存空间并进一步转存至交换扇区中,相较于现有技术中申请扇区大小的字节进行缓存,能够较少数据交换时占用的内存。
53.进一步地,将所述交换扇区中的数据通过所述临时缓存空间写回所述数据扇区中,并在所述临时缓存空间中进行数据更新包括:
54.从所述交换扇区的首地址依次读取所述临时缓存空间大小的数据,存储至所述临时缓存空间;
55.判断数据是否需要更新,若是,则在所述临时缓存空间中对待更新的数据进行替换;
56.将所述临时缓存空间的数据写回所述数据扇区中,直至所述交换扇区中的数据全部写回所述数据扇区。
57.由上述描述可知,在将交换扇区中的数据写回数据扇区的过程中,若转移的数据需要更新,则在临时缓存空间对待更新的数据进行替换,因此批量更新数据时不需要在每次更新时都擦除一次扇区,减少闪存的磨损程度。
58.进一步地,所述在闪存中设置交换扇区之后包括:
59.将所述交换扇区规划为多个交换子扇区,循环使用每一个所述交换子扇区进行数据交换。
60.由上述描述可知,将交换扇区规划为多个交换子扇区,循环使用交换子扇区进行数据交换,能够使每一个交换子扇区的使用次数相近,避免过度使用同一个子扇区,提高扇区整体的使用时间。
61.进一步地,所述循环使用每一个所述交换子扇区进行数据交换包括:
62.判断每一个所述交换子扇区的擦写次数是否超过预设次数,若是,则不再循环所述交换子扇区。
63.由上述描述可知,擦写次数超过预设次数的交换子扇区不再循环使用,能够有效避免扇区异常导致数据丢失的情况。
64.本发明上述的一种基于单片机的闪存数据交换方法及终端,适用于在所有类型的
外部flash芯片或者单片机内部flash上进行磨损均衡的数据交换技术,可以降低对单片机芯片、flash芯片的选型要求,有效降低成本,并且能够进一步减少更新闪存扇区时的内存占用并减少闪存磨损程度,以下通过具体的实施方式进行说明:
65.实施例一
66.请参照图1和图3,一种基于单片机的闪存数据交换方法,包括步骤:
67.s1、在闪存中设置数据扇区、临时缓存空间和交换扇区,所述数据扇区的大小与所述交换扇区的大小相同,所述临时缓存空间的大小小于内存页的大小。
68.具体的,在本实施例中,数据交换前需规划扇区的使用,固定拿一个扇区当做交换扇区,这个交换扇区不作为实际数据存储。
69.请参照图3,以常见的外部flash芯片w25q128bv为例,扇区大小为4096byte,可以开辟一个64byte的缓存空间作为交换用的临时缓存空间,用于数据的搬运。其中临时缓存空间的大小可根据需求确定,且临时缓存空间的大小会影响交换的速率。
70.s2、擦除所述交换扇区,将所述数据扇区中的数据通过所述临时缓存空间写入所述交换扇区中。
71.在步骤s2中包括:
72.从所述数据扇区的首地址依次读取所述临时缓存空间大小的数据,存储至所述临时缓存空间,并将所述临时缓存空间的数据写入所述交换扇区中,直至所述数据扇区中的数据全部写入所述交换扇区。
73.s21、擦除交换扇区。清空上次交换残留的数据,避免临时存放的数据异常。
74.s22、数据保存。按照顺序从当前数据扇区的首地址开始读取缓存空间大小的数据并写入交换扇区中,直到全部数据保存完成。
75.具体的,在本实施例中通过临时缓存空间进行数据搬运,将数据扇区的内容转移到交换扇区中,实现原始数据的备份。
76.s3、擦除所述数据扇区,将所述交换扇区中的数据通过所述临时缓存空间写回所述数据扇区中,并在所述临时缓存空间中进行数据更新。
77.在步骤s3中包括:
78.从所述交换扇区的首地址依次读取所述临时缓存空间大小的数据,存储至所述临时缓存空间;判断数据是否需要更新,若是,则在所述临时缓存空间中对待更新的数据进行替换;将所述临时缓存空间的数据写回所述数据扇区中,直至所述交换扇区中的数据全部写回所述数据扇区。
79.s31、擦除数据扇区,清空原始数据。
80.s32、数据重新写入。按照顺序从交换扇区首地址开始读取缓存空间大小的数据写入目标数据扇区中,期间在遇到需要更新数据的地址时,将要修改的数据在临时缓存空间中进行替换后再写回目标数据扇区。
81.实施例二
82.请参照图4和图5,本实施例与实施例一的不同之处在于,进一步限定了交换扇区的规划和使用,具体的:
83.将所述交换扇区规划为多个交换子扇区,循环使用每一个所述交换子扇区进行数据交换;判断每一个所述交换子扇区的擦写次数是否超过预设次数,若是,则不再循环所述
交换子扇区。
84.在本实施例中,由于每个扇区有擦除次数上限,如果长时间使用数据交换技术,可能会超过扇区的擦除次数上限,会使得无法正常交换数据最终导致数据丢失,这时就需加入磨损均衡方案。
85.本实施例中选用周期性算法作为磨损均衡方案,其原理为在一个周期内每个交换扇区使用次数相等,避免过度使用同一个扇区。
86.具体的,请参照图4,将原先选择一个交换扇区优化为规划n个交换子扇区当作交换区域,具体的规划方法可以根据实际需求、数据更新频率以及产品使用年限等考虑。采用周期性算法,按照交换子扇区1、交换子扇区2、
……
、交换子扇区n、交换子扇区1
……
循环使用,有效避免单个扇区过度使用。
87.请参照图5,如果其中一个交换子扇区无法正常执行擦除,则认为该交换扇区超过擦除次数,并将其剔除到循环队列外,剩余扇区继续按照周期使用。这样将有效避免某个扇区异常时导致数据丢失。
88.在其他等同实施例中,也可以采用随机性算法,即每次随机选取多个子扇区作为交换扇区,采用随机选取,使得每一个子扇区作为交换扇区的概率相等,因此在使用过程中,从概率上来说,每个交换扇区的使用次数会相等,避免过度使用同一个扇区。
89.以下通过具体的应用场景进行说明:
90.假设某传感器产品需要每分钟保存一组电压电流值,电压(4byte),电流(4byte),统计周期为1年,则所需要的存储空间为:(4 4)*60*24*366=4216320byte。
91.以外部flash芯片w25q128bv为例,每页是256byte,每个扇区是4096byte。因此,4216320/256=16470页,约等于1030个扇区,固定规划序号为1-1030扇区为数据扇区,存储该电压电流设备。
92.当周期轮询完后,进入第二年记录时,每次记录的分钟数据,就需覆盖原有数据,因此进行交换扇区个数的规划:
93.按照该产品的需求每年擦写的次数为1*60*24*366=527040约等于53万次;电子产品使用寿命5~10年,我们按最长使用年限来算,即527040*(10-1)=4743360约等于475万次,预留部分余量500万次=50个扇区。
94.即在1分钟一组数据的高频场景,并且存储周期为一年,使用年限10年的情况下,也只需50个扇区备份区域就能对1030个扇区的数据区域进行数据交换。
95.因此,使用磨损均衡的数据交换技术可以兼容所有类型的外部flash芯片或者单片机内部flash,降低对单片机芯片、flash芯片的选型要求,有效降低成本。
96.实施例三
97.请参照图2,一种基于单片机的闪存数据交换终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一或实施例二的一种基于单片机的闪存数据交换方法的各个步骤。
98.综上所述,本发明提供的一种基于单片机的闪存数据交换方法及终端,在闪存中设置数据扇区、临时缓存空间和交换扇区,其中数据扇区与交换扇区的扇区大小相同,临时缓存空间的大小小于内存页的大小,因此减少缓存空间即减少更新闪存扇区时的内存占用。在数据交换时,先擦除交换扇区,将数据扇区中的数据通过临时缓存空间写入交换扇
区,其中,依次将数据扇区中临时缓存大小的数据存储至临时缓存空间并进一步转存至交换扇区中,相较于现有技术中申请扇区大小的字节进行缓存,能够较少数据交换时占用的内存;再擦除数据扇区,将交换扇区中的数据在临时缓存空间更新后再写入数据扇区,若转移的数据需要更新,则在临时缓存空间对待更新的数据进行替换,因此批量更新数据时不需要在每次更新时都擦除一次扇区,减少闪存的磨损程度。因此在临时缓存空间进行数据更新,不需要每次更新都擦除整个扇区的内容,减少闪存磨损程度。
99.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

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

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

相关文献