闪存数据保护方法、装置、电子设备及存储介质与流程

文档序号:23891907发布日期:2021-02-09 12:17阅读:52来源:国知局
闪存数据保护方法、装置、电子设备及存储介质与流程

[0001]
本申请涉及数据处理技术领域,具体涉及闪存数据保护方法、装置、电子设备及存储介质。


背景技术:

[0002]
闪存因成本价格低,操作简易,已大量应用于各种嵌入式产品中。但是因其生产工艺特点,在断电过程中,电压低于2.7伏的情况下,对闪存进行擦除和写入时,会出现闪存向电荷井注入电荷的过程出错,导致写入的数据为非期望的数据,而原始数据又被擦除无法恢复的问题。
[0003]
在嵌入式产品的系统中,经常需要一些用于监控和分析的实时数据,如果数据异常,会导致程序判断不及时,以至于出现各种异常的状况。目前对于闪存数据的安全保护,经常使用一直对闪存写入重要数据的方式,如根据预设的时间周期,将重要数据反复写入闪存中。由于多次反复的写入和擦除,严重损耗闪存的使用寿命,又同时由于多次写入,需要从大量数据中检索出最后一次写入的数据也异常困难。


技术实现要素:

[0004]
鉴于上述问题,针对断电时写入闪存数据过程中,数据易丢失的问题提出了本申请以便提供一种闪存数据保存方法、装置、电子设备及存储介质,以克服上述问题或者至少部分地解决上述问题。
[0005]
根据本申请的一方面,提供了一种闪存数据保护方法,包括:
[0006]
为待写入数据分配存储区域,所述存储区域为所述闪存的非连续的三个不同页;
[0007]
计算所述待写入数据的校验值并记为初始校验值,将所述待写入数据和所述初始校验值一同依次写入所述三个不同页中;
[0008]
在对已写入数据进行读取时,按照写入的顺序依次读取所述三个不同页的已写入数据,并使用所述初始校验值校验当前读取页的已写入数据是否为有效数据,在确定所述当前读取页的已写入数据是有效数据时,则将所述当前读取页的已写入数据作为最终的数据使用;在确定所述当前读取页的已写入数据是无效数据时,再读取下一页的已写入数据并校验,直到所述三个不同页的已写入数据均被读取并校验;
[0009]
在确定所述三个不同页的已写入数据全部是无效数据时,根据所述三个不同页的已写入数据进行数据恢复并校验恢复数据是否为有效数据。
[0010]
根据本申请的另一方面,提供了一种闪存数据保护装置,包括:
[0011]
存储区域分配单元,用于为待写入数据分配存储区域,所述存储区域为所述闪存的非连续的三个不同页;
[0012]
写入单元,用于计算所述待写入数据的校验值并记为初始校验值,将所述待写入数据和所述初始校验值一同依次写入所述三个不同页中;
[0013]
读取及校验单元,用于在对已写入数据进行读取时,按照写入的顺序依次读取所
述三个不同页的已写入数据,并使用所述初始校验值校验当前读取页的已写入数据是否为有效数据,在确定所述当前读取页的已写入数据是有效数据时,则将所述当前读取页的已写入数据作为最终的数据使用;在确定所述当前读取页的已写入数据是无效数据时,再读取下一页的已写入数据并校验,直到所述三个不同页的已写入数据均被读取并校验;
[0014]
数据恢复及校验单元,用于在确定所述三个不同页的已写入数据全部是无效数据时,根据所述三个不同页的已写入数据进行数据恢复并校验恢复数据是否为有效数据。
[0015]
根据本申请的又一方面,提供了一种电子设备,该电子设备包括:处理器;以及被安排成存储计算机可执行指令的闪存存储器,所述可执行指令在被所述处理器执行时,实现上述任一所述的闪存数据保护方法。
[0016]
根据本申请的再一方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现上述任一所述的闪存数据保护方法。
[0017]
本申请的有益效果是:
[0018]
本申请提供的闪存数据保护方法,在写入数据时,为待写入数据分配非连续的三个不同页的存储区域,并将数据和初始校验值一同依次写在闪存的三个不同页内,在一页或两页的数据发生丢失后,还有备份数据,以防止数据丢失或损坏;在读取数据时,按照写入的顺序依次读取这三个不同页的已写入数据,通过对当前读取页的已写入数据重新计算校验值,并根据与初始校验值的一致性来校验当前读取页的已写入数据是否为有效数据,以保证读取到的数据的可靠性和正确性;在确定这三个不同页的已写入数据全部均为无效数据时,根据这三个不同页上的已写入数据进行数据恢复并校验恢复数据是否为有效数据,从而在所有写入页的数据均无效的情况下仍然能够有可能恢复数据,极大程度上避免了数据的彻底丢失或损坏。本申请提供的闪存数据保护方法,写入速度快,能有效避免数据在写入闪存时易发生丢失或损坏的情况,且数据读取过程严谨,保证了读取到的数据的安全、可靠及准确,并且在所有写入页的数据均无效的情况下,仍然有可能恢复数据。
[0019]
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
[0020]
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0021]
图1示出了根据本申请一个实施例的闪存数据保护方法的流程示意图;
[0022]
图2示出了根据本申请另一个实施例的闪存数据保护方法的流程示意图;
[0023]
图3示出了根据本申请一个实施例的闪存数据保护装置的结构示意图;
[0024]
图4示出了根据本申请一个实施例的电子设备的结构示意图。
具体实施方式
[0025]
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请
的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
[0026]
闪存又称flash存储器,主要有两种:nor flash和nand flash。nand flash内部结构是用与非门组成存储单元的,具有非易失性、读写速度快、容量大额特点;nor flash也有非易失性,随机存储速度比nand flash快得多。所以通常将nor flash用做内存片,或者叫做数据缓冲,而nand flash则通常用来做存储数据用,比方说,u盘、mp3等。
[0027]
本申请的构思在于,针对闪存数据在写入过程中,一旦发生断电数据易发生丢失的情况,提供了一种闪存数据保护方法,通过将待写入数据及其校验值一同写在闪存的不同的三页中,在读取时,依次重新计算不同页的校验值,并与存储在不同页的校验值进行对比,在校验值一致的情况下,确定该页的已写入数据是有效数据。这样在不同页中的部分页的数据丢失或出现错误时,仍然有备份数据可用,以防止数据丢失,同时,读取方法也保障了数据的可靠性和准确性。且在所有页的数据均无效的情况下,根据不同页上的已写入数据进行数据恢复和验证,最大程度上避免了数据的丢失或损坏。
[0028]
本申请提供的闪存数据保护方法在上述两种闪存中均适用,且由于nor flash通常用于存储程序代码并直接在闪存内运行,比较适合频繁随机读写的场合,因此本申请提供的闪存数据保护方法更适合于nor flash中。
[0029]
图1示出了根据本申请一个实施例的闪存数据保护方法的流程示意图,该方法包括:
[0030]
步骤s110:为待写入数据分配存储区域,该存储区域为闪存的非连续的三个不同页。
[0031]
闪存的基本存储单元是页(page),容量越大的闪存,页数越多,且单页的容量越大。每一页的容量决定了可以传输的数据量,因此大容量内存的页有更好的性能。
[0032]
在本申请中,首先在闪存中为待写入数据分配要写入的存储区域,闪存的存储区域可以看成一本书,由若干页组成,本申请将待写入数据分别写入闪存的三个不同页内,这里依次记为第一页、第二页和第三页。
[0033]
上述写入的三个不同页为不连续的,这是由于如果三个不同页紧邻或者间隔太近,在对闪存进行擦除或写入操作过程中受到断电等干扰时,可能会误操作,把这三页数据全部丢失。
[0034]
步骤s120:计算待写入数据的校验值并记为初始校验值,将待写入数据和初始校验值一同依次写入三个不同页中。
[0035]
在数据传输、写入或读取的过程中,无论传输、写入或读取的设计再怎么完美,差错总会存在,这种差错可能会导致在链路上传输的一个或者多个帧被破坏,如出现比特差错,0变为1,或者1变为0的情况,从而使数据出现错误。本申请中为尽量提高数据的正确率,在对闪存中写入数据时,同时计算待写入数据的校验值,将校验值和待写入数据一起写入闪存中,以便在读取数据时通过对比校验值来校验闪存中的已写入数据是否有效。
[0036]
根据预设算法计算待写入数据的校验值,在将待写入数据写入闪存中时,通常将待写入数据进行二值化,即转化为一串二进制数值,根据预设算法,计算上述一串二进制数值可得一校验值,如将所有二进制数值进行加和得一数值,该数值即为校验值。当然,在实
际中,预设算法较为复杂和可靠,如奇偶校验方法、因特网校验等方法。本申请推荐使用循环冗余校验(cyclic redundancy check,crc)算法,循环冗余校验是一种根据网络数据包或计算机文件等数据产生简短固定位数校验值的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误,它是利用除法及余数的原理来进行错误侦测的。
[0037]
在得到待写入数据的初始校验值后,将待写入数据和其初始校验值一同依次写入闪存的不同三页上,不同三页可记为第一页、第二页和第三页中。由此可知,在第一页、第二页和第三页的数据没有出现错误的情况下,上述三页之间的数据应该是完全一致的。这样的写入数据的方法,即使其中一页或两页上的数据丢失或出现错误,仍然有备份使用,可极大程度上防止了数据丢失或出现差错。
[0038]
步骤s130:在对已写入数据进行读取时,按照写入的顺序依次读取三个不同页的已写入数据,并使用初始校验值校验当前读取页的已写入数据是否为有效数据,在确定当前读取页的已写入数据是有效数据时,则将当前读取页的已写入数据作为最终的数据使用;在确定当前读取页的已写入数据是无效数据时,再读取下一页的已写入数据并校验,直到三个不同页的已写入数据均被读取并校验。。
[0039]
在对已写入数据进行读取时,按照写入的顺序依次读取各页上的已写入数据,在本实施例中,具体的,依次读取第一页、第二页和第三页上的已写入数据,首先校验第一页上的已写入数据是否为有效数据,在第一页上的已写入数据为有效数据的情况下,将第一页上的已写入数据作为最终的数据使用;在第一页上的已写入数据为无效数据的情况下,读取第二页上的已写入数据,并判断第二页上的已写入数据是否为有效数据,在第二页上的已写入数据为有效数据的情况下,将第二页上的已写入数据作为最终的数据使用;在第二页上的已写入数据为无效数据的情况下,读取第三页上的已写入数据,在第三页上的已写入数据为有效数据的情况下,将第三页上的已写入数据作为最终的数据使用;在第三页上的已写入数据也为无效数据的情况下,确定三个不同页上的已写入数据均为无效数据。
[0040]
步骤s140:在确定三个不同页的已写入数据全部是无效数据时,根据三个不同页的已写入数据进行数据恢复并校验恢复数据是否为有效数据。
[0041]
若三个不同页的已写入数据中有一页上的已写入数据为有效数据,则无需执行该步骤。
[0042]
在确定三个不同页的已写入数据全部是无效数据时,不仅根据三个不同页的已写入数据进行数据恢复,还校验所得到的恢复数据是否为有效数据,以保证恢复数据的可靠性和正确性,且极大程度上避免了数据的彻底丢失或损坏。
[0043]
由图1所述的方法可以看出,本申请提供的闪存数据保护方法,在写入数据时,为待写入数据分配非连续的三个不同页的存储区域,并将数据和初始校验值一同依次写在闪存的三个不同页内,在一页或两页的数据发生丢失后,还有备份数据,以防止数据丢失或损坏;在读取数据时,按照写入的顺序依次读取这三个不同页的已写入数据,通过对当前读取页的已写入数据重新计算校验值,并根据与初始校验值的一致性来校验当前读取页的已写入数据是否为有效数据,以保证读取到的数据的可靠性和正确性;在确定这三个不同页的已写入数据全部均为无效数据时,根据这三个不同页上的已写入数据进行数据恢复并校验恢复数据是否为有效数据,从而在所有写入页的数据均无效的情况下仍然能够有可能恢复数据,极大程度上避免了数据的彻底丢失或损坏。本申请提供的闪存数据保护方法,写入速
度快,能有效避免数据在写入闪存时易发生丢失或损坏的情况,且数据读取过程严谨,保证了读取到的数据的安全、可靠及准确,并且在所有写入页的数据均无效的情况下,仍然有可能恢复数据。
[0044]
在本申请的一些实施例中,上述步骤s130包括:
[0045]
将三个不同页分别记为第一页、第二页和第三页,首先读取第一页的已写入数据和初始校验值,并计算第一页的已写入数据的校验值并记为第一校验值;校验第一校验值与初始校验值是否一致,若校验值一致,则确定第一页的已写入数据是有效数据,并核对第二页和第三页的已写入数据与第一页的已写入数据是否一致,若一致,则不做处理,若不一致,则使用第一页的已写入数据覆盖第二页和/或第三页的已写入数据;若校验值不一致,则确定第一页的已写入数据是无效数据。
[0046]
在确定第一页的已写入数据是无效数据的情况下,还包括:读取第二页的已写入数据和所述初始校验值,并计算第二页的已写入数据的校验值并记为第二校验值;校验第二校验值与初始校验值是否一致,若校验值一致,则确定第二页的已写入数据是有效数据,并使用第二页的已写入数据覆盖第一页的已写入数据,以及核对第三页的已写入数据与第二页的已写入数据是否一致,若一致,则不做处理,若不一致,则使用第二页的已写入数据覆盖第三页的已写入数据;若校验值不一致,则确定第二页的已写入数据也是无效数据。
[0047]
在确定第二页的已写入数据也是无效数据的情况下,还包括:读取第三页的已写入数据和初始校验值,并计算第三页的已写入数据的校验值并记为第三校验值;校验第三校验值与初始校验值是否一致,若校验值一致,则确定第三页的已写入数据是有效数据,并使用第三页的已写入数据覆盖第一页和第二页的已写入数据;若校验值不一致,则确定第三页的已写入数据也是无效数据。
[0048]
在本实施例中,在读取已写入数据时,按照写入的顺序依次读取各页上的已写入数据,并对已写入数据根据校验值进行校验,以确保读取到的数据的正确性和可靠性。
[0049]
具体的,在对已写入数据进行读取时,首先,读取第一页的已写入数据以及初始校验值,并计算第一页的已写入数据的校验值并记为第一校验值,这里的第一页的已写入数据的校验值的计算方法与写入时初始校验值的计算方法一致,具体的计算过程不再赘述,将得到的校验值记为第一校验值。
[0050]
在得到第一校验值后,则根据第一校验值和初始校验值来校验第一页的已写入数据是否为有效数据。具体的,校验第一校验值与初始校验值是否一致,若校验值一致,则确定第一页的已写入数据是有效数据,若校验值不一致,则确定第一页的已写入数据是无效数据。
[0051]
在第一页数据为有效数据的情况下,还需要对第二页和第三页的已写入数据分别核对是否与第一页上的已写入数据一致,以保证每页上的已写入数据均为有效数据。具体的,核对第二页和第三页的已写入数据与第一页的已写入数据是否一致,若第二页和第三页的已写入数据均与第一页的已写入数据一致,则对第二页和第三页的已写入数据不做处理;若第二页的已写入数据与第一页的已写入数据不一致,而第三页的已写入数据与第一页的已写入数据一致,则使用第一页的已写入数据仅覆盖第二页的已写入数据,而对第三页的已写入数据不做处理;若第二页的已写入数据与第一页的已写入数据一致,第三页的已写入数据与第一页的已写入数据不一致,则使用第一页的已写入数据仅覆盖第三页的已
写入数据,而对第二页的已写入数据不做处理;若第二页以及第三页的已写入数据与第一页的已写入数据均不一致,则使用第一页的已写入数据分别覆盖第二页和第三页的已写入数据。这样保证了三个不同页的已写入数据在发生数据读取时仍均为有效数据。
[0052]
在第一页的已写入数据为无效数据的情况下,需要再读取第二页的已写入数据,并校验第二页上的已写入数据是否为有效数据。
[0053]
具体的,在确定第一页的已写入数据是无效数据的情况下,先读取第二页的已写入数据和初始校验值,并计算第二页的已写入数据的校验值并记为第二校验值;第二校验值的算法与初始校验值的算法一致,这里不再赘述。
[0054]
对比第二校验值与初始校验值是否一致,若一致,则确定第二页的已写入数据是有效数据。由于此时已确定第一页的已写入数据为无效数据,因此,第一页的已写入数据与第二页的已写入数据必然不一致,这里直接使用第二页的已写入数据覆盖第一页的已写入数据。
[0055]
对于第三页的已写入数据,根据与第二页的已写入数据的一致性情况来处理,具体的,核对第三页的已写入数据与第二页的已写入数据是否一致,若一致,则不做处理;若不一致,则使用第二页的已写入数据覆盖第三页的已写入数据。
[0056]
在确定第二页的已写入数据也是无效数据的情况下,再确定第三页的已写入数据是否为有效数据,具体手段与确定第一页和第二页的已写入数据是否为有效数据的方法一致,不再赘述。
[0057]
在确定第三页的已写入数据是有效数据的情况下,由于此时已确定第一页和第二页的已写入数据为无效数据,因此,第一页和第二页的已写入数据与第三页的已写入数据必然不一致,这里是直接使用第三页的已写入数据覆盖第一页和第二页的已写入数据。
[0058]
在本申请的一些实施例中,上述步骤s130包括:
[0059]
对三个不同页的已写入数据逐个比特位进行比较,根据多数法则确定出每个比特位上的数值,得到恢复数据;以及对三个不同页的初始校验值逐个比特位进行比较,根据多数法则确定出每个比特位上的数值,得到恢复校验值;计算恢复数据的校验值并记为验证校验值,校验验证校验值与恢复校验值是否一致,若一致,则确定恢复数据是有效数据,并使用恢复数据覆盖三个不同页的已写入数据;若不一致,则确定恢复数据是无效数据,并舍弃恢复数据。
[0060]
上述实施例提供了一种数据恢复方法,以供三个不同页的已写入数据全部是无效数据的情况下应急使用。首先,获得恢复数据和恢复校验值,具体的,对三个不同页的已写入数据逐个比特位进行比较,根据多数法则确定出每个比特位上的数值,得到恢复数据;以及对三个不同页的初始校验值逐个比特位进行比较,根据多数法则确定出每个比特位上的数值,得到恢复校验值。如某一个比特位,第一页的数据为0,第二页的数据为0,第三页的数据为1,则确定该比特位上的数据为0。将三个不同页上的所有比特位上的数据逐一进行比对,得到恢复数据和恢复校验值。
[0061]
在得到恢复数据和恢复校验值后,还要对恢复数据进行校验,以确定恢复数据是否为有效数据。具体的,计算恢复数据的校验值并记为验证校验值,计算验证校验值与计算初始校验值的算法一致,对比验证校验值与恢复校验值的一致性,若一致,则确定恢复数据是有效数据,并使用恢复数据覆盖三个不同页的已写入数据;若不一致,则确定恢复数据是
无效数据,并舍弃恢复数据。
[0062]
需要说明的是,为了避免三个不同页的间隔太近,在闪存通讯受到断电等干扰时,可能导致传入闪存中的操作地址出现错误,造成这三个不同页上的数据全部丢失的隐患,可将这三个不同页设计为跨越比较大的存储区域。因此在上述的闪存数据保护方法中,三个不同页之间的页数间隔大于等于预设页数。例如,可设置三个不同页之间的页数间隔大于等于预设页数,预设页数优选为20页以上,如三个不同页可为第1页,第21页,第45页。
[0063]
图2示出了根据本申请另一个实施例的闪存数据保护方法的流程示意图,该方法包括:
[0064]
步骤s210:为待写入数据分配存储区域,存储区域为闪存的非连续的三个不同页,分别记为第一页、第二页和第三页。
[0065]
步骤s220:计算待写入数据的校验值并记为初始校验值,将待写入数据和所述初始校验值一同依次写入所述第一页、第二页和第三页中。
[0066]
步骤s230:在对已写入数据进行读取时,首先读取第一页的已写入数据以及初始校验值,并计算第一页的已写入数据的校验值并记为第一校验值,并校验第一校验值与初始校验值是否一致。
[0067]
步骤s231:在确定第一校验值与初始校验值一致的情况下,确定第一页的已写入数据是有效数据,并核对第二页和第三页的已写入数据与第一页的已写入数据是否一致,若一致,则不做处理,若不一致,则使用第一页的已写入数据覆盖第二页和/或第三页的已写入数据。
[0068]
步骤s240:在确定第一校验值与初始校验值不一致的情况下,确定第一页上的已写入数据是无效数据,读取第二页的已写入数据和初始校验值,并计算第二页的已写入数据的校验值并记为第二校验值;校验第二校验值与初始校验值是否一致。
[0069]
步骤s241:在确定第二校验值与初始校验值一致的情况下,确定第二页的已写入数据是有效数据,并使用第二页的已写入数据覆盖第一页的已写入数据,以及核对第三页的已写入数据与第二页的已写入数据是否一致,若一致,则不做处理,若不一致,则使用第二页的已写入数据覆盖第三页的已写入数据。
[0070]
步骤s250:在确定第二校验值与初始校验值不一致的情况下,确定第二页上的已写入数据是无效数据,读取第三页的已写入数据和初始校验值,并计算第三页的已写入数据的校验值并记为第三校验值;校验第三校验值与初始校验值是否一致。
[0071]
步骤s251:在确定第三校验值与初始校验值一致的情况下,确定第三页的已写入数据是有效数据,并使用第三页的已写入数据覆盖第一页和第二页的已写入数据。
[0072]
步骤s260:在确定第三校验值与初始校验值不一致的情况下,确定第三页上的已写入数据是无效数据,进入数据恢复程序,具体的,对三个不同页的已写入数据逐个比特位进行比较,根据多数法则确定出每个比特位上的数值,得到恢复数据;以及对三个不同页的初始校验值逐个比特位进行比较,根据多数法则确定出每个比特位上的数值,得到恢复校验值。
[0073]
步骤s270:计算恢复数据的校验值并记为验证校验值,校验验证校验值与恢复校验值是否一致。
[0074]
步骤s271:若验证校验值与恢复校验值一致,则确定恢复数据是有效数据,并使用
恢复数据覆盖所述三个不同页的已写入数据。
[0075]
步骤s272:若验证校验值与恢复校验值不一致,则确定恢复数据是无效数据,并舍弃恢复数据。
[0076]
图3示出了根据本申请一个实施例的闪存数据保护装置300的结构示意图,该装置300包括:
[0077]
存储区域分配单元310,用于为待写入数据分配存储区域,所述存储区域为所述闪存的非连续的三个不同页。
[0078]
写入单元320,用于计算待写入数据的校验值并记为初始校验值,将所述待写入数据和所述初始校验值一同依次写入所述三个不同页中。
[0079]
读取及校验单元330,用于在对已写入数据进行读取时,按照写入的顺序依次读取三个不同页的已写入数据,并使用初始校验值校验当前读取页的已写入数据是否为有效数据,在确定当前读取页的已写入数据是有效数据时,则将当前读取页的已写入数据作为最终的数据使用;在确定当前读取页的已写入数据是无效数据时,再读取下一页的已写入数据并校验,直到三个不同页的已写入数据均被读取并校验。
[0080]
数据恢复及校验单元340,用于在确定三个不同页的已写入数据全部是无效数据时,根据三个不同页的已写入数据进行数据恢复并校验恢复数据是否为有效数据。
[0081]
在本申请的一些实施例中,上述读取及校验单元330包括:
[0082]
第一页读取模块,用于将三个不同页分别记为第一页、第二页和第三页,在对已写入数据进行读取时,首先读取第一页的已写入数据以及初始校验值,并计算第一页的已写入数据的校验值并记为第一校验值;
[0083]
第一页校验模块,用于校验第一校验值与初始校验值是否一致,若校验值一致,则确定第一页的已写入数据是有效数据,并核对第二页和第三页的已写入数据与第一页的已写入数据是否一致,若一致,则不做处理,若不一致,则使用第一页的已写入数据覆盖第二页和/或所述第三页的已写入数据;若校验值不一致,则确定第一页的已写入数据是无效数据;
[0084]
第二页读取模块,用于在确定第一页的已写入数据是无效数据的情况下,读取第二页的已写入数据和初始校验值,并计算第二页的已写入数据的校验值并记为第二校验值;
[0085]
第二页校验模块,用于校验第二校验值与初始校验值是否一致,若校验值一致,则确定第二页的已写入数据是有效数据,并使用第二页的已写入数据覆盖第一页的已写入数据,以及核对第三页的已写入数据与第二页的已写入数据是否一致,若一致,则不做处理,若不一致,则使用第二页的已写入数据覆盖第三页的已写入数据;若校验值不一致,则确定第二页的已写入数据也是无效数据;
[0086]
第三页读取模块,用于在确定第二页的已写入数据也是无效数据的情况下,读取第三页的已写入数据和初始校验值,并计算第三页的已写入数据的校验值并记为第三校验值;
[0087]
第三页校验模块,用于校验第三校验值与初始校验值是否一致,若校验值一致,则确定第三页的已写入数据是有效数据,并使用第三页的已写入数据覆盖第一页和第二页的已写入数据;若校验值不一致,则确定第三页的已写入数据也是无效数据。
[0088]
在本申请的一些实施例中,上述数据恢复及校验单元340包括:
[0089]
数据恢复模块,用于在确定三个不同页的已写入数据全部是无效数据的情况下,对三个不同页的已写入数据逐个比特位进行比较,根据多数法则确定出每个比特位上的数值,得到恢复数据;以及对三个不同页的初始校验值逐个比特位进行比较,根据多数法则确定出每个比特位上的数值,得到恢复校验值;
[0090]
恢复数据校验模块,用于计算恢复数据的校验值并记为验证校验值,校验验证校验值与恢复校验值是否一致,若一致,则确定恢复数据是有效数据,并使用恢复数据覆盖三个不同页的已写入数据;若不一致,则确定恢复数据是无效数据,并舍弃恢复数据。
[0091]
需要说明的是,上述各装置实施例的具体实施方式可以参照前述对应方法实施例的具体实施方式进行,在此不再赘述。
[0092]
图4示意了电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括闪存存储器和处理器,可选地还包括接口模块、通信模块等。当然,该电子设备还可能包括其他业务所需要的硬件。
[0093]
处理器、接口模块、通信模块和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0094]
闪存存储器,用于存放计算机可执行指令。闪存存储器通过内部总线向处理器提供计算机可执行指令。
[0095]
处理器,执行闪存存储器所存放的计算机可执行指令,并具体用于实现以下操作:
[0096]
为待写入数据分配存储区域,存储区域为闪存的非连续的三个不同页;
[0097]
计算待写入数据的校验值并记为初始校验值,将待写入数据和初始校验值一同依次写入三个不同页中;
[0098]
在对已写入数据进行读取时,按照写入的顺序依次读取三个不同页的已写入数据,并使用初始校验值校验当前读取页的已写入数据是否为有效数据,在确定当前读取页的已写入数据是有效数据时,则将当前读取页的已写入数据作为最终的数据使用;在确定当前读取页的已写入数据是无效数据时,再读取下一页的已写入数据并校验,直到三个不同页的已写入数据均被读取并校验;
[0099]
在确定三个不同页的已写入数据全部是无效数据时,根据三个不同页的已写入数据进行数据恢复并校验恢复数据是否为有效数据。
[0100]
上述如本申请图3所示实施例揭示的闪存数据保护装置执行的功能可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分
立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块位于闪存存储器中,处理器读取闪存存储器中的信息,结合其硬件完成上述方法的步骤。
[0101]
该电子设备还可执行图1或图2中闪存数据保护方法执行的步骤,并实现闪存数据保护方法在图1或图2所示实施例的功能,本申请实施例在此不再赘述。
[0102]
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序当被处理器执行时,实现前述的闪存数据保护方法,并具体用于执行:
[0103]
为待写入数据分配存储区域,存储区域为所述闪存的非连续的三个不同页;
[0104]
计算待写入数据的校验值并记为初始校验值,将待写入数据和初始校验值一同依次写入所述三个不同页中;
[0105]
在对已写入数据进行读取时,按照写入的顺序依次读取三个不同页的已写入数据,并使用初始校验值校验当前读取页的已写入数据是否为有效数据,在确定当前读取页的已写入数据是有效数据时,则将当前读取页的已写入数据作为最终的数据使用;在确定当前读取页的已写入数据是无效数据时,再读取下一页的已写入数据并校验,直到三个不同页的已写入数据均被读取并校验;
[0106]
在确定三个不同页的已写入数据全部是无效数据时,根据三个不同页的已写入数据进行数据恢复并校验恢复数据是否为有效数据。
[0107]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0108]
本申请是根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0109]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0110]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0111]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0112]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0113]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0114]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0115]
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其特征在于包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0116]
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1