一种因掉电而损坏的闪存数据的恢复方法及系统与流程

文档序号:13760282阅读:528来源:国知局
一种因掉电而损坏的闪存数据的恢复方法及系统与流程

本发明涉及数据存储技术领域,公开了一种因掉电而损坏的闪存数据的恢复方法及系统。



背景技术:

存储器是当前电子信息领域相当重要的元件,主要用于保存系统中的数据信息,闪存(Flash Memory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位,区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,闪存与EEPROM不同的是,EEPROM能在字节水平上进行删除和重写而不是整个芯片擦写,而闪存的大部分芯片需要块擦除。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本程序)、PDA(个人数字助理)、数码相机中保存资料等,目前闪存技术高速发展,闪存存取比较快速,无噪音,散热小,但其基本读写方式却未改变,以块为单位擦除,而且必须经擦除之后才能写入数据,因为闪存的这个特性,一般是以块为单位进行闪存的数据存储。

嵌入式计算机系统中,一般都会采用闪存(Flash Memory)芯片来保存配置数据,这些配置数据或高或低频度需要擦写,闪存的存储空间是由N个块区组成,最小擦写单位是一个块区;在执行擦写块区数据的过程中突发设备掉电,会导致正在擦写的块区数据损坏而又无法恢复的问题。

因此,针对上述缺陷,现有技术还有待于改进和发展。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种因掉电而损坏的闪存数据的恢复方法及系统,旨在通过当因掉电中断了数据擦写流程并且损坏数据时,读取所述第N块区备份的原始数据写入数据损坏的块区来恢复因掉电而损坏的闪存数据,方便用户对数据的写入和存储。

本发明解决技术问题所采用的技术方案如下:

一种因掉电而损坏的闪存数据的恢复方法,其中,包括:

步骤A,预先将闪存的存储空间按照访问地址由小到大编号为1-N个可擦写的块区,将第N-1块区和第N块区分别设置为记录和备份的额外固定块区,第1块区至第N-2块区为进行擦写操作的目标块区;

步骤B,当在擦写所述目标块区时,记录正在擦写的目标块区的操作信息到所述第N-1块区,并且将所述目标块区的原始数据备份到所述第N块区;

步骤C,擦写完成后,当系统启动闪存初始化时,读取擦除操作信息判断擦写流程是否因掉电而中断,当因掉电中断了数据擦写流程并且损坏数据时,读取所述第N块区备份的原始数据写入数据损坏的块区来恢复因掉电而损坏的闪存数据。

所述因掉电而损坏的闪存数据的恢复方法,其中,所述目标块区的操作信息包括:目标块区的位置编号i、目标块区的原始数据校验值、目标块区新写入数据的校验值以及操作信息的自身校验值。

所述因掉电而损坏的闪存数据的恢复方法,其中,所述目标块区的位置编号i包括第1块区至第N-2块区中的任意块区,所述校验值采用MD5算法计算得到,用来校验数据的正确性。

所述因掉电而损坏的闪存数据的恢复方法,其中,所述步骤C还包括:

当系统启动闪存初始化时,读取第N-1块区记录的擦写操作信息,计算擦写操作信息的校验值,如果所述校验值不等于擦写操作信息中的自身校验值,判断出擦写目标块区时没有发生掉电中断损坏数据,则退出数据恢复流程。

所述因掉电而损坏的闪存数据的恢复方法,其中,所述步骤C具体包括:

C1,根据操作信息记录的目标块区位置编号i,读取第i块区的数据,计算所述数据的校验值,如果所述校验值等于操作信息中记录的原始数据校验值或新写入数据的校验值,判断出掉电中断了数据擦写流程但没有损坏数据,则退出数据恢复流程;

C2,根据操作信息记录的目标块区位置编号i,读取第i块区的数据,计算所述数据的校验值,如果所述校验值不等于操作信息中记录的原始数据校验值或新写入数据的校验值,判断出掉电中断了数据擦写流程而且损坏了数据,则开启数据恢复流程;

C3,当开启数据恢复流程后,读取所述第N块区备份的原始数据,将所述数据写入到第i块区,从而恢复损坏了的第i块区的数据,并且清空第N-1块区记录的目标块区的操作信息。

一种因掉电而损坏的闪存数据的恢复系统,其中,包括:

预先设置模块,用于预先将闪存的存储空间按照访问地址由小到大编号为1-N个可擦写的块区,将第N-1块区和第N块区分别设置为记录和备份的额外固定块区,第1块区至第N-2块区为进行擦写操作的目标块区;

记录备份模块,用于当在擦写所述目标块区时,记录正在擦写的目标块区的操作信息到所述第N-1块区,并且将所述目标块区的原始数据备份到所述第N块区;

数据恢复模块,用于擦写完成后,当系统启动闪存初始化时,读取擦除操作信息判断擦写流程是否因掉电而中断,当因掉电中断了数据擦写流程并且损坏数据时,读取所述第N块区备份的原始数据写入数据损坏的块区来恢复因掉电而损坏的闪存数据。

所述因掉电而损坏的闪存数据的恢复系统,其中,所述记录备份模块中目标块区的操作信息包括:目标块区的位置编号i、目标块区的原始数据校验值、目标块区新写入数据的校验值以及操作信息的自身校验值。

所述因掉电而损坏的闪存数据的恢复系统,其中,所述目标块区的位置编号i包括第1块区至第N-2块区中的任意块区,所述校验值采用MD5算法计算得到,用来校验数据的正确性。

所述因掉电而损坏的闪存数据的恢复系统,其中,所述数据恢复模块还包括:

第一判断单元,用于当系统启动闪存初始化时,读取第N-1块区记录的擦写操作信息,计算擦写操作信息的校验值,如果所述校验值不等于擦写操作信息中的自身校验值,判断出擦写目标块区时没有发生掉电中断损坏数据,则退出数据恢复流程。

所述因掉电而损坏的闪存数据的恢复系统,其中,所述数据恢复模块具体包括:

第二判断单元,用于根据操作信息记录的目标块区位置编号i,读取第i块区的数据,计算所述数据的校验值,如果所述校验值等于操作信息中记录的原始数据校验值或新写入数据的校验值,判断出掉电中断了数据擦写流程但没有损坏数据,则退出数据恢复流程;

第三判断单元,用于根据操作信息记录的目标块区位置编号i,读取第i块区的数据,计算所述数据的校验值,如果所述校验值不等于操作信息中记录的原始数据校验值或新写入数据的校验值,判断出掉电中断了数据擦写流程而且损坏了数据,则开启数据恢复流程;

恢复清空单元,用于当开启数据恢复流程后,读取所述第N块区备份的原始数据,将所述数据写入到第i块区,从而恢复损坏了的第i块区的数据,并且清空第N-1块区记录的目标块区的操作信息。

本发明公开了一种因掉电而损坏的闪存数据的恢复方法及系统,方法包括:预先将闪存的存储空间按照访问地址由小到大编号为1-N个可擦写的块区,将第N-1块区和第N块区分别设置为记录和备份的额外固定块区,第1块区至第N-2块区为进行擦写操作的目标块区;当在擦写所述目标块区时,记录正在擦写的目标块区的操作信息到所述第N-1块区,并且将所述目标块区的原始数据备份到所述第N块区;擦写完成后,当系统启动闪存初始化时,读取擦除操作信息判断擦写流程是否因掉电而中断,当因掉电中断了数据擦写流程并且损坏数据时,读取所述第N块区备份的原始数据写入数据损坏的块区来恢复因掉电而损坏的闪存数据。本发明不依赖其它器件,通过额外占用闪存两个块区,就能在系统重启时检测到掉电损坏的数据并恢复出原有数据,方便用户对数据的写入和存储。

附图说明

图1是本发明因掉电而损坏的闪存数据的恢复方法的较佳实施例的流程图。

图2是本发明因掉电而损坏的闪存数据的恢复系统的较佳实施例的功能原理框图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参阅图1,图1是本发明因掉电而损坏的闪存数据的恢复方法的较佳实施例的流程图。

如图1所示,本发明实施例提供的一种因掉电而损坏的闪存数据的恢复方法,包括以下步骤:

步骤S100,预先将闪存的存储空间按照访问地址由小到大编号为1-N个可擦写的块区,将第N-1块区和第N块区分别设置为记录和备份的额外固定块区,第1块区至第N-2块区为进行擦写操作的目标块区。

本发明中,闪存的存储空间是由N个块区组成,最小擦写单位是一个块区,所以需要预先将闪存的存储空间按照访问地址由小到大编号为1-N个可擦写的块区,而一般的闪存在实际使用中会对所有的N个块区进行擦写操作,而本发明会提前将第N-1块区和第N块区预先分别设置为记录和备份的额外固定块区,而用来记录操作信息和备份原始数据,即这两个块区是不当做擦写来存储数据的,然后将剩下的第1块区至第N-2块区为进行擦写操作的目标块区。

步骤S200,当在擦写所述目标块区时,记录正在擦写的目标块区的操作信息到所述第N-1块区,并且将所述目标块区的原始数据备份到所述第N块区。

本发明中,如上述所说,将第N-1块区和第N块区预先分别设置为记录和备份的额外固定块区,将所述第N-1块区用来记录正在擦写的目标块区的操作信息,将所述第N块区用来备份所述目标块区的原始数据,意思就是在目标块区上进行擦写操作的同时,记录正在擦写的目标块区的操作信息到所述第N-1块区,并且将所述目标块区的原始数据备份到所述第N块区,可以当掉电中断了数据擦写流程并且损坏数据后来进行相关恢复闪存数据的操作。

另外,所述目标块区的操作信息包括:目标块区的位置编号i(所述位置编号i的大小为1-N-2,即目标块区在第1块区至第N-2块区的人一个块区)、目标块区的原始数据校验值、目标块区新写入数据的校验值以及操作信息的自身校验值。

所述校验值采用MD5(Message Digest Algorithm MD5:消息摘要算法第五版)算法计算得到,用来校验数据的正确性;MD5算法为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的;

2、容易计算:从原数据计算出MD5值很容易;

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别;

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

本发明使用MD5算法根据块区数据计算得到校验值,使用该校验值与保存的校验值进行比较来判断该块区的数据擦写是否因掉电而损坏。

步骤S300,擦写完成后,当系统启动闪存初始化时,读取擦除操作信息判断擦写流程是否因掉电而中断,当因掉电中断了数据擦写流程并且损坏数据时,读取所述第N块区备份的原始数据写入数据损坏的块区来恢复因掉电而损坏的闪存数据。

本发明中,所述步骤S300还包括:当系统启动闪存初始化时,读取第N-1块区记录的擦写操作信息,计算擦写操作信息的校验值,如果所述校验值不等于擦写操作信息中的自身校验值,判断出擦写目标块区时没有发生掉电中断损坏数据,则退出数据恢复流程。

所述步骤S300中当判断已经发生了掉电的情况,但是掉电后数据可能被损坏也可能没有被损坏,所以掉电后数据是否损坏也包括如下两种情况,具体包括:

情况一,当根据操作信息记录的目标块区位置编号i,读取第i块区的数据,计算所述数据的校验值,如果所述校验值等于操作信息中记录的原始数据校验值或新写入数据的校验值,判断出掉电中断了数据擦写流程但没有损坏数据,则退出数据恢复流程,即发生了掉电的情况,但是数据擦写流程没有损坏数据,所以不需要进行数据恢复;

情况二,当根据操作信息记录的目标块区位置编号i,读取第i块区的数据,计算所述数据的校验值,如果所述校验值不等于操作信息中记录的原始数据校验值或新写入数据的校验值,判断出掉电中断了数据擦写流程而且损坏了数据,则开启数据恢复流程,即发生了掉电的情况,同时数据擦写流程损坏了数据,所以需要进行数据恢复;

情况三,当开启数据恢复流程后,读取所述第N块区备份的原始数据,将所述数据写入到第i块区,因为备份的数据就是擦写流程时写入的数据,从而恢复损坏了的第i块区的数据,并且清空第N-1块区记录的目标块区的操作信息使之无效。

基于上述实施例,本发明还提供一种因掉电而损坏的闪存数据的恢复系统,请参阅图2,图2是本发明因掉电而损坏的闪存数据的恢复系统的较佳实施例的功能原理框图。

如图2所示,所述系统包括:

预先设置模块210,用于预先将闪存的存储空间按照访问地址由小到大编号为1-N个可擦写的块区,将第N-1块区和第N块区分别设置为记录和备份的额外固定块区,第1块区至第N-2块区为进行擦写操作的目标块区;具体如上所述。

记录备份模块220,用于当在擦写所述目标块区时,记录正在擦写的目标块区的操作信息到所述第N-1块区,并且将所述目标块区的原始数据备份到所述第N块区;具体如上所述。

数据恢复模块230,用于擦写完成后,当系统启动闪存初始化时,读取擦除操作信息判断擦写流程是否因掉电而中断,当因掉电中断了数据擦写流程并且损坏数据时,读取所述第N块区备份的原始数据写入数据损坏的块区来恢复因掉电而损坏的闪存数据;具体如上所述。

进一步地,所述因掉电而损坏的闪存数据的恢复系统,其中,所述记录备份模块中目标块区的操作信息包括:目标块区的位置编号i、目标块区的原始数据校验值、目标块区新写入数据的校验值以及操作信息的自身校验值;具体如上所述。

所述因掉电而损坏的闪存数据的恢复系统,其中,所述目标块区的位置编号i包括第1块区至第N-2块区中的任意块区,所述校验值采用MD5算法计算得到,用来校验数据的正确性;具体如上所述。

所述因掉电而损坏的闪存数据的恢复系统,其中,所述数据恢复模块还包括:

第一判断单元,用于当系统启动闪存初始化时,读取第N-1块区记录的擦写操作信息,计算擦写操作信息的校验值,如果所述校验值不等于擦写操作信息中的自身校验值,判断出擦写目标块区时没有发生掉电中断损坏数据,则退出数据恢复流程;具体如上所述。

所述因掉电而损坏的闪存数据的恢复系统,其中,所述数据恢复模块具体包括:

第二判断单元,用于根据操作信息记录的目标块区位置编号i,读取第i块区的数据,计算所述数据的校验值,如果所述校验值等于操作信息中记录的原始数据校验值或新写入数据的校验值,判断出掉电中断了数据擦写流程但没有损坏数据,则退出数据恢复流程;具体如上所述。

第三判断单元,用于根据操作信息记录的目标块区位置编号i,读取第i块区的数据,计算所述数据的校验值,如果所述校验值不等于操作信息中记录的原始数据校验值或新写入数据的校验值,判断出掉电中断了数据擦写流程而且损坏了数据,则开启数据恢复流程;具体如上所述。

恢复清空单元,用于当开启数据恢复流程后,读取所述第N块区备份的原始数据,将所述数据写入到第i块区,从而恢复损坏了的第i块区的数据,并且清空第N-1块区记录的目标块区的操作信息;具体如上所述。

综上所述,本发明公开了一种因掉电而损坏的闪存数据的恢复方法及系统,方法包括:预先将闪存的存储空间按照访问地址由小到大编号为1-N个可擦写的块区,将第N-1块区和第N块区分别设置为记录和备份的额外固定块区,第1块区至第N-2块区为进行擦写操作的目标块区;当在擦写所述目标块区时,记录正在擦写的目标块区的操作信息到所述第N-1块区,并且将所述目标块区的原始数据备份到所述第N块区;擦写完成后,当系统启动闪存初始化时,读取擦除操作信息判断擦写流程是否因掉电而中断,当因掉电中断了数据擦写流程并且损坏数据时,读取所述第N块区备份的原始数据写入数据损坏的块区来恢复因掉电而损坏的闪存数据。本发明不依赖其它器件,通过额外占用闪存两个块区,就能在系统重启时检测到掉电损坏的数据并恢复出原有数据,方便用户对数据的写入和存储。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1