减少flash擦除次数的方法_3

文档序号:8498652阅读:来源:国知局
数据和对页面数据的处理方法。如图6所示,根据上电时每个页面的页面状态标识,该处理方法包括:
[0091]步骤S601:读取FLASH存储空间的两个页面的页面状态标识。
[0092]在上电时,首先读取FLASH存储空间的两个页面的页面状态标识,以判断在掉电时页面的状态,根据掉电时页面的状态进行有效数据的初始化,以防止数据丢失和无效数据的重复。
[0093]步骤S602:根据页面状态标识判断掉电时的页面状态,确定有效数据,并进行上电时页面的初始化操作。
[0094]当页面状态标识为“OxFF”,表示该页为空;“0xFE”,表示该页是记录页;“0处0”,表示该页为参数页;“0x00”,表示正把该页的参数数据备份到另一页;“0xFC”,表示正在往该页上备份参数数据。当上电时,根据两个页面的操作,两个页面的状态可以分为以下几种情况:
[0095]A、两个页面的状态标识都为“OxFF”,该状态表示掉电时两个页面都为空,还没有进行参数设置和数据写入,此时进行步骤S603 ;
[0096]B、其中一个页面的状态标识为“0x00”,另一个页面状态标识为“OxFC”。该状态表示掉电时,一个页面正在向第二个页面备份,且备份并未完成,此时标识为“0x00”的页面的数据为有效数据,而另一个页面的数据由于未备份完成即掉电,所以为无效数据,需要重新进行掉电时的操作,即进行步骤S604 ;
[0097]C、其中一个页面的状态标识为“0x00”,另一个页面状态标识为“OxR)”。此状态表示掉电时,标识为“0x00”的页面的数据已经备份到另一个页面,另一个页面的数据有效,此时需要继续进行掉电时的操作,即进行步骤S605 ;
[0098]D、其中一个页面的状态标识为“OxFO”,另一个页面状态标识为“OxFE”。此状态表示掉电时,标识为“OxFO”的页面为参数页,标识为“OxFE”的页面为记录页,掉电时,两个页面并未进行页面交换的操作,两页的数据都为有效数据,此时进行步骤S606 ;
[0099]E、其中一个页面的状态标识为“0xF0”,另一个页面的状态标识为“OxFF”。该状态表示掉电时,一个页面为参数页,另一个页面为记录页且为空,掉电时,两个页面并未进行数据备份和页面交换的操作,参数页的数据有效,记录页可进行数据写入操作,此时进行步骤 S607。
[0100]步骤S603:设置两个页面分别为参数页和记录页,把参数设置为默认值写入参数页。
[0101]步骤S604:从页面状态标识为“0x00”的页面读取参数值和数据记录,擦除页面状态标识为“OxFC”的页面的数据记录,重新进行数据备份。
[0102]步骤S605:把页面状态标识为“0x00”的页面的数据擦除,并转换为记录页,把页面状态标识为“0处0”的页面作为参数页,从参数页读取数据。
[0103]步骤S606:两页的数据都有效,从页面状态标识为“OxFO”的页面读取参数值,从页面状态标识为“OxFE”的页面读取数据记录。
[0104]步骤S607:页面状态标识为“OxFO”的页面为参数页,页面状态标识为“OxFF”的页面为记录页,从参数页读取数据。
[0105]在本发明的算法中,记录页写满29条记录后,向参数页写入I条电能备份记录,然后擦除记录页,重新开始向记录页写入新的电能数据,也就是记录页的电能数据写入30次才进行一次记录页的数据擦除。当参数页满时,要进行一次页面交换,即每写入30*20 =600条记录要进行一次页面交换,在这个过程中,记录页擦除20次,参数页才擦除I次。也就是说,每写入600条数据记录,就擦除21次,对于FLASH擦写次数为9万次的MCU,两个页面的总擦写次数为9*2 = 18万次,擦写寿命为18* (600/21) = 514万次(不包含设置参数更改时进行的页面交换引起的擦写,但设置参数一般很少更改,本算法能够利用设置参数很少更改的特性,能够充分满足不断更改的数据记录的存储需求),超过了 24Cxx系列的EEPRom的100万次。可见,通过本算法,利用FLASH的存储空间有效的减少了擦写次数,延长了 FLASH的擦写寿命。并且本算法使用两个页面,通过进行数据备份和页面交换,也避免了掉电时擦写数据引起的数据丢失,能够很好的满足需要不断更改且需要掉电不丢失的数据存储需求,尤其是本实施例中的仪表中电能计量数据的保存。
[0106]以上所述的仅是本发明的一些实施方式。对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
【主权项】
1.减少FLASH擦除次数的方法,包括: A、在FLASH的存储空间分别设置参数页和记录页,各页面的存储空间包括多个存储单元; B、将要存储的数据记录依次写入所述记录页的空存储单元,直到所述记录页的数据记录存储量达到预设值; C、当所述参数页的数据记录存储量小于预设值时, 将要存储的数据记录依次写入所述参数页的空数据记录备份存储单元,并擦除所述记录页,返回步骤B ; 当所述参数页的数据记录存储量达到预设值时, 擦除所述参数页与所述记录页。
2.根据权利要求1所述的方法,其中,所述步骤A包括: 根据扇区、需要存储的参数和数据的量,设置页面的大小; 根据单条数据记录和所设置的页面的大小,将所述页面的空间分区为多个存储单元,每个存储单元对应存储一条数据记录; 把参数设置为默认值写入所述页面的对应存储单元,并设置该页面的页面状态标识为参数页标识; 把数据写入到另一个页面的对应存储单元,并设置该页面的页面状态标识为记录页标识。
3.根据权利要求2所述的方法,其中,所述页面的大小为512个字节,所述存储单元为32个,每个存储单元的大小为16个字节,每次写入的一条数据记录占用一个存储单元。
4.根据权利要求3所述的方法,其中,所述参数页的存储单元存储有状态标识、校准参数、设置参数及数据记录备份,所述状态标识占用一个存储单元,所述校准参数占用二个存储单元,所述设置参数占用八个存储单元,剩余存储单元用于存放所述数据记录备份;所述记录页的存储单元设置为存放状态标识和数据记录,所述状态标识占用一个存储单元,所述数据记录占用二十九个存储单元,剩余存储单元作为保留空间。
5.根据权利要求4所述的方法,其中,所述状态标识包括页面状态标识和存储单元使用状态标识,所述页面状态标识占用一个字节,所述存储单元使用状态标识占用四个字节,四个字节的三十二个位每一位对应标识一个存储单元的使用状态。
6.根据权利要求5所述的方法,其中所述页面状态标识包括:空页标识、记录页标识、参数页标识、正把该页的参数备份到另一页标识,和正在往该页上备份参数标识。
7.根据权利要求1所述的方法,其中,所述步骤B包括: 51、接收一条数据记录,根据所述记录页的记录状态标识判断是否有空存储单元,是则继续步骤S2,否则跳转至步骤S3 ; 52、向所述空存储单元中写入当前数据记录,跳转至步骤SI ; 所述步骤C包括: 53、根据所述参数页的记录状态标识判断是否有空的数据记录备份存储单元,是则进行步骤S4,否则跳转至步骤S6 ; 54、向所述参数页的空的数据记录备份存储单元中写入当前数据记录; 55、擦除所述记录页,跳转至步骤SI; S6、擦除所述参数页与所述记录页。
8.根据权利要求1所述的方法,其中,所述步骤C还包括: 当所述参数页的数据记录存储量达到预设值时,备份所述参数页的数据,交换所述参数页与所述记录页。
9.根据权利要求8所述的方法,其中,所述备份参数页的数据,交换参数页与记录页的方法包括: a、擦除所述记录页; b、将所述参数页的参数部分写入到所述记录页的对应存储单元,进行备份; C、更改所述记录页的页面状态标识为参数页标识; d、擦除所述参数页; e、更改所述参数页的页面状态标识为记录页标识。
10.根据权利要求8所述的方法,包括: 上电时首先读取FLASH存储空间的所述参数页和记录页的页面状态标识; 根据所述页面状态标识判断掉电时的页面状态,以确定页面的有效数据; 根据掉电时的页面状态和有效数据,对FLASH的所述参数页和记录页进行页面初始化操作。
【专利摘要】本发明公开一种减少FLASH擦除次数的方法,包括:A、在FLASH的存储空间分别设置参数页和记录页,各页面的存储空间包括多个存储单元;B、将要存储的数据记录依次写入所述记录页的空存储单元,直到所述记录页的数据记录存储量达到预设值;C、当参数页的数据记录存储量小于预设值时,将要存储的数据记录依次写入参数页的空数据记录备份存储单元,并擦除记录页,返回步骤B;当参数页的数据记录存储量达到预设值时,擦除所述参数页与所述记录页。本发明利用FLASH的存储空间减少闪存的擦写次数,提高FLASH的擦写寿命,和同时使用两个页面,以避免页面擦除时的数据丢失。
【IPC分类】G06F12-02, G06F12-16
【公开号】CN104820641
【申请号】CN201510181824
【发明人】朱环保, 王丽华, 王永军, 左彦波
【申请人】上海冉能自动化科技有限公司
【公开日】2015年8月5日
【申请日】2015年4月16日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1