CN108762987A - 用于双备份单片机闪存的数据恢复方法及装置 - Google Patents
用于双备份单片机闪存的数据恢复方法及装置 Download PDFInfo
- Publication number
- CN108762987A CN108762987A CN201810539337.8A CN201810539337A CN108762987A CN 108762987 A CN108762987 A CN 108762987A CN 201810539337 A CN201810539337 A CN 201810539337A CN 108762987 A CN108762987 A CN 108762987A
- Authority
- CN
- China
- Prior art keywords
- data
- memory page
- memory
- page
- microcontroller
- 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/1456—Hardware arrangements for backup
-
- 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
Abstract
本发明涉及单片机闪存技术领域。本发明一实施例提供一种用于双备份单片机闪存的数据恢复方法及装置,其中该方法包括:获取待写入至单片机的闪存的第一数据;更新用于双备份所述第一数据的第一存储页和第二存储页;当发生闪存硬性故障时,读取所述第一存储页和所述第二存储页中已拷贝的数据;基于所读取的该已拷贝的数据,覆盖所述第一存储页和所述第二存储页中的数据。由此,当发生闪存硬性故障时,读取正被更新的第一存储页和第二存储页中已拷贝的数据,并将所读取的数据覆盖至第一存储页和第二存储页,能够有效将单片机恢复到正常的读写状态。
Description
技术领域
本发明涉及单片机闪存技术领域,具体地涉及一种用于双备份单片机闪存的数据恢复方法及装置。
背景技术
单片机运行主要是通过对单片机内部硬件进行操作,并将操作配置保存到内部flash,但是在操作flash的时候外部环境有可能对flash造成硬性,如静电、电压、高温等,如果单片机flash出现异常就不能保证产品的正常工作。
嵌入式MCU在操作时会将需要保存的数据保存到闪存flash中。MCU在工作时出现上下电等供电电压或电流发生的情况,因此对操作flash对,操作逻辑采用双备份的方式,即在数据存储时将数据存储到两个片区page1,page2。第一次操作时先将数据写入page1中,如果对应位置存储的数据发生变化时,先将数据写入page2(先全部擦除)中,然后再把page1中未改变的数据写入page2中。再有数据变化时把page1中的数据进行全部擦除,再写入,从而实现在出现异常时有一个片区的数据是完整的。
但是,在实际操作中会出现突然断电或其他原因造成异常时,然后将备份的page1中的数据写入page2中,先将page2进行擦除操作。但是在读取page1数据的时读取出现异常,就有可能出现两个片区的数据同时出现异常,此时page1中的数据是异常的,造成微控制器MCU无法正常工作,也不能恢复。
发明内容
本发明实施例的目的是提供一种用于双备份单片机数据恢复方法及装置,用以至少解决现有技术中双备份单片机闪存因硬性操作异常所导致的数据无法恢复的技术问题。
为了实现上述目的,本发明实施例提供一种用于双备份单片机闪存的数据恢复方法,包括:获取待写入至单片机的闪存的第一数据;更新用于双备份所述第一数据的第一存储页和第二存储页;当发生闪存硬性故障时,读取所述第一存储页和所述第二存储页中已拷贝的数据;基于所读取的该已拷贝的数据,覆盖所述第一存储页和所述第二存储页中的数据。
本发明实施例另一方面提供一种用于双备份单片机数据恢复装置,包括:获取单元,用于获取待写入至单片机的闪存的第一数据;更新单元,用于更新用于双备份所述第一数据的第一存储页和第二存储页;读取单元,用于当发生闪存硬性故障时,读取所述第一存储页和所述第二存储页中已拷贝的数据;覆盖单元,用于基于所读取的该已拷贝的数据,覆盖所述第一存储页和所述第二存储页中的数据。
本发明实施例又一方面提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行本申请上述的用于双备份单片机闪存的数据恢复方法。
通过上述技术方案,当发生闪存硬性故障时,读取正被更新的第一存储页和第二存储页中已拷贝的数据,并将所读取的数据覆盖至第一存储页和第二存储页,能够有效将单片机恢复到正常的读写状态。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明一实施例的用于双备份单片机闪存的数据恢复方法的流程图;
图2是本发明一实施例的用于双备份单片机闪存的数据恢复装置的结构框图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
如图1所示,本发明一实施例的用于双备份单片机闪存的数据恢复方法,包括:
S11、获取待写入至单片机的闪存的第一数据。
S12、更新用于双备份第一数据的第一存储页和第二存储页。
关于对应双备份功能的第一存储页和第二存储页的说明,可以是将第一数据写入第一存储页中,第一存储页对应位置存储的数据发生变化时,此时将第二存储页中的数据擦除,并将第一数据页中的未改变数据读取并写入第二数据页,但是在将第一数据页中的数据读取并写入第二数据页中的过程中会存在异常中断的情况,例如硬性故障,其包括静电、高电压和/或高温故障。因此,本发明实施例提出旨在自动修复第一存储页和第二存储页的技术方案。
S13、当发生闪存硬性故障时,读取第一存储页和第二存储页中已拷贝的数据。
S14、基于所读取的该已拷贝的数据,覆盖第一存储页和第二存储页中的数据。
其中,在确定发生闪存硬性故障时,可以将异常闪存中已拷贝的数据读取出来并将其覆盖该闪存,由此自恢复双备份单片机读写功能。
具体的,可以是删除第一存储页和第二存储页中的数据,并重新将有效数据对应写入第一存储页和第二存储页。关于该删除操作的执行,可以是通过删除指令的调用来实现的,其中该删除指令是预配置在单片机中的且用于指示针对第一存储页和第二存储页中的数据的删除操作。由此,可以有效地解决当外部异常造成flash出现异常时,恢复单片机操作flash正常。一般操作flash出现异常时,都是采用重新操作一次flash,但是如果外部干扰造成异常,单纯的再次操作是不能恢复flash数据的,采用将片区删除是不错的方式。
需说明的是,单片机运行主要是通过对单片机内部硬件进行操作,并将操作配置保存到内部闪存flash,但是在操作flash的时候外部环境有可能对flash造成硬性,如静电、电压、高温等,如果单片机flash出现异常就不能保证产品的正常工作。如果是软件原因造成产品问题,大可进行软件优化解决,如果其他原因造成flash出现异常,就很难解决出现的问题。在操作flash时会对代码段的数据进行加锁保护,最大限度的保证代码的运行正常,同时对操作flash时为防止数据丢失,操作时一般会采用双备份模式,即采用两个片区对有效数据进行保存。
当单片机上电工作时,第一次操作flash时,会先将数据写入page1中,如果数据有进行修改则会先将page2中的数据进行擦除,然后将改动数据写入page2中,再将page1中未改动的数据写入page2中(flash操作采用先全部擦除然后再写入),出现一般异常时能保证flash数据中有一个page中的数据正常。但是这些操作主要是对单片机写flash异常时恢复策略,在mcu工作时操作flash读操作也是会出现异常情况,写失败的话会根据备份进行重新操作,但是如果读取失败的话就会出现,数据改变进行写入时吗,先判断page1中的数据是否有变化,这时候出现外部异常,page1读取数据时造成flash页出现错误,造成之后操作flash出现异常而导致读取或写入无法恢复正常,page1中的数据和page2中的数据始终一致,无法将要改变的数据写入flash中,这样程序中的逻辑将无法工作正常(根据flash中的数据进行执行不同的逻辑)。之后,再进行操作时也由于读取一直不正常,造成写入一直失败,读取的时候也只能读取到上次写入的数据。
为了解决该问题,本发明实施例提出增加写入或读取flash时,判断操作flash闪存是否成功,如果成功则执行正常的逻辑操作,失败的时候则将两个存储页page进行全部删除,然后再将有效数据写入flash中。
在zigbee网络工作时,首先进行配网操作,根据需要,zigbee设备会进行手动或自动配网,配网过程中需要操作flash。CC2630作为低功耗设备,一般被用作终端设备,即采用电池进行供电(纽扣电池,干电池,锂电池等),这些均不是稳定的供电电源,在操作时很容易出现电压电流不稳的情况,加上CC2630协议栈工作比较复杂,在正常工作时会经常操作flash,在操作flash时如果出现电压不稳或静电等外部干扰,会造成flash操作失败。
CC2630在操作flash时采用的双备份的逻辑,即对page1和page2两个页进行操作,在执行写操作的时候,会先根据两个页的内容进行操作,之后会再读取和要写入的数据进行对比,如果对比一致的话即为操作成功,如果失败的话会有一个失败状态返回,一般产品在出现这种现象时,会将重要的数据再重新写入一次,这样大部分情况能够将单片机恢复正常,这是操作page1和page2时失败时可以采用这种逻辑,但是如果外部干扰造成的flash损坏,发明人通过实际测试发现,之后就会造成flash操作一直失败。不同的单片机的硬件稳定性不同,有的单片机的flash容易损坏,有的很稳定,像如果单片机flash容易损坏的话,很容易造成单片机工作异常,必须要将flash重新擦除烧录固件才能恢复,发明人根据测试发现重新更新固件后均能恢复正常工作模式,因此在考虑解决方案时,可以将操作的flash进行全部擦除操作。
在寻找解决方案时,将损坏单片机flash内容读出,再重新写入异常单片机,发现将固定位置的数据全部擦除(填充0xFF),之后异常单片机也能够恢复正常工作,page1和page2两个页的数据是相互依存的关系,当出现异常的时候,page1 page2操作时会相互判断,造成后续数据一直写入不成功,即使重新上电也不能恢复。测试发现通过将flash闪存中的数据全部擦除,并将有效数据再次写入的方式就能将数据恢复,可以是通过芯片设计,以令其提供可以擦除page1和page2的操作命令。
如图2所示,本发明实施例另一方面提供用于双备份单片机数据恢复装置20,包括:获取单元201,用于获取待写入至单片机的闪存的第一数据;更新单元202,用于更新用于双备份所述第一数据的第一存储页和第二存储页;读取单元203,用于当发生闪存硬性故障时,读取所述第一存储页和所述第二存储页中已拷贝的数据;覆盖单元204,用于基于所读取的该已拷贝的数据,覆盖所述第一存储页和所述第二存储页中的数据。
可选的,所述闪存硬性故障包括以下中的一者或多者:静电、高电压和高温故障。
可选的,所述覆盖单元包括:删除模块,用于删除所述第一存储页和所述第二存储页中的数据;重写模块,用于重新将所读取的该已拷贝的数据对应写入所述第一存储页和所述第二存储页。
可选的,所述删除模块用于调用执行删除指令,其中所述删除指令是预配置在单片机中的且用于指示针对所述第一存储页和所述第二存储页中的数据的删除操作。
本发明实施例又一方面还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行本申请上述的用于双备份单片机闪存的数据恢复方法,其具体的技术方案的细节和效果可以参照上文方法实施例的描述,在此便不赘述。
以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。
Claims (10)
1.一种用于双备份单片机闪存的数据恢复方法,包括:获取待写入至单片机的闪存的第一数据;更新用于双备份所述第一数据的第一存储页和第二存储页;当发生闪存硬性故障时,读取所述第一存储页和所述第二存储页中已拷贝的数据;基于所读取的该已拷贝的数据,覆盖所述第一存储页和所述第二存储页中的数据。
2.根据权利要求1所述的方法,其特征在于,所述闪存硬性故障包括以下中的一者或多者:静电、高电压和高温故障。
3.根据权利要求1所述的方法,其特征在于,所述基于所读取的该已拷贝的数据更新所述第一存储页和所述第二存储页中的数据包括:删除所述第一存储页和所述第二存储页中的数据;重新将所读取的该已拷贝的数据对应写入所述第一存储页和所述第二存储页。
4.根据权利要求3所述的方法,其特征在于,所述删除所述第一存储页和所述第二存储页中的数据包括:调用删除指令,其中所述删除指令是预配置在单片机中的且用于指示针对所述第一存储页和所述第二存储页中的数据的删除操作。
5.根据权利要求1所述的方法,其特征在于,该方法在使用嵌入式MCU执行zigbee配网操作的应用场景下实施。
6.一种用于双备份单片机数据恢复装置,包括:获取单元,用于获取待写入至单片机的闪存的第一数据;更新单元,用于更新用于双备份所述第一数据的第一存储页和第二存储页;
读取单元,用于当发生闪存硬性故障时,读取所述第一存储页和所述第二存储页中已拷贝的数据;覆盖单元,用于基于所读取的该已拷贝的数据,覆盖所述第一存储页和所述第二存储页中的数据。
7.根据权利要求6所述的装置,其特征在于,所述闪存硬性故障包括以下中的一者或多者:静电、高电压和高温故障。
8.根据权利要求6所述的装置,其特征在于,所述覆盖单元包括:删除模块,用于删除所述第一存储页和所述第二存储页中的数据;重写模块,用于重新将所读取的该已拷贝的数据对应写入所述第一存储页和所述第二存储页。
9.根据权利要求8所述的装置,其特征在于,所述删除模块用于调用执行删除指令,其中所述删除指令是预配置在单片机中的且用于指示针对所述第一存储页和所述第二存储页中的数据的删除操作。
10.一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行权利要求1-5中任一项所述的用于双备份单片机闪存的数据恢复方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810539337.8A CN108762987A (zh) | 2018-05-30 | 2018-05-30 | 用于双备份单片机闪存的数据恢复方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810539337.8A CN108762987A (zh) | 2018-05-30 | 2018-05-30 | 用于双备份单片机闪存的数据恢复方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108762987A true CN108762987A (zh) | 2018-11-06 |
Family
ID=64004167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810539337.8A Pending CN108762987A (zh) | 2018-05-30 | 2018-05-30 | 用于双备份单片机闪存的数据恢复方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108762987A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781031A (zh) * | 2019-09-25 | 2020-02-11 | 潍柴动力股份有限公司 | 控制器数据恢复方法、装置、控制器及汽车 |
CN113341924A (zh) * | 2021-06-09 | 2021-09-03 | 中国第一汽车股份有限公司 | 一种ecu下电方法、装置、设备及存储介质 |
CN112579384B (zh) * | 2019-09-27 | 2023-07-04 | 杭州海康威视数字技术股份有限公司 | 一种sas域的节点监控方法、装置、系统及节点 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7921258B1 (en) * | 2006-12-14 | 2011-04-05 | Microsoft Corporation | Nonvolatile disk cache for data security |
CN102214145A (zh) * | 2011-07-14 | 2011-10-12 | 李佰战 | 一种闪存数据更新方法及系统 |
CN105279043A (zh) * | 2014-07-24 | 2016-01-27 | 清华大学 | 一种对单片机软件错误进行恢复的方法及系统 |
CN106933705A (zh) * | 2015-12-31 | 2017-07-07 | 北京京存技术有限公司 | 闪存系统及其快速备份lsb页的方法和装置 |
CN107203441A (zh) * | 2017-08-01 | 2017-09-26 | 常州昊云工控科技有限公司 | 双备份数据存储装置及其工作方法、机器人 |
-
2018
- 2018-05-30 CN CN201810539337.8A patent/CN108762987A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7921258B1 (en) * | 2006-12-14 | 2011-04-05 | Microsoft Corporation | Nonvolatile disk cache for data security |
CN102214145A (zh) * | 2011-07-14 | 2011-10-12 | 李佰战 | 一种闪存数据更新方法及系统 |
CN105279043A (zh) * | 2014-07-24 | 2016-01-27 | 清华大学 | 一种对单片机软件错误进行恢复的方法及系统 |
CN106933705A (zh) * | 2015-12-31 | 2017-07-07 | 北京京存技术有限公司 | 闪存系统及其快速备份lsb页的方法和装置 |
CN107203441A (zh) * | 2017-08-01 | 2017-09-26 | 常州昊云工控科技有限公司 | 双备份数据存储装置及其工作方法、机器人 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781031A (zh) * | 2019-09-25 | 2020-02-11 | 潍柴动力股份有限公司 | 控制器数据恢复方法、装置、控制器及汽车 |
CN110781031B (zh) * | 2019-09-25 | 2022-04-26 | 潍柴动力股份有限公司 | 控制器数据恢复方法、装置、控制器及汽车 |
CN112579384B (zh) * | 2019-09-27 | 2023-07-04 | 杭州海康威视数字技术股份有限公司 | 一种sas域的节点监控方法、装置、系统及节点 |
CN113341924A (zh) * | 2021-06-09 | 2021-09-03 | 中国第一汽车股份有限公司 | 一种ecu下电方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108646982B (zh) | 一种基于ubifs的数据自动修复方法及装置 | |
KR101636870B1 (ko) | 최소 부트 이미지의 생성 방법 및 장치 | |
CN111752487B (zh) | 一种数据恢复方法、装置及固态硬盘 | |
US10061655B2 (en) | Volatile cache reconstruction after power failure | |
US8448023B2 (en) | Approach for data integrity in an embedded device environment | |
CN101231604B (zh) | 用于集群服务器数据的卷级恢复的设备、系统及方法 | |
JP2006527423A (ja) | コンピュータオペレーションシステムの修復方法 | |
CN108762987A (zh) | 用于双备份单片机闪存的数据恢复方法及装置 | |
CN107918568B (zh) | 一种防止Linux系统重启失败的方法 | |
CN109508148B (zh) | 一种元数据重建方法、装置和计算机可读存储介质 | |
CN113626256B (zh) | 一种虚拟机磁盘数据备份方法、装置、终端及存储介质 | |
US20060259814A1 (en) | Method and system for optimizing testing of memory stores | |
CN110618892B (zh) | 一种固态硬盘的bug定位方法、装置、电子设备及介质 | |
JP2014120179A (ja) | 停電障害状況におけるイベントトレース情報の復旧 | |
CN110333971A (zh) | Ssd坏块表备份方法、装置、计算机设备及存储介质 | |
JP2012079100A (ja) | ディスク制御装置及びディスク制御方法、並びにプログラム | |
CN104598328A (zh) | 一种文件系统修复方法、装置及系统 | |
CN110515767A (zh) | 快照数据备份方法、装置、设备及可读存储介质 | |
CN113360312A (zh) | 一种硬盘故障处理方法、装置、设备及存储介质 | |
CN104424115A (zh) | 恢复电子设备的预设状态的方法、存储装置和电子设备 | |
JP2013257679A (ja) | 情報処理装置および方法、並びに、プログラム | |
CN115309591B (zh) | 一种全闪存储系统的恢复方法及相关装置 | |
CN102308287B (zh) | 电子设备的复制文件系统 | |
CN113821377B (zh) | 一种分布式存储集群的数据恢复方法、系统及存储介质 | |
CN105550066A (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: 20181106 |