平码五不中公式规律
  • / 11
  • 下载费用:30 金币  

一种基于MCU的FLASH不丢失更新存储方法.pdf

关 键 ?#21097;?/dt>
一种 基于 MCU FLASH 丢失 更新 存储 方法
  专利查询网所有?#35797;?#22343;是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201410146020.X

申请日:

2014.04.11

公开号:

CN103914393A

公开日:

2014.07.09

当前法律状态:

授权

有效性:

有权

法?#19978;?#24773;: 授权|||实质审查的生效IPC(主分类):G06F 12/02申请日:20140411|||公开
IPC分类号: G06F12/02; G06F12/16 主分类号: G06F12/02
申请人: 四川华拓光通信股份有限公司
发明人: 范巍; 陈气超
地址: 621000 四川省绵阳市金家林总部经济试验区
优?#28909;ǎ?/td>
专利代理机构: 北京远大卓悦知识产权代理事务所(普通合伙) 11369 代理人: 史霞
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201410146020.X

授权公告号:

||||||

法律状态公告日:

2017.01.11|||2014.08.06|||2014.07.09

法律状态类型:

授权|||实质审查的生效|||公开

摘要

本发明公开了一种基于MCU的FLASH不丢失更新存储方法,通过将同一数据分别存储在FLASH的主存储区和备份存储区,在更新数据时先擦除并更新主存储区,然后更新擦除备份存储区。如果在擦除主存储区时发生掉电等异常情况,导致MCU的RAM和FLASH主存储区数据丢失,则备份存储区不受影响,数据完整,保持更新前的值,如果在擦除备份存储区时发生掉电等异常情况,导致MCU的RAM和FLASH备份存储区数据丢失,则主存储区不受影响,数据完整,保持更新后的值。因?#22235;?#22312;发生意外的情况下保持数据的完整性,保证光模块的正常运行。

权利要求书

权利要求书
1.  一种基于MCU的FLASH不丢失更新存储方法,其特征在于包括以下步骤:
步骤一、将MCU的FLASH划分为主存储区和备份存储区,所述主存储区具有多个对应页,且所述备份存储区具有等数的相应对应页,将待存储的数据的所有?#32440;?#20381;次分别存储到所述主存储区的一个对应页和所述备份储存区的相应对应页,并且在主存储区的该对应页存储完所述数据的最后一个?#32440;?#26102;,添加一个预定的有效性鉴别标志;
步骤二、更新主存储区的对应页上的数据时,MCU读出该对应页上的数据至MCU的RAM中并更新待修改的?#32440;冢?#28982;后MCU擦除中主存储区中该对应页上存储的数据,然后将RAM中更新后的数据的所有?#32440;?#20381;次写入主存储区中该对应页上;
如果写完最后一个?#32440;?#26102;,则在主存储区中该对应页上再写入该预定的有效性鉴别标志数据,之后MCU擦除备份存储区的相应对应页上的数据,再将RAM中更新后的数据的所有?#32440;?#20381;次写入备份储区中该对应页上,如果写完最后一个?#32440;?#26102;,则再写入该预定的有效性鉴别标志数据;
如果未写完所有?#32440;冢?#21017;不在主存储区中该对应页上写入该预定的有效性鉴别标志数据;
步骤三、MCU执行上电初始化操作,即MCU检测主存储区的对应页上是否存在所述预定的有效性鉴别标志,如果存在,MCU将读取主存储区的该对应页上存储的数据至RAM,然后删除备份存储区数据,再将RAM内数据写入备份存储区;如果不存在,则MCU读出备份储存区的相应对应页上存储的数据至RAM,然后删除主存储区上的数据,再将RAM内的数据写入到相应的主存储区的对应页上。

2.  如权利要求1所述的基于MCU的FLASH不丢失更新存储方法,其特 征在于,在所述步骤三中,如果不存在,则显示数据未更新成功。

3.  如权利要求1所述的基于MCU的FLASH不丢失更新存储方法,其特征在于,所述预定的有效性鉴别标志写入在对应页的特定位置处,所述MCU至所述特定位置处查找所述预定的有效性鉴别标志是否存在。

4.  如权利要求3所述的基于MCU的FLASH不丢失更新存储方法,其特征在于,所述特定位置为对应页末端的最后4个?#32440;?#20301;置。

5.  如权利要求4所述的基于MCU的FLASH不丢失更新存储方法,其特征在于,所述预定的有效性鉴别标志为非0X00和非0XFF的特定数据。

6.  根据权利要求1所述的基于MCU的FLASH不丢失更新存储方法,其特征在于,所述主存储区和备份存储区的划分方式为:在MCU中程序代码需要?#21152;?#37096;分FLASH?#21344;洌?#21097;余部分可作为数据储存区域模拟EEPROM,主存储区和对应的备份存储区大小一致,且以MCU一页数据大小为基?#38236;?#20301;,最小为一个单位及一页数据的主存储区和一页数据的备份存储区,主存储区和备份存储区的起始地址可以在非程序代码区域?#25105;?#25351;定,主存储区和备份存储区不能有重复区域,该起始地址一经指定即固化于程序代码中不可更?#27169;?#31243;序代码通过?#21015;?#23545;应的起始地址以区?#31181;?#23384;储区和备份存储区。

7.  根据权利要求1所述的基于MCU的FLASH不丢失更新存储方法,其特征在于,所述步骤三发生异常情况包括:删除主存储区对应页数据后,或者在写入对应页数据且未写入有效性鉴别标志数据前发生异常情况导致数据丢失后,此时进行的步骤二具体方式为:在系统上电初始化时MCU检测主存储区的有效性鉴别标志是否存在,由于有效性鉴别标志被删除,MCU?#36828;?#35835;取备份储存区对应页数据至RAM中并将RAM内数据写入到主储存区对应页,此?#21271;?#23384;的数据为更新前数据;
?#24065;?#24120;情况为主存储区更新完毕,MCU删除备份存储区对应页数据或者在将RAM内数据写入至备份存储区对应页且未完成时候发生异常情况导致数据丢失,此时进行的步骤二具体方式为:在系统上电初始化时MCU检测主存储区 的有效性鉴别标志是否存在,检测为存在,MCU?#36828;?#35835;取主储存区对应页数据至RAM中并将RAM内数据写入到备份储存区对应页此?#21271;?#23384;的数据为更新后数据。

说明书

说明书一种基于MCU的FLASH不丢失更新存储方法
技术领域
本发明涉及光模块数据储存领域,尤其涉及一种基于MCU的FLASH不丢失更新存储方法。 
背景技术
在光模块中需要EEPROM存储?#21344;?#20197;便存储模块本身的特性参数和用户或厂商的识别信息,其中用户或厂商信息可能由用户改写。光模块在使用中需要确保其参数的正确性,因此对光模块的任何EEPROM信息改写不能造成信息的错误。当前,由于EEPROM,写入时间很长,写入很慢,EEPROM不能用来存程序,通常单片机的指令寻址不能到这个区域,因此现在EEPROM只在低端设备上使用。大部分光模块均使用FLASH代替EEPROM作为存储?#21344;洌現LASH对芯片提供大块或整块的擦除,这就?#26723;?#20102;设计的复?#26377;裕?#23427;可以不要EEPROM单元里那个多余的Tansister,所以可以做到高集成度,大容量,另FLASH的浮栅工艺上也不同,写入速度更快。 
光通信用光收发模块中使用FLASH作为存储?#21344;洌琈CU需要模拟EEPROM功能,主机能够通过I2C接口对FLASH进行?#21015;?#25805;作,并要求能够实?#20013;?#20837;后即能保存功能。当需要进行更新时,模块内部MCU会读出当前?#32440;?#23545;应页的内容,并将对应?#32440;?#26356;?#27169;?#28982;后擦除对应FLASH页,再将RAM中对应内容写入FLASH页,至此完成整个动作。如果在模块擦除FLASH页的时候模块掉电或者被用户拔出则会造成当前FLASH页的数据丢失,影响模块性能。 
如图1所示为现有的基于MCU的FLASH更新储存方法的基本流程方法。该方法主要有读出对应页数据至MCU的RAM中并更新对应?#32440;冢?#25830;除MCU对 应页,将对应RAM数据写入对应?#25345;?#20960;大步骤。由于MCU的FLASH擦除以页为最小单位,因此在更新某一个或者几个FLASH地址的值时,需要先将整页的FLASH数据读出至RAM中并修改需要更新的?#32440;冢?#28982;后擦除当前页,在将当RAM内更新后的页的数据写入至FLASH中,完成FLASH更新操作。 
在现有技术的下,因插拔皆有人为操作,无法判定模块中的FLASH中的数据是否更新完成,因此在某一时刻拔下模块(具有随机性和不?#33539;?#24615;当前是否有数据写入),如果模块内的MCU正在进行FLASH更新操作,则会出现以下情况:MCU将FLASH数据已经读出至RAM中,MCU已经将对应FLASH擦除,此时MCU掉电,MCU中的RAM数据丢失,FLASH数据丢失。当模块再次上电时将无法从对应FLASH地址读出正确的数据,这将造成该模块无法正常使用。 
发明内容
本发明针对现有技术的弊端,针对上述问题,提供一种基于MCU的FLASH不丢失更新存储方法,本发明通过将储存器分为主储存区和备份储存区,数据同时存入主储存区和备份储存区,在更新数据时先擦除并更新主存储区,然后更新擦除备份存储区。如果在擦除主存储区时掉电,则备份存储区不受影响,数据完整,保持更新前的值,如果在擦除备份存储区时掉电,则主存储区不受影响,保持更新后的值,因此可保证FLASH数据任何时候不丢失,模块能正常运行。并且通过增设一种简明的鉴别机制及在主储存区每页末尾写入一定长度的?#32440;?#25968;作为本页有效性鉴别标志。当上电才初始化时,MCU对有效性鉴别标志进?#20449;?#26029;,如果存在,说明更新成功,MCU复制主存储区数据至备份存储区;若有效性鉴别标志不存在,说明更新不成功,MCU复制备份存储区数据?#26519;?#23384;储区,保证数据的完整性。 
本发明的技术方案为: 
一种基于MCU的FLASH不丢失更新存储方法,其中包括以下步骤: 
步骤一、将MCU的FLASH划分为主存储区和备份存储区,所述主存储区 具有多个对应页,且所述备份存储区具有等数的相应对应页,将待存储的数据的所有?#32440;?#20381;次分别存储到所述主存储区的一个对应页和所述备份储存区的相应对应页,并且在主存储区的该对应页存储完所述数据的最后一个?#32440;?#26102;,添加一个预定的有效性鉴别标志; 
步骤二、更新主存储区的对应页上的数据时,MCU读出该对应页上的数据至MCU的RAM中并更新待修改的?#32440;冢?#28982;后MCU擦除中主存储区中该对应页上存储的数据,然后将RAM中更新后的数据的所有?#32440;?#20381;次写入主存储区中该对应页上, 
如果写完最后一个?#32440;?#26102;,则在主存储区中该对应页上再写入该预定的有效性鉴别标志数据,之后MCU擦除备份存储区的相应对应页上的数据,再将RAM中更新后的数据的所有?#32440;?#20381;次写入备份储区中该对应页上,如果写完最后一个?#32440;?#26102;,则再写入该预定的有效性鉴别标志数据; 
如果未写完所有?#32440;冢?#21017;不在主存储区中该对应页上写入该预定的有效性鉴别标志数据; 
步骤三、MCU执行上电初始化操作,即MCU检测主存储区的对应页上是否存在所述预定的有效性鉴别标志,如果存在,MCU将读取主存储区的该对应页上存储的数据至RAM,然后删除备份存储区数据,再将RAM内数据写入备份存储区;如果不存在,则MCU读出备份储存区的相应对应页上存储的数据至RAM,然后删除主存储区上的数据,再将RAM内的数据写入到相应的主存储区的对应页上。 
优选的所述的基于MCU的FLASH不丢失更新存储方法,其中,在所述步骤三中,如果不存在,则显示数据未更新成功。 
优选的所述的基于MCU的FLASH不丢失更新存储方法,其中,所述预定的有效性鉴别标志写入在对应页的特定位置处,所述MCU至所述特定位置处查找所述预定的有效性鉴别标志是否存在。 
优选的所述的基于MCU的FLASH不丢失更新存储方法,其中,所述特定 位置为对应页末端的最后4个?#32440;?#20301;置。 
优选的所述的基于MCU的FLASH不丢失更新存储方法,其中,所述预定的有效性鉴别标志为非0X00和非0XFF的特定数据。 
优选的所述的基于MCU的FLASH不丢失更新存储方法,所述主存储区和备份存储区的划分方式为:在MCU中程序代码需要?#21152;?#37096;分FLASH?#21344;洌?#21097;余部分可作为数据储存区域模拟EEPROM,主存储区和对应的备份存储区大小一致,且以MCU一页数据大小为基?#38236;?#20301;,最小为一个单位及一页数据的主存储区和一页数据的备份存储区,主存储区和备份存储区的起始地址可以在非程序代码区域?#25105;?#25351;定,主存储区和备份存储区不能有重复区域,该起始地址一经指定即固化于程序代码中不可更?#27169;?#31243;序代码通过?#21015;?#23545;应的起始地址以区?#31181;?#23384;储区和备份存储区。 
优选的所述的基于MCU的FLASH不丢失更新存储方法,所述步骤三发生异常情况包括:删除主存储区对应页数据后,或者在写入对应页数据且未写入有效性鉴别标志数据前发生异常情况导致数据丢失后,此时进行的步骤二具体方式为:在系统上电初始化时MCU检测主存储区的有效性鉴别标志是否存在,由于有效性鉴别标志被删除,MCU?#36828;?#35835;取备份储存区对应页数据至RAM中并将RAM内数据写入到主储存区对应页,此?#21271;?#23384;的数据为更新前数据; 
?#24065;?#24120;情况为主存储区更新完毕,MCU删除备份存储区对应页数据或者在将RAM内数据写入至备份存储区对应页且未完成时候发生异常情况导致数据丢失,此时进行的步骤二具体方式为:在系统上电初始化时MCU检测主存储区的有效性鉴别标志是否存在,检测为存在,MCU?#36828;?#35835;取主储存区对应页数据至RAM中并将RAM内数据写入到备份储存区对应页此?#21271;?#23384;的数据为更新后数据。 
本发明具有以下有益效果:本发明通过将储存器分为主储存区和备份储存区,数据同时存入主储存区和备份储存区,在更新数据时先擦除并更新主存储区,然后更新擦除备份存储区。如果在更新主存储区时掉电等异常情况, 则备份存储区不受影响,数据完整,保持更新前的值,如果在更新备份存储区时掉电等异常情况,则主存储区不受影响,保持更新后的值,因此可保证FLASH数据任何时候不丢失,模块能正常运行。并且通过增设一种简明的鉴别机制以鉴别主储存区和备份存储区的数据有效性,当及在主储存区每页末尾写入一定长度的?#32440;?#25968;作为本页有效性鉴别标志,在页擦除?#22791;?#26377;效性鉴别标志数据被擦除,在写入数据时先写入用户数据,最后写入有效性鉴别标志数据,如果上电初始化时候,有效性鉴别标志判定为有效,则可以证明用户数据更新成功,如果有效性鉴别标志判定为无效,则MCU会复制备份存储区数据?#26519;?#23384;储区,保证数据的完整。 
附图说明:
图1现有基于MCU的FLASH更新储存方法 
图2一种基于MCU的FLASH不丢失更新存储方法 
图3一种基于MCU的FLASH不丢失更新存储方法的上电初始化 
图4一种基于MCU的FLASH不丢失更新存储方法的数据更新方法 
图5FLASH主存储区和备份存储区的设定和区分 
具体实施方式:
下面结合附图2-5对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。 
如图5所示,在MCU中程序代码需要?#21152;?#37096;分FLASH?#21344;洌?#21097;余部分可作为数据储存区域模拟EEPROM。图5给出了主存储区和备份存储区的设定和区分方法。主存储区和对应的备份存储区大小应该一致,且以MCU一页数据大小为基?#38236;?#20301;,最小为一个单位及一页数据的主存储区和一页数据的备份存储区。主存储区和备份存储区的起始地址可以在非程序代码区域?#25105;?#25351;定,但主存储区和备份存储区不能有重复区域,该起始地址一经指定即固化于程序代码中不可更?#27169;?#31243;序代码通过?#21015;?#23545;应的起始地址以区?#31181;?#23384;储区和备份存储区。将主存储区域每页的末端4个?#32440;?#20316;为数据有效性的标 志位,对应的备份存储区每页末端4个?#32440;?#25968;据为保留数据(由于算法保障此处作为数据有效性已无?#23548;?#24847;义)。数据有效性标志以非0X00和0XFF的特定数据作为标志代码固化于程序代码中并且不可更?#27169;?#22914;{0xaa,0x55,0xaa,0x55})。 
如图2所示,一般情况下一种基于MCU的FLASH不丢失更新存储方法,包括开始,上电初始化,更新FLASH,结束这几步。其具体的原理如图4所示,将MCU的FLASH划分为主存储区和备份存储区,同一数据分别存储到主存储区和备份储存区的对应页,其中,在主存储区对应页页末地址,提供一定长度的?#32440;?#25968;如非0XFF和非0X00作为本页有效性鉴别标志。 
更新存储数据时,主机读出MCU中flash主存储区需更新存储对应页数据至MCU的RAM中并更新对应?#32440;冢?#28982;后擦除MCU中flash主存储区对应页数据,此时由于FLASH自身设计,擦除后主存储区中的有效性鉴别标志数据将变为0XFF或者0X00数据,然后将RAM内更新后的对应数据写入flash主存储区对应页,然后在页末地址写入有效性鉴别标志非0XFF和非0X00数据;若一切正常时擦除flash备份储存区对应页数据,将对应RAM数据写入flash备份存储区对应页,有效性鉴别标志作为保留数据写入末页地址。 
当MCU对FLASH主存储区进行擦除数据后或者将RAM数据写入主储存区时,如果此时发生掉电等异常情况,RAM内数据将会丢失,此时擦除的MCU中flash主存储区对应页数据丢失,页末的有效性鉴别标志非0XFF和非0X00数据被擦除,变为OXFF或者OX00,MCU判定主存储区数据为无效;如果将有效性鉴别标志写入主存储区时发生掉电等异常情况,则RAM内数据将会丢失,页末的有效性鉴别标志由于还未写入,仍然为OXFF或者OX00,MCU判定主存储区数据为无效;如图3所示在系统上电初始化时MCU对主存储区对应页有效性进?#20449;?#26029;,由于有效性鉴别标志不存在,有效性判断为无效,MCU?#36828;?#22797;制备份储存区对应页数据至RAM内并将RAM内数据写入到主储存区对应页,从而保证上电后主储存区和备份储存区的数据一致性,避免读取FLASH数据 时对主储存区和备份储存区的区别,此?#21271;?#23384;的数据为更新前数据。 
当在擦除flash备份储存区对应页数据后发生掉电等异常情况,RAM内数据丢失,flash备份储存区对应页数据丢失;如图3所示在系统上电初始化时MCU对主存储区有效性进?#20449;?#26029;,由于有效性鉴别标志不存在,有效性判断为有效,MCU?#36828;?#22797;制主储存区对应页数据到RAM内并从RAM内写入到备份储存区对应页,从而保证上电后主储存区和备份储存区的数据一致性,避免读取FLASH数据时对主储存区和备份储存区的区别,此?#21271;?#23384;的数据为更新后数据。 
实施例:当进行上电初始化时候,如下代码所示,宏定义的主存储区开始地址为XFP_A0_TAB1_ROM,有效性鉴别数据校验?#32440;?#21306;域为XFP_A0_TAB1_ROM宏定义的主存储区开始地址偏移0x1fb,有效性鉴别标志数据为0xaa,0x55,0xaa,0x55,如下代码所示: 

在MCU上电初始化中读取XFP_A0_TAB1_ROM宏定义的主存储区开始地址偏移0x1fb即校验?#32440;?#21306;域(该?#23548;?#24212;用MCU的页大小为512?#32440;冢?#26411;端4?#32440;?#20026;有效性鉴别特定数据,有效数据区域使用了256?#32440;冢?#21097;余252?#32440;?#26410;使用)如果校验特定数据为指定的0xaa,0x55,0xaa,0x55则使用主存储区数据,否则则使用备份存储区数据地址。 
当FLASH数据更新时,如下代码所示: 
flash_erase(XFP_A0_TAB1_ROM); 
flash_write_128word_continu(XFP_A0_TAB1_ROM,A0h_TAB[1],1); 
flash_write_128word_continu(XFP_A0_TAB2_ROM,A0h_TAB[2],1); 
flash_write_word(XFP_A0_TAB1_ROM+0X1FB,0xaa55aa55); 
flash_erase(XFP_A0_TAB1_ROM_BACKUP); 
flash_write_128word_continu(XFP_A0_TAB1_ROM,A0h_TAB[1],1); 
flash_write_128word_continu(XFP_A0_TAB2_ROM,A0h_TAB[2],1); 
示例中程序先擦除XFP_A0_TAB1_ROM宏定义指向的页数据,此时校验地址有效性鉴别特定数据变为{0xff,0xff,0xff,0xff},然后在写入RAM数据到指定区域,最后写入有效性鉴别数据{0xaa,0x55,0xaa,0x55}在有效性鉴别数据写入完成前的任?#25105;?#24120;导致程序不能运行都不会使得有效性鉴别数据正确,并?#20918;?#20221;存储区未被擦除,数据完整。 
当在具体使用的过程中,每一次对FLASH存储页进行更新时候,都需要对需要更新页进行上电初始化,确保数据在更新之前主储存区与备份存储区数据的完整性。 
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实?#33267;?#22806;的修?#27169;?#22240;此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的?#38468;?#21644;这里示出与描述的图例。 

关于本文
本文标题:一种基于MCU的FLASH不丢失更新存储方法.pdf
链接地址:http://www.pqiex.tw/p-6115848.html
关于我们 - 网站声明 - 网站地图 - ?#35797;?#22320;图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 免费股票推荐微信群 我爱玩棋牌 斗地主 组三奖金重庆时时彩 腾讯分分彩走势图助手 新疆十一选五投注表 广东11选5 注册福利彩票高频彩 云南十一选五前三走势图 宁夏11选5开奖直播 江西多乐彩基本走势图