CN108958978A - 一种mcu数据恢复方法和系统 - Google Patents
一种mcu数据恢复方法和系统 Download PDFInfo
- Publication number
- CN108958978A CN108958978A CN201810761684.5A CN201810761684A CN108958978A CN 108958978 A CN108958978 A CN 108958978A CN 201810761684 A CN201810761684 A CN 201810761684A CN 108958978 A CN108958978 A CN 108958978A
- Authority
- CN
- China
- Prior art keywords
- data
- status indicator
- main
- storage
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种MCU数据恢复方法和系统,方法包括:基于FLASH设置主存储区和备份存储区,主存储区包括M1个主存储单元,备份存储区包括M2个备份存储单元;赋予存储单元状态标识,将状态标识储存于指定的存储地址;主存储单元存储数据,当主存储区的存储状态符合阈值则将主存储单元存储的数据传输到备份存储单元,变更存储单元的状态标识;根据备份、主存储单元的状态标识将备份存储区的数据输出以实现数据恢复。系统用于执行对应方法。本发明基于存储单元的状态标识以确定存储单元存放状态,将状态标识储存于指定地点能够确定存储单元的状态,基于主、备份存储区的状态标识以执行备份数据的输出,保证备份数据的恢复。
Description
技术领域
本发明涉及计算机存储技术领域,尤其涉及一种MCU数据恢复方法和系统。
背景技术
随着产品的智能化发展,目前在家电类、消费类、工控类、汽车电子类等电子信息行业中的很多产品都需要能实现以下功能:产品再上电时要能自动恢复掉电前的工作状态、掉电前所设置的关键参数在再上电时继续有效、当产品出现工作异常时能实时保存产品的第一现场的参数值情况以便后期在产品维护升级时进行查看参考等功能。所有的这些产品功能都需要基于实现掉电数据记忆恢复的基本功能。
目前行业内的产品实现数据掉电记忆功能一般有两种方案:方案一是通过增加一颗专用存储芯片来实现,即增加EEPROM芯片来存储数据,此种方案会增加额外的物料成本;且由于EEPROM的读写速度较慢,最高读写时钟频率仅支持100khz,在一些掉电较快的场合可能还来不及在掉电前完成对全部数据的保存;另外,EEPROM一般为IIC通信接口需要占用掉主MCU的IO口资源等。方案二是,通过利用主MCU自身内部的flash来存储数据。现在几乎所有的MCU都会有把内部flash的操作接口提供给用户,便于用户使用内部空余flash来存储数据,但由于flash本身的特性导致用户每次在存储数据前必须先将flash整块擦除然后才能写入要保存的数据,因此会经常出现有时只需要存储几个数据却也需要将整个flash块进行擦除的情况,对flash块内字节的利用率不高且同时也会缩短了flash块内未用字节的使用寿命;另外,flash的擦写次数周期一般是几万次,频繁的对flash块进行擦写可能无法满足产品的使用周期;同时由于擦除时间长,一般为ms级,因此频繁的擦除操作也会占用系统资源影响系统功能。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的是提供一种MCU数据恢复方法和系统。
本发明所采用的技术方案是:一种MCU数据恢复方法,包括步骤:基于FLASH设置主存储区和备份存储区,所述主存储区包括M1个存储单元,标记其为主存储单元,所述备份存储区包括M2个存储单元,标记其为备份存储单元;赋予所述存储单元一个状态标识以表示其数据存放状态,将所述状态标识储存于指定的存储地址;基于所述主存储单元存储数据,当所述主存储区的存储状态符合阈值则将主存储单元存储的数据传输到对应的备份存储单元,变更关联的存储单元的状态标识;根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复。
优选地,所述指定的存储地址包括:主存储区的指定存储地址和备份存储区的指定存储地址,其中,主存储区的指定存储地址包括M1个字节的存储空间,每一个状态标识对应一个字节;备份存储区的指定存储地址包括M2个字节的存储空间,每一个状态标识对应一个字节。
优选地,所述M1等于M2,标记M1、M2为M。
优选地,还包括步骤:基于FLASH设置若干个主存储区和一个备份存储区,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元。
优选地,还包括步骤:基于FLASH设置主存储区和备份存储区,定义数组以划分待存储的数据,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元,基于所述存储单元存储所述数组。
优选地,还包括步骤:基于FLASH设置主存储区和备份存储区,定义N个字节长度的数组以划分待存储的数据,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元,所述存储单元的存储量为N个字节,基于所述存储单元存储所述数组。
优选地,所述主存储区的存储状态包括:状态标识为已使用的主存储单元的数量。
优选地,还包括步骤:当状态标识为已使用的主存储单元的数量为M1则将主存储单元的数据传输到所述备份存储单元,变更所述备份存储单元的状态标识为已使用。
优选地,还包括步骤:当状态标识为已使用的主存储单元的数量为M1则将主存储单元存储的数据传输到所述备份存储单元,变更所述备份存储单元的状态标识为已使用,擦拭所述主存储区,变更所有所述主存储单元的状态标识为未使用。
优选地,所述根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复的步骤包括:当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,则根据需求将备份存储单元中状态标识为已使用的存储单元所存储的数据输出至指定的主存储单元以实现数据恢复。
优选地,所述数组的结构包括:有效数据和校验码,其中,所述有效数据属于所述待存储的数据。
优选地,还包括步骤:当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,验证所述备份存储单元所存储的数组的校验码,通过则根据需求将备份存储单元中状态标识为已使用的存储单元所存储的数据输出至指定的主存储单元以实现数据恢复。
优选地,还包括步骤:当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,验证所述备份存储单元所存储的数组的校验码,不通过则将所述数组的值为还原为系统默认值。
本发明所采用的技术方案还包括:一种MCU数据恢复系统,包括:存储模块,用于基于FLASH设置主存储区和备份存储区,所述主存储区包括M1个存储单元,标记其为主存储单元,所述备份存储区包括M2个存储单元,标记其为备份存储单元;处理模块,用于赋予所述存储单元一个状态标识以表示其数据存放状态,将所述状态标识储存于指定的存储地址;处理模块,还用于基于所述主存储单元存储数据,当所述主存储区的存储状态符合阈值则将主存储单元存储的数据传输到对应的备份存储单元,变更关联的存储单元的状态标识;处理模块,还用于根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复。
优选地,所述指定的存储地址包括:主存储区的指定存储地址和备份存储区的指定存储地址,其中,主存储区的指定存储地址包括M1个字节的存储空间,每一个状态标识对应一个字节;备份存储区的指定存储地址包括M2个字节的存储空间,每一个状态标识对应一个字节。
优选地,所述M1等于M2,标记M1、M2为M。
优选地,所述存储模块,还用于基于FLASH设置若干个主存储区和一个备份存储区,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元。
优选地,所述存储模块,还用于基于FLASH设置主存储区和备份存储区,定义数组以划分待存储的数据,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元,基于所述存储单元存储所述数组。
优选地,所述存储模块,还用于基于FLASH设置主存储区和备份存储区,定义N个字节长度的数组以划分待存储的数据,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元,所述存储单元的存储量为N个字节,基于所述存储单元存储所述数组。
优选地,所述主存储区的存储状态包括:状态标识为已使用的主存储单元的数量。
优选地,所述处理模块,还用于当状态标识为已使用的主存储单元的数量为M1则将主存储单元的数据传输到所述备份存储单元,变更所述备份存储单元的状态标识为已使用。
优选地,所述处理模块,还用于当状态标识为已使用的主存储单元的数量为M1则将主存储单元存储的数据传输到所述备份存储单元,变更所述备份存储单元的状态标识为已使用,擦拭所述主存储区,变更所有所述主存储单元的状态标识为未使用。
优选地,所述根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复的步骤包括:当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,则根据需求将备份存储单元中状态标识为已使用的存储单元所存储的数据输出至指定的主存储单元以实现数据恢复。
优选地,所述数组的结构包括:有效数据和校验码,其中,所述有效数据属于所述待存储的数据。
优选地,所述处理模块还用当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,验证所述备份存储单元所存储的数组的校验码,通过则根据需求将备份存储单元中状态标识为已使用的存储单元所存储的数据输出至指定的主存储单元以实现数据恢复。
优选地,所述处理模块还用于当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,验证所述备份存储单元所存储的数组的校验码,不通过则将所述数组的值为还原为系统默认值。
本发明的有益效果是:设置主存储区和备份存储区以明确备份数据和非备份数据的区别,基于存储单元的状态标识以确定存储单元存放状态,将状态标识储存于指定地点能够利用FLASH的断电存储特性方便查阅和确定存储单元的状态,基于主存储区和备份存储区的状态标识以执行备份数据的输出,保证备份数据的恢复。
附图说明
图1所示为基于本发明实施例的数据恢复流程;
图2所示为基于本发明实施例的MCU内部存储区示意图;
图3所示为基于本发明实施例的flash块的内部示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
基于本发明的实施例1
本实施例用于说明当前技术的缺点和本发明的解决思路,其中,现有技术不足的原因在于:
1、增加EEPROM芯片来存储数据会增加设计电路、增加外围分立元器件(如电阻、电容等),增加物料成本,同时增加批量生产成本、维护成本并可能影响批量生产的一致性,同时EEPROM读写速度慢,不仅占用系统资源还可能在当系统发生掉电时因写操作慢而无法及时保存数据,此外EEPROM的通迅接口为IIC接口,会占用主MCU的IO口资源。
2、利用主MCU内部的flash来保存数据可以解决上述方案中的物料成本问题及读写速度慢等问题,但flash的特性决定了每次在写flash前必须先对flash块进行擦除,flash只能以块(sector)为单位进行擦除操作,而flash块的擦除时间一般为ms级(比如擦除时间为5ms/sector,或者甚至为几百ms),则对flash块进行擦除时,会占用系统指令总线,即用户程序在flash块擦除过程中会停止运行,因此当频繁保存数据时,也需要频繁的对flash块进行擦除,从而导致用户程序会被频繁的打断停止运行,导致系统某些功能可能会不正常(比如LED显示效果会出现闪烁等);由于flash块的擦除时间较长,因此可能导致在擦除过程中发生的系统掉电情况时系统还没有成功保存数据,造成数据的永久性丢失,导致再上电时系统工作异常等情况;如果将需要保存的数据储存在固定flash块的固定地址上,则每次保存数据时都需要先将整个flash块进行擦除操作,当进行少量几个数据的保存时,会造成flash块的大量空余字节的浪费,使得对flash块字节的使用率低,此外每次对flash块进行擦除都会减少一次flash块的使用寿命,而一般来说,flash的正常擦除寿命仅为几万次(比如2万次),如果需要在每次保存数据时都对flash块进行擦除操作,则主MCU内部flash的使用寿命可能无法匹配MCU的使用寿命。
本发明的技术基础包括:MCU已经对用户开放了其内部flash的操作接口,MCU内部flash空间足够大。
如图1所示的数据恢复流程:
本发明基于利用MCU内部空余flash来划分数据存储区,在主MCU内部空余的flash块(sector)中划分出来两个存储区用来存储数据:其中一个作为主存储区(大小>=1个flash块,如图2所示的MCU内部存储区示意图,可以设置n个主存储区,此时,权利要求所述主存储区指代一个flash块),用来存储当前及历史保存的数据;另一个作为备份存储区(大小为1个flash块),当主存储区的所有存储单元全部被用完时,则将当前需要保存的数据存储在备份存储区;
(步骤1、基于FLASH设置主存储区和备份存储区,所述主存储区包括M1个存储单元,标记其为主存储单元,所述备份存储区包括M2个存储单元,标记其为备份存储单元)所述存储区都划分出若干个存储单元,其中,所述主存储区包括M1个存储单元,标记其为主存储单元,所述备份存储区包括M2个存储单元,标记其为备份存储单元(出于简单例子说明的目的,令M1等于M2,标记其为M,其中,M1可以不等于M2,具体根据实际的需求);
(步骤2、赋予所述存储单元一个状态标识以表示其数据存放状态,将所述状态标识储存于指定的存储地址)同时,在每一个flash块中都划分出flash块的前M个字节(即指定的存储地址,包括主存储区和备份存储区的两种情况,当M1不等于M2时,则分别划出M1个字节和M2个字节),字节的排序对应flash块的地址偏移量0~M-1(则flash块偏移地址0的内容用来标识第一个存储单元是否被使用,flash块偏移地址1的内容标识第二个存储单元是否被使用,flash块偏移地址M-1的内容标识第M个存储单元是否被使用),每一个字节用于一一代表每一个存储单元的存储状态(即状态标识),其状态标识的定义可以举例为当某一个状态标识的内容为0xff时表示其对应的存储单元未被使用,可以用来保存数据,如果某一个状态标识的内容为0xAA或其它值时则表示其对应的存储单元已经被使用,不能再用于保存数据;
(步骤3、基于所述主存储单元存储数据,当所述主存储区的存储状态符合阈值则将主存储单元存储的数据(或者当前需要存储的数据)传输到对应的备份存储单元,变更关联的存储单元的状态标识;步骤4、根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复)当主存储区的存储状态(有多少存储单元被使用)符合一定条件时,则启动备份过程,将主存储单元所存储的数据传输到备份存储单元(具体的存储单元之间的匹配关系可以是预设,也可以是根据指令进行安排),在完成数据的传输后,变更备份存储单元的状态标识(由未使用改为已使用);
本发明针对现有技术面临的断电导致的问题的解决方式是根据备份存储单元和主存储单元的状态标识判断是否需要进行数据的恢复;由于flash的存储特性,当存储器在擦拭过程中断电,会导致数据的丢失,此时,备份存储单元的状态标识应当为已使用(可以包括未使用的存储单元),而主存储单元的状态标识为未使用(因为在擦拭时,位于flash前端的状态标识会被首先还原为未使用,同时,亦只有未使用的存储单元才能被存入新的数据),非断电的情况类似,即主存储单元需要保持大量数据中的一部分,但是擦拭过程需要将主存储单元全部清除,因此,将需要备份的数据保持到备份存储单元,在完成擦拭后,根据需求从备份存储单元获取备份的数据并进行恢复。
基于本发明的实施例2
本发明的目的在于说明优选方案中的数组的意义,由于待存储的数据本身是随机的,因此,如果只是硬性的将数据存入存储单元,会影响到flash的存储空间的利用,影响存储的效率,因此,从RAM中定义一个数组,该数组的目的是规范待存储的存储方式,其存储的数据的长度正好满足每一个存储单元的容量(或者反过来,存储单元的设定是满足于数组),例如,每一个存储单元能够存储N个字节,则数组的长度也是N个字节,由此,可以确保每一个存储单元的存储空间的有效利用,提高存储的效率。
对于具体的数据存储过程,包括如下步骤:
flash块的大小一般为512bytes/sector,因此flash块内存储单元数M与数组字节长度N之间的算法关系为:M=512/(N+1),其中0<N<512,M取整数;flash块字节大小跟MCU品牌有关,也可能是1024bytes/sector或其它大小。
状态标识的地址的偏移量(L)与状态标识所对应的存储单元的起始地址的算法关系如下:add(存储单元起始地址)=SectorAdd+M+N*L,其中SectorAdd是该flash块的绝对起始地址,M是flash块划分的存储单元个数,N是数组字节长度表示每个存储单元所能存储的数据字节大小(0<N<512),L表示单元状态标示字地址在该flash块中的地址偏移量(0<=L<=M)。
每次保存数据时,必须先从主存储区中的当前状态标识开始查询找到下一个未用存储单元(上电时,单元标识字地址偏移量为0);
通过查询主存储区flash块的单元状态标识字(即单元标识字,也即权利要求所述的状态标识),可以查找到下一个未用存储单元,具体实现方法如下:
依次查询单元标识字的内容,如果标识字的内容为0xFF,则表示该标识字对应的存储单元未被使用,可以用来保存数据;同时用变量记录保存下当前的标识字地址的偏移量,当下次要保存数据或读取数据时可以直接从此标识地址的偏移量开始查询下一个未用存储单元;如果标示字的内容为0xAA或其它值时,则表示该标识字对应的存储单元已被使用,需要继续查寻下一个标识字,直至找到下一个未用存储单元为止;
若查询到了下一个未用存储单元,则将需要保存的数据(如上述数组的所有内容)写入到该存储单元以进行保存,同时将该存储单元对应的单元标识字的内容改写为0xAA;
若当查寻到所有标识字的内容都为非0xFF时(即主存储单元的状态标识均为已使用),表示主存储区的所有存储单元已经全部被使用(也可以根据具体的需要设定一个阈值,例如70%的主存储单元已经使用即可以进行备份或者擦拭);此时需要对主存储区的所有存储单元进行flash块擦除后才能继续从第一个存储单元重新开始查询未用存储单元并进行保存数据;
本实施例在执行擦拭主存储区之前会先将需要保持的数据(可以是全部主存储单元的数据,也可以是其中的一部分存储单元的数据,此时,数组的存储方式就能显示出其用途,即清晰的存储长度和地址,能够降低不同数据长度的存入/读出的过程中的运算量)输出到备份存储区中的下一个未使用存储单元(查询方法和上述主存储区类似,即根据状态标识获取未使用的存储单元,然后按顺序进行存储),当存储/备份完成,则擦拭主存储区;
本实施例可以避免在擦除主存储过程中发生掉电的情况时造成当前及历史保存数据的丢失,当再上电时可以通过从备份存储区中恢复最新的存储数据;同时,通过执行相反的步骤也可以避免在擦除备份存储区过程中发生掉电的情况时造成当前数据未保存,即再上电时可以从主存储区中恢复上一次更改之前的存储数据。
主存储区在每次读取数据时,必须先从主存储区的当前单元标识字地址偏移量开始查询主存储区的下一个未用存储单元(上电时,单元标识字地址为0),而下一个未用存储单元的前一个存储单元的内容即是上次最新保存的数据;通过查询主存储区flash块的单元状态标识字内容,可以查找到下一个未用存储单元,具体实现方法如下:
依次查询单元标识字的内容,如果标识字的内容为0xFF,则表示该标识字对应的存储单元未被使用可以用来保存数据,同时也表示当前标识字地址的前一个标识字地址所表示的存储单元即为上次最新保存的数据;如果标示字的内容为0xAA或其它值时,则表示该标识字对应的存储单元已被使用,需要继续查寻下一个标识字地址。
如图3所示的flash块的内部示意图,其中,
Flash设置了M个存储单元,0、1、2···D、E、F为对应的下标;地址0xC000存储各个存储单元的状态标识;0xC010~0xC0F0对应每一个存储单元;每一个存储单元存储数组的数据(data)。
基于本发明的实施例3
本实施例用于说明在实施例2的基础上,在何种情况下(即何种主、备份存储区的状态),需要进行数据的恢复:
如果在主存储区中查询到第一个标识字(即状态标识)的内容就为0xFF,则表示该主存储区中没有可以读取的数据,此时需要去查询备份存储区的存储单元的状态标识,发生此种情况可能有两种情形:情形一,备份存储区的第一个标识字内容也是0xFF,此时说明主存储区从来没有保存过数据,此时的备份存储区也是从没有保存过数据;情形二,上次在擦除主存储区时,系统发生了掉电,导致主存储区的数据被擦除而且主存储区没来得及保存上次掉电时需要保存的数据,此种情况下,上次掉电时需要保存的数据保存在备份存储区中,可以从备份存储区中查询读取;
备份存储区的查询方式与主存储区的查询方式一致,备份存储查询区的查询结果有两种与上述情形对应的结果:查询结果一,备份存储区的第一个标识字内容为0xFF,则表示系统的主、备份存储区均没有保存过数据,此时返回备份存储区第一个单元的所有数据(系统默认值);查询结果二,在备份存储区找到了正确存储单元(此时备份存储单元的状态标识可能是全部已使用,也可能是部分已使用),则返回相应存储单元内的所有数据以实现数据恢复。
基于本发明的实施例4
本实施例用于说明在实施例3的基础上,说明优选方案中的数组的结构:
数组的结构为“有效数据+校验码”。其中“有效数据”为需要保存的数据(即所述待存储的数据)(数组下标0对应第一个需要保存的数据,数组下标1对应第二个需要保存的数据等依次类推);“校验码”为“有效数据”的校验结果(校验方式可以由用户自定义,比如CRC8、CRC16、CRC32、和校验等),“校验码”对应数组的最后部分字节;
用户先确定好需要保存的“有效数据”的长度及校验方式,则整个数组的大小可以确定,假设最终确定整个数组的长度为N个字节;
在开始数据恢复时,从备份存储单元获取对应的数据,然后根据有效数据的校验方式,对数组中的有效数据进行校验,校验码的比较结果正确则说明读到的数据有效并可以使用;若校验码错误则说明当前读到的数据无效不能使用;此时用户程序应该将数组值恢复为系统默认值(主存储区、备份存储区均无有效数据的情况一般是产品第一次上电且产品量产时没有往存储区写入有效数据的情况才会发生),本实施例通过增加校验码以提高数据的安全性,有利于保护系统的运行稳定。
基于本发明的实施例5
本实施例用于说明具体的实践中,适用于本发明的MCU,其中,包括基于闪存的存储模块,用于基于FLASH设置主存储区和备份存储区,所述主存储区包括M1个存储单元,标记其为主存储单元,所述备份存储区包括M2个存储单元,标记其为备份存储单元;
处理模块,用于赋予所述存储单元一个状态标识以表示其数据存放状态,将所述状态标识储存于指定的存储地址;基于所述主存储单元存储数据,当所述主存储区的存储状态符合阈值则将主存储单元存储的数据传输到对应的备份存储单元,变更关联的存储单元的状态标识;根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (26)
1.一种MCU数据恢复方法,其特征在于,包括步骤:
基于FLASH设置主存储区和备份存储区,所述主存储区包括M1个存储单元,标记其为主存储单元,所述备份存储区包括M2个存储单元,标记其为备份存储单元;
赋予所述存储单元一个状态标识以表示其数据存放状态,将所述状态标识储存于指定的存储地址;
基于所述主存储单元存储数据,当所述主存储区的存储状态符合阈值则将主存储单元存储的数据传输到对应的备份存储单元,变更关联的存储单元的状态标识;
根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复。
2.根据权利要求1所述的一种MCU数据恢复方法,其特征在于,所述指定的存储地址包括:
主存储区的指定存储地址和备份存储区的指定存储地址,其中,
主存储区的指定存储地址包括M1个字节的存储空间,每一个状态标识对应一个字节;
备份存储区的指定存储地址包括M2个字节的存储空间,每一个状态标识对应一个字节。
3.根据权利要求2所述的一种MCU数据恢复方法,其特征在于,所述M1等于M2,标记M1、M2为M。
4.根据权利要求1~3任一项所述的一种MCU数据恢复方法,其特征在于,还包括步骤:
基于FLASH设置若干个主存储区和一个备份存储区,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元。
5.根据权利要求1~3任一项的一种MCU数据恢复方法,其特征在于,还包括步骤:
基于FLASH设置主存储区和备份存储区,定义数组以划分待存储的数据,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元,基于所述存储单元存储所述数组。
6.根据权利要求5所述的一种MCU数据恢复方法,其特征在于,还包括步骤:
基于FLASH设置主存储区和备份存储区,定义N个字节长度的数组以划分待存储的数据,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元,所述存储单元的存储量为N个字节,基于所述存储单元存储所述数组。
7.根据权利要求5所述的一种MCU数据恢复方法,其特征在于,所述主存储区的存储状态包括:
状态标识为已使用的主存储单元的数量。
8.根据权利要求7所述的一种MCU数据恢复方法,其特征在于,还包括步骤:
当状态标识为已使用的主存储单元的数量为M1则将主存储单元的数据传输到所述备份存储单元,变更所述备份存储单元的状态标识为已使用。
9.根据权利要求8所述的一种MCU数据恢复方法,其特征在于,还包括步骤:
当状态标识为已使用的主存储单元的数量为M1则将主存储单元存储的数据传输到所述备份存储单元,变更所述备份存储单元的状态标识为已使用,擦拭所述主存储区,变更所有所述主存储单元的状态标识为未使用。
10.根据权利要求6~9任一项所述的一种MCU数据恢复方法,其特征在于,所述根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复的步骤包括:
当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,则根据需求将备份存储单元中状态标识为已使用的存储单元所存储的数据输出至指定的主存储单元以实现数据恢复。
11.根据权利要求10所述的一种MCU数据恢复方法,其特征在于,所述数组的结构包括:
有效数据和校验码,其中,
所述有效数据属于所述待存储的数据。
12.根据权利要求11所述的一种MCU数据恢复方法,其特征在于,还包括步骤:
当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,验证所述备份存储单元所存储的数组的校验码,通过则根据需求将备份存储单元中状态标识为已使用的存储单元所存储的数据输出至指定的主存储单元以实现数据恢复。
13.根据权利要求12所述的一种MCU数据恢复方法,其特征在于,还包括步骤:
当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,验证所述备份存储单元所存储的数组的校验码,不通过则将所述数组的值为还原为系统默认值。
14.一种MCU数据恢复系统,其特征在于,包括:
存储模块,用于基于FLASH设置主存储区和备份存储区,所述主存储区包括M1个存储单元,标记其为主存储单元,所述备份存储区包括M2个存储单元,标记其为备份存储单元;
处理模块,用于赋予所述存储单元一个状态标识以表示其数据存放状态,将所述状态标识储存于指定的存储地址;
处理模块,还用于基于所述主存储单元存储数据,当所述主存储区的存储状态符合阈值则将主存储单元存储的数据传输到对应的备份存储单元,变更关联的存储单元的状态标识;
处理模块,还用于根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复。
15.根据权利要求14所述的一种MCU数据恢复系统,其特征在于,所述指定的存储地址包括:
主存储区的指定存储地址和备份存储区的指定存储地址,其中,
主存储区的指定存储地址包括M1个字节的存储空间,每一个状态标识对应一个字节;
备份存储区的指定存储地址包括M2个字节的存储空间,每一个状态标识对应一个字节。
16.根据权利要求15所述的一种MCU数据恢复系统,其特征在于,所述M1等于M2,标记M1、M2为M。
17.根据权利要求14~16任一项所述的一种MCU数据恢复系统,其特征在于,所述存储模块,还用于基于FLASH设置若干个主存储区和一个备份存储区,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元。
18.根据权利要求14~16任一项所述的一种MCU数据恢复系统,其特征在于,所述存储模块,还用于基于FLASH设置主存储区和备份存储区,定义数组以划分待存储的数据,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元,基于所述存储单元存储所述数组。
19.根据权利要求18所述的一种MCU数据恢复系统,其特征在于,所述存储模块,还用于基于FLASH设置主存储区和备份存储区,定义N个字节长度的数组以划分待存储的数据,所述主存储区包括M1个存储单元,所述备份存储区包括M2个存储单元,所述存储单元的存储量为N个字节,基于所述存储单元存储所述数组。
20.根据权利要求18所述的一种MCU数据恢复系统,其特征在于,所述主存储区的存储状态包括:
状态标识为已使用的主存储单元的数量。
21.根据权利要求20所述的一种MCU数据恢复系统,其特征在于,所述处理模块,还用于当状态标识为已使用的主存储单元的数量为M1则将主存储单元的数据传输到所述备份存储单元,变更所述备份存储单元的状态标识为已使用。
22.根据权利要求21所述的一种MCU数据恢复系统,其特征在于,所述处理模块,还用于当状态标识为已使用的主存储单元的数量为M1则将主存储单元存储的数据传输到所述备份存储单元,变更所述备份存储单元的状态标识为已使用,擦拭所述主存储区,变更所有所述主存储单元的状态标识为未使用。
23.根据权利要求19~22任一项所述的一种MCU数据恢复系统,其特征在于,所述根据备份存储单元和主存储单元的状态标识将备份存储区的数据输出至所述主存储区以实现数据恢复的步骤包括:
当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,则根据需求将备份存储单元中状态标识为已使用的存储单元所存储的数据输出至指定的主存储单元以实现数据恢复。
24.根据权利要求23所述的一种MCU数据恢复系统,其特征在于,所述数组的结构包括:
有效数据和校验码,其中,
所述有效数据属于所述待存储的数据。
25.根据权利要求24所述的一种MCU数据恢复系统,其特征在于,所述处理模块还用当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,验证所述备份存储单元所存储的数组的校验码,通过则根据需求将备份存储单元中状态标识为已使用的存储单元所存储的数据输出至指定的主存储单元以实现数据恢复。
26.根据权利要求25所述的一种MCU数据恢复系统,其特征在于,所述处理模块还用于当所述主存储单元的状态标识为未使用,所述备份存储单元的状态标识包括已使用,验证所述备份存储单元所存储的数组的校验码,不通过则将所述数组的值为还原为系统默认值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810761684.5A CN108958978A (zh) | 2018-07-12 | 2018-07-12 | 一种mcu数据恢复方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810761684.5A CN108958978A (zh) | 2018-07-12 | 2018-07-12 | 一种mcu数据恢复方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108958978A true CN108958978A (zh) | 2018-12-07 |
Family
ID=64483972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810761684.5A Pending CN108958978A (zh) | 2018-07-12 | 2018-07-12 | 一种mcu数据恢复方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108958978A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960611A (zh) * | 2019-03-07 | 2019-07-02 | 杭州迪普科技股份有限公司 | 数据恢复的方法、装置、电子设备及机器可读存储介质 |
CN110990191A (zh) * | 2019-11-01 | 2020-04-10 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种基于镜像存储的数据恢复方法及系统 |
CN112287348A (zh) * | 2019-07-23 | 2021-01-29 | 上汽通用汽车有限公司 | 一种车载模块的自刷新方法和系统 |
CN112732522A (zh) * | 2020-12-31 | 2021-04-30 | 东风汽车集团有限公司 | 一种车载mcu可配置日志存储解析方法和系统 |
CN113538754A (zh) * | 2021-06-08 | 2021-10-22 | 福建新大陆通信科技股份有限公司 | 一种ctid智能门锁授权数据管理方法及系统 |
CN113655950A (zh) * | 2021-01-12 | 2021-11-16 | 青岛鼎信通讯股份有限公司 | 一种应用于电子远传水表的eeprom擦写平衡方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070034197A (ko) * | 2005-09-23 | 2007-03-28 | 엘지노텔 주식회사 | 임베디드 시스템의 데이터 백업방법 |
CN102662852A (zh) * | 2012-03-20 | 2012-09-12 | 山东省科学院自动化研究所 | 一种利用MCU内部数据Flash存储非易失性数据的方法 |
CN102890657A (zh) * | 2012-10-10 | 2013-01-23 | 深圳市航盛电子股份有限公司 | 一种减少eeprom的数据读写出错的方法 |
CN103914393A (zh) * | 2014-04-11 | 2014-07-09 | 四川华拓光通信股份有限公司 | 一种基于mcu的flash不丢失更新存储方法 |
CN105260270A (zh) * | 2015-11-11 | 2016-01-20 | 恒宝股份有限公司 | 一种Flash存储空间的动态恢复方法及装置 |
CN106227620A (zh) * | 2016-07-20 | 2016-12-14 | 中国航空工业集团公司航空动力控制系统研究所 | 可恢复的Flash数据存储方法 |
-
2018
- 2018-07-12 CN CN201810761684.5A patent/CN108958978A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070034197A (ko) * | 2005-09-23 | 2007-03-28 | 엘지노텔 주식회사 | 임베디드 시스템의 데이터 백업방법 |
CN102662852A (zh) * | 2012-03-20 | 2012-09-12 | 山东省科学院自动化研究所 | 一种利用MCU内部数据Flash存储非易失性数据的方法 |
CN102890657A (zh) * | 2012-10-10 | 2013-01-23 | 深圳市航盛电子股份有限公司 | 一种减少eeprom的数据读写出错的方法 |
CN103914393A (zh) * | 2014-04-11 | 2014-07-09 | 四川华拓光通信股份有限公司 | 一种基于mcu的flash不丢失更新存储方法 |
CN105260270A (zh) * | 2015-11-11 | 2016-01-20 | 恒宝股份有限公司 | 一种Flash存储空间的动态恢复方法及装置 |
CN106227620A (zh) * | 2016-07-20 | 2016-12-14 | 中国航空工业集团公司航空动力控制系统研究所 | 可恢复的Flash数据存储方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960611A (zh) * | 2019-03-07 | 2019-07-02 | 杭州迪普科技股份有限公司 | 数据恢复的方法、装置、电子设备及机器可读存储介质 |
CN109960611B (zh) * | 2019-03-07 | 2021-06-29 | 杭州迪普科技股份有限公司 | 数据恢复的方法、装置、电子设备及机器可读存储介质 |
CN112287348A (zh) * | 2019-07-23 | 2021-01-29 | 上汽通用汽车有限公司 | 一种车载模块的自刷新方法和系统 |
CN110990191A (zh) * | 2019-11-01 | 2020-04-10 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种基于镜像存储的数据恢复方法及系统 |
CN110990191B (zh) * | 2019-11-01 | 2022-06-17 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种基于镜像存储的数据恢复方法及系统 |
CN112732522A (zh) * | 2020-12-31 | 2021-04-30 | 东风汽车集团有限公司 | 一种车载mcu可配置日志存储解析方法和系统 |
CN113655950A (zh) * | 2021-01-12 | 2021-11-16 | 青岛鼎信通讯股份有限公司 | 一种应用于电子远传水表的eeprom擦写平衡方法 |
CN113538754A (zh) * | 2021-06-08 | 2021-10-22 | 福建新大陆通信科技股份有限公司 | 一种ctid智能门锁授权数据管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108958978A (zh) | 一种mcu数据恢复方法和系统 | |
CN101515276B (zh) | 一种文件数据写操作的方法、文件数据恢复方法及系统 | |
CN100483362C (zh) | 非易失性存储系统的内部维护调度请求 | |
CN101324867B (zh) | 基于半导体存储介质的数据管理装置及管理方法 | |
CN102135942B (zh) | 一种存储设备中实现损耗均衡的方法及存储设备 | |
CN101382918B (zh) | 一种基于数据交换区的NAND Flash闪存优化管理方法 | |
CN102135927B (zh) | 一种基于nand flash的系统引导方法和装置 | |
CN101533670B (zh) | 实现存储设备损耗均衡的方法及存储设备 | |
CN102662852B (zh) | 一种利用MCU内部数据Flash存储非易失性数据的方法 | |
CN101321341B (zh) | 智能卡断电保护方法 | |
CN101640069B (zh) | 用于闪速存储器的平均磨损方法与平均磨损系统 | |
CN101625897B (zh) | 用于快闪存储器的数据写入方法、储存系统与控制器 | |
CN104102585A (zh) | 映射信息记录方法、存储器控制器与存储器储存装置 | |
CN101551780B (zh) | 一种电视机及其数据存储方法、装置 | |
CN101169760B (zh) | 电子硬盘的存储空间的管理方法 | |
CN101526927B (zh) | Flash文件系统的数据处理方法及数据处理装置 | |
CN101281493A (zh) | 与非闪存器及其管理方法 | |
CN104063186A (zh) | 一种电子设备的数据访问方法 | |
CN101960529B (zh) | 电容节能验证 | |
CN102063380A (zh) | 一种向非易失性存储器写入数据的方法及装置 | |
CN102902561A (zh) | 数据存储方法及数据存储系统 | |
CN101727397B (zh) | 区块管理与更换方法、闪存储存系统及其控制器 | |
CN102207905A (zh) | 系统恢复方法、存储媒体控制器及存储系统 | |
CN103218300B (zh) | 数据处理方法、存储器控制器与存储器储存装置 | |
CN111651126B (zh) | 存储器的写操作方法、系统、电子设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181207 |