数据读写控制方法和装置转让专利

申请号 : CN202010622963.0

文献号 : CN111796967A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杜翼徐胜松常嘉航许笑天

申请人 : 北京经纬恒润科技有限公司

摘要 :

本发明实施例提供数据读写控制方法和装置。在本发明实施例中,引入了校验信息,将包括数据信息和校验信息的数据包存储于m个存储地址中互相备份。在读取时,会对相互关联互为备份的m个数据包均进行校验操作和有效标志位设置操作。对于每一数据包,若校验操作通过,将其有效标志位设置为第一取值,否则,将其有效标志位设置为第二取值。若存在有效标志位为第一取值且数据信息一致的数据包,表明有可靠的数据包,可使用可靠的数据包中的数据对不可靠数据包(异常数据包)中的数据进行恢复。而若仅存在一个有效标志位为第一取值的数据包,则使用该数据包对其他相关联的数据包所对应的存储地址进行数据恢复。

权利要求 :

1.一种数据读写控制方法,其特征在于,用于对非易失性存储器NVM进行数据读写控制;在所述NVM中,同一原始数据的数据信息及其校验信息以数据包的形式存储于m个存储地址中;m为不小于3的正整数;所述方法包括:接收读取请求;所述读取请求包括读取地址;

对m个目标数据包进行校验操作及有效标志位设置操作;其中,所述m个目标数据包包括:所述读取地址对应的数据包,以及与所述读取地址相关联的m-1个数据包;所述校验操作包括:使用所述目标数据包中的校验信息对所述目标数据包中对应的数据信息进行校验;所述有效标志位设置操作包括:若所述校验操作通过,将所述目标数据包的有效标志位设置为第一取值,否则,将所述目标数据包的有效标志位设置为第二取值;所述目标数据包对应的存储地址为目标存储地址;

若所述m个目标数据包中存在多个有效标志位为第一取值的数据包,选取其中数据信息一致的目标数据包,基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复;所述异常数据包包括:有效标志位为第二取值的目标数据包,或有效标志位为第一取值但其数据信息与所选取的目标数据包的数据信息不一致的数据包;所选取的目标数据包中任一数据包的数据信息为最终读取结果;

若所述m个目标数据包中仅存在一个有效标志位为第一取值的目标数据包,使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复;所述仅存的有效标志位为第一取值的目标数据包中的数据信息为最终读取结果。

2.如权利要求1所述的方法,其特征在于,还包括:

若所述m个目标数据包的有效标志位均为第二取值或者有效标志位为第一取值的目标数据包之间的数据信息均不一致,使用默认值对所述m个目标存储地址进行数据恢复;所述默认值为最终读取结果。

3.如权利要求1或2所述的方法,其特征在于,所述使用默认值对所述m个目标存储地址进行数据恢复包括:计算所述默认值的校验信息;

将所述默认值及其校验信息组成数据包,存至所述m个目标存储地址中。

4.如权利要求1所述的方法,其特征在于,

所述基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复包括:将所选取的目标数据包存至所述异常数据包所对应的目标存储地址中;

所述使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复包括:将仅存的有效标志位为第一取值的目标数据包,存至其他目标数据包所对应的目标存储地址。

5.如权利要求1所述的方法,其特征在于,所述校验信息为CRC校验信息,所述校验操作为CRC校验操作。

6.一种数据读写控制装置,其特征在于,用于对非易失性存储器NVM进行数据读写控制;在所述NVM中,同一原始数据的数据信息及其校验信息以数据包的形式存储于m个存储地址中;m为不小于3的正整数;所述装置包括:读取模块,所述读取模块包括:

接收单元,用于:

接收读取请求;所述读取请求包括读取地址;

校验单元,用于:

对m个目标数据包进行校验操作及有效标志位设置操作;其中,所述m个目标数据包包括:所述读取地址对应的数据包,以及与所述读取地址相关联的m-1个数据包;所述校验操作包括:使用所述目标数据包中的校验信息对所述目标数据包中的数据信息进行校验;所述有效标志位设置操作包括:若所述校验操作通过,将所述目标数据包的有效标志位设置为第一取值,否则,将所述目标数据包的有效标志位设置为第二取值;所述m个目标数据包对应的存储地址为目标存储地址;

数据恢复单元,用于:

若所述m个目标数据包中存在多个有效标志位为第一取值的数据包,选取其中数据信息一致的目标数据包,基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复;所述异常数据包包括:有效标志位为第二取值的目标数据包,或有效标志位为第一取值但其数据信息与所选取的目标数据包的数据信息不一致的数据包;所选取的目标数据包中任一数据包的数据信息为最终读取结果;

若所述m个目标数据包中仅存在一个有效标志位为第一取值的目标数据包,使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复;所述仅存的有效标志位为第一取值的目标数据包中的数据信息为最终读取结果。

7.如权利要求6所述的装置,其特征在于,所述数据恢复单元还用于:若所述m个目标数据包的有效标志位均为第二取值或者有效标志位为第一取值的目标数据包之间的数据信息不一致,使用默认值对所述m个目标存储地址进行数据恢复;所述默认值为最终读取结果。

8.如权利要求7所述的装置,其特征在于,在所述使用默认值对所述m个目标存储地址进行数据恢复的方面,所述数据恢复单元具体用于:计算所述默认值的校验信息;

将所述默认值及其校验信息组成数据包,存至所述m个目标存储地址中。

9.如权利要求6所述的装置,其特征在于,

在所述基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复的方面,所述数据恢复单元具体用于:将所选取的目标数据包存至所述异常数据包所对应的目标存储地址中;

在所述使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复的方面,所述数据恢复单元具体用于:将仅存的有效标志位为第一取值的目标数据包,存至其他目标数据包所对应的目标存储地址。

说明书 :

数据读写控制方法和装置

技术领域

[0001] 本发明涉及嵌入式系统技术领域,特别涉及数据读写控制方法和装置。

背景技术

[0002] 现有的嵌入式系统中对数据存储时,只是将数据直接写入NVM(Non-Volatile Memory,非易失性存储器)中。这样,当存储的数据出现损坏时,系统不具备自恢复功能,这样就影响了嵌入式系统的数据可靠性。

发明内容

[0003] 有鉴于此,本发明实施例提供数据读写控制方法和装置,以提高嵌入式系统的数据可靠性。
[0004] 为实现上述目的,本发明实施例提供如下技术方案:
[0005] 一种数据读写控制方法,用于对非易失性存储器NVM进行数据读写控制;在所述NVM中,同一原始数据的数据信息及其校验信息以数据包的形式存储于m个存储地址中;m为不小于3的正整数;
[0006] 接收读取请求;所述读取请求至少包括读取地址;
[0007] 对m个目标数据包进行校验操作及有效标志位设置操作;其中,所述m个目标数据包包括:所述读取地址对应的数据包,以及与所述读取地址相关联的m-1个数据包;所述校验操作包括:使用所述目标数据包中的校验信息对所述目标数据包中的数据信息进行校验;所述有效标志位设置操作包括:若所述校验操作通过,将所述目标数据包的有效标志位设置为第一取值,否则,将所述目标数据包的有效标志位设置为第二取值;所述m个目标数据包对应的存储地址为目标存储地址;
[0008] 若所述m个目标数据包中存在多个有效标志位为第一取值的数据包,选取其中数据信息一致的目标数据包,基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复;所述异常数据包包括:有效标志位为第二取值的目标数据包,或有效标志位为第一取值但其数据信息与所选取的目标数据包的数据信息不一致的数据包;所选取的目标数据包中任一数据包的数据信息为最终读取结果;
[0009] 若所述m个目标数据包中仅存在一个有效标志位为第一取值的目标数据包,使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复;所述仅存的有效标志位为第一取值的目标数据包中的数据信息为最终读取结果。
[0010] 可选的,还包括:若所述m个目标数据包的有效标志位均为第二取值或者有效标志位为第一取值的目标数据包之间的数据信息不一致,使用默认值对所述m个目标存储地址进行数据恢复;所述默认值为最终读取结果。
[0011] 可选的,所述使用默认值对所述m个目标存储地址进行数据恢复包括:计算所述默认值的校验信息;将所述默认值及其校验信息组成数据包,存至所述m个目标存储地址中。
[0012] 可选的,所述基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复包括:将所选取的目标数据包存至所述异常数据包所对应的目标存储地址中;所述使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复包括:将仅存的有效标志位为第一取值的目标数据包,存至其他目标数据包所对应的目标存储地址。
[0013] 可选的,所述校验信息为CRC校验信息,所述校验操作为CRC校验操作。
[0014] 一种数据读写控制装置,用于对非易失性存储器NVM进行数据读写控制;在所述NVM中,同一原始数据的数据信息及其校验信息以数据包的形式存储于m个存储地址中;m为不小于3的正整数;
[0015] 包括读取模块和写入模块,所述读取模块包括:
[0016] 接收单元,用于:
[0017] 接收读取请求;所述读取请求至少包括读取地址;
[0018] 校验单元,用于:
[0019] 对m个目标数据包进行校验操作及有效标志位设置操作;其中,所述m个目标数据包包括:所述读取地址对应的数据包,以及与所述读取地址相关联的m-1个数据包;所述校验操作包括:使用所述目标数据包中的校验信息对所述目标数据包中的数据信息进行校验;所述有效标志位设置操作包括:若所述校验操作通过,将所述目标数据包的有效标志位设置为第一取值,否则,将所述目标数据包的有效标志位设置为第二取值;所述m个目标数据包对应的存储地址为目标存储地址;
[0020] 数据恢复单元,用于:
[0021] 若所述m个目标数据包中存在多个有效标志位为第一取值的数据包,选取其中数据信息一致的目标数据包,基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复;所述异常数据包包括:有效标志位为第二取值的目标数据包,或有效标志位为第一取值但其数据信息与所选取的目标数据包的数据信息不一致的数据包;所选取的目标数据包中任一数据包的数据信息为最终读取结果;
[0022] 若所述m个目标数据包中仅存在一个有效标志位为第一取值的目标数据包,使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复;所述仅存的有效标志位为第一取值的目标数据包中的数据信息为最终读取结果。
[0023] 可选的,所述数据恢复单元还用于:若所述m个目标数据包的有效标志位均为第二取值或者有效标志位为第一取值的目标数据包之间的数据信息不一致,使用默认值对所述m个目标存储地址进行数据恢复;所述默认值为最终读取结果。
[0024] 可选的,在所述使用默认值对所述m个目标存储地址进行数据恢复的方面,所述数据恢复单元具体用于:计算所述默认值的校验信息;将所述默认值及其校验信息组成数据包,存至所述m个目标存储地址中。
[0025] 可选的,在所述基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复的方面,所述数据恢复单元具体用于:将所选取的目标数据包存至所述异常数据包所对应的目标存储地址中;在所述使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复的方面,所述数据恢复单元具体用于:将仅存的有效标志位为第一取值的目标数据包,存至其他目标数据包所对应的目标存储地址。
[0026] 可见,在本发明实施例中,引入了校验信息,将包括数据信息和校验信息的数据包存储于m个存储地址中互相备份。在读取时,会对相互关联互为备份的m个数据包均进行校验操作和有效标志位设置操作。若存在有效标志位为第一取值且数据信息一致的数据包,表明有可靠的数据包(有效数据包),可使用可靠的数据包中的数据对不可靠数据包(异常数据包)中的数据进行恢复。

附图说明

[0027] 图1为本发明实施例提供的数据读写控制方法在存储时的一种示例性流程;
[0028] 图2为本发明实施例提供的在读取数据时进行自恢复的示例性流程;
[0029] 图3-图6为本发明实施例提供的示例性处理流程;
[0030] 图7为本发明实施例提供的数据读取时的示例性流程;
[0031] 图8为本发明实施例提供的数据读取时的另一示例性流程;
[0032] 图9为本发明实施例提供的数据读写控制装置的一种示例性结构。

具体实施方式

[0033] 本发明提供数据读写控制方法和装置,以提高嵌入式系统的数据可靠性。
[0034] 上述数据读写控制装置具体可为嵌入式系统中的主控芯片。
[0035] 本发明得以执行的前提是,在NVM(非易失性存储器)中,同一数据信息及其校验信息以数据包的形式存储于m个存储地址中。m为不小于3的正整数。
[0036] 需要说明的是,NVM存储时,会记录数据信息所存放的存储地址。
[0037] 图1示出了上述数据读写控制装置所执行的数据读写控制方法在存储时的一种示例性流程,包括:
[0038] S1:计算数据信息的校验信息。
[0039] 具体的,上述校验信息具体可为CRC(Cyclic Redundancy Check)码、LDPC(Low Density Parity Check Code,低密度奇偶校验码)等。
[0040] 以CRC校验为例,可将数据信息(nByte)和CRC码(1Byte)组成一个整体的数据包。
[0041] 上述n表示任意长度。
[0042] S2:将上述数据信息和上述校验信息组成数据包,分别存储于NVM中的m个存储地址中。
[0043] 这样,同一原始数据的数据信息及校验信息会以数据包的形式存储于m个存储地址中。
[0044] 本领域技术人员可灵活设计数据包的格式,在此不作赘述。
[0045] m为不小于3的正整数。
[0046] 在一个示例中,m取值为3,m个存储地址以AddressA、AddressB、AddressC表示。一般来说,当数据没有出现损坏的情况下,三个data是都一致的,三个CRC也是都一致的。
[0047] 需要说明的是,如m取2,则数据信息不一致时不具有自恢复功能,因为不知哪个是正确的。从功能实现和空间节省的角度考虑,本示例取m=3,当然,m可取4个或者更多,本发明不做限制。
[0048] 上述存储地址,可以是任意三个存储地址即可。但如果这三个存储地址隔得比较远,则其同时损坏的概率就会降低,因此,这三个存储地址可分别位于不同的扇区(sector)中。
[0049] S3:数据存储完成。
[0050] 为了提高嵌入式系统的数据可靠性,在读取数据时,系统可具有自恢复功能。请参见图2,其可包括如下示例性流程:
[0051] S20:接收读取请求。
[0052] 读取请求中至少包括读取地址和长度。假定其为Address A。
[0053] S21:对m个目标数据包进行校验操作及有效标志位设置操作;
[0054] 前已述及,在存储时,同一原始数据的数据信息和校验信息以数据包形式存储在m个不同的存储地址。
[0055] 相应的,这里m个目标数据包就包括:读取请求中读取地址对应的数据包,以及与该读取地址相关联的m-1个数据包。
[0056] 在m=3的情况下,即读取3个目标数据包。
[0057] 假定读取地址为AddressA,AddressA与AddressB、Address C相关联,则分别读取AddressA、AddressB、Address C中的目标数据包。
[0058] 可将目标数据包的存储地址称为目标存储地址。
[0059] 在校验时,可使用目标数据包中的校验信息对目标数据包中的数据信息进行校验。以AddressA为例,假定该地址中的目标数据包可拆分成数据信息Data_1和校验信息CRC_1,则可使用Data_1和CRC_1进行CRC校验。
[0060] 具体的,可使用Data_1数据作为输入,利用与存储时所采用的同一CRC算法进行计算,将计算结果与CRC_1比较。一致则校验通过(OK),不一致则NG(NotGood)。
[0061] 相应的,若校验操作通过,将目标数据包的有效标志位设置为第一取值(例如1、Valid等),否则,将目标数据包的有效标志位设置为第二取值(例如0、Invalid等)。
[0062] 假定三个目标数据包有效标志位分别为Flag_1~Flag_3,其校验操作结果分别为OK、NG、OK,则其取值分别为:Flag_1=Valid,Flag_2=Invalid,Flag_3=Valid。
[0063] 若m个目标数据包有效标志位均为第一取值,且数据一致。则可选择其中一目标数据包中的数据信息作为最终读取结果。在此种情况下,是不需要进行数据自恢复的。
[0064] 而在其他情况下,则可进行数据自恢复。
[0065] 例如,若m个目标数据包中存在多个有效标志位为第一取值的数据包,选取其中数据信息一致的目标数据包,基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复。
[0066] 其中,异常数据包包括:有效标志位为第二取值的目标数据包,或有效标志位为第一取值但其数据信息与所选取的目标数据包的数据信息不一致的数据包。
[0067] 优选的,可选取其中数据信息一致数据最多的目标数据包,对导致数据包进行数据恢复。
[0068] 举例来讲,假定同一原始数据对应7个数据包,有效标志位均为第一取值,其中,3个目标数据包中的数据信息一致(假定其为A),另4个目标数据包中的数据信息一致(假定其为B)。则可选择4个目标数据包中的数据信息对另3个目标数据包进行数据恢复。
[0069] 再例如,若m个目标数据包中仅存在一个有效标志位为第一取值的目标数据包,则可使用该仅存的有效标志位为第一取值的目标数据包,对其他目标数据包所对应的目标存储地址进行数据恢复;当然,在此情况下,上述仅存的有效标志位为第一取值的目标数据包中的数据信息为最终读取结果。
[0070] 再例如,m个目标数据包的有效标志位均为第二取值或者有效标志位为第一取值的目标数据包之间的数据信息均不一致,则使用默认值对这m个目标存储地址进行数据恢复,而默认值即为最终读取结果。
[0071] 以m=3为例,上述几种情况可使用如下步骤实现:
[0072] S22:判断m个有效标志位是否均为Valid?若是,进入处理流程A(Process A),若否,进入S23;
[0073] S23:判断是否两个有效标志位均为Valid?若是,进入处理流程B(Process B),若否,进入S24;
[0074] S24:判断是否有一个有效标志位均为Valid?若是,进入处理流程C(Process C),若否,进入处理流程D(Process D)。
[0075] 其中,请参见图3,Process A包括:
[0076] S31:判断是否存在数据信息一致的目标数据包,若是,进入S32,否则,进入S34;
[0077] S32:选取其中数据信息一致的目标数据包,对异常数据包所对应的目标存储地址进行数据恢复;
[0078] 在本步骤里,由于m个标志位均为Valid,则异常数据包包括:有效标志位为第二取值的目标数据包,或者,有效标志位为第一取值但与所选取的目标数据包的数据信息不一致的数据包。
[0079] 需要说明的是,对于m=3而言,在“存在数据信息一致的目标数据包”的前提下,“有效标志位为第二取值的目标数据包”,与“有效标志位为第一取值但与所选取的目标数据包的数据信息不一致的数据包”是不会同时存在的。
[0080] 而若m>3,例如前述的m=7,则“有效标志位为第二取值的目标数据包”,与“有效标志位为第一取值但与所选取的目标数据包的数据信息不一致的数据包”是有同时存在的可能性的。
[0081] S33:将选取的目标数据包的数据信息确定为最终读取结果。
[0082] S34:若目标数据包之间的数据信息不一致,使用默认值对所述m个目标存储地址进行数据恢复。
[0083] 默认值一般可系统功能来设置。默认值的使用,能够令系统处于安全运动状态。
[0084] 举例来讲,数据包中的数据信息是开关状态信息,用于表征开或关的状态。默认值的选取应能保证,采用该默认值后,开关所在系统处于安全状态。
[0085] S35:将默认值确定为最终读取结果。
[0086] 请参见图4,Process B包括:
[0087] S41:判断有效标志位为第一取值的两目标数据包数据信息是否一致;若是,进入步骤S42,若否进入步骤S44;
[0088] 举例来讲,假定有效标志位为第一取值的两目标数据包包括数据包1和数据包2,其中的数据信息分别为Data_1和Data_2,若Data_1和Data_2相同,进入S42,否则,进入S44。
[0089] S42:选取上述两目标数据包中的任一数据包,对异常数据包所对应的目标存储地址进行数据恢复。
[0090] 例如,可选取数据包1对异常数据包所对应的目标存储地址进行数据恢复。
[0091] 此时,异常数据包包括有效标志位为第二取值的数据包。
[0092] S43:将选取的数据包的数据信息确定为最终读取结果;
[0093] 例如,将Data_1确定为最终读取结果。
[0094] S44:使用默认值对m个目标存储地址进行数据恢复。
[0095] S45:将默认值确定为最终读取结果。
[0096] 默认值请参见前述介绍,在此不作赘述。
[0097] 请参见图5,Process C包括:
[0098] S51:使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复。
[0099] 具体的,可将仅存的有效标志位为第一取值的目标数据包,存至其他目标数据包所对应的目标存储地址。
[0100] 假定仅数据包1的有效标志位为第一取值,则将数据包1存至其他目标数据包所对应的目标存储地址。
[0101] S52:将上述仅存的有效标志位为第一取值的目标数据包中的数据信息确定为最终读取结果。
[0102] 沿用前例,将数据包中的数据信息确定为最终读取结果。
[0103] 在本发明其他实施例中,Process C也可包括:使用默认值对m个目标存储地址进行数据恢复。
[0104] 请参见图6,Process D包括:
[0105] S61:使用默认值对m个目标存储地址进行数据恢复。
[0106] 具体的,可计算默认值的校验信息,再将默认值及其校验信息组成数据包,存至m个目标存储地址中。
[0107] 默认值请参见前述介绍,在此不作赘述。
[0108] S62:将默认值确定为最终读取结果。
[0109] Process A-D可总结如图7所示。
[0110] 可见,在本发明实施例中,引入了校验信息,将包括数据信息和校验信息的数据包存储于m个存储地址中互相备份。在读取时,会对相互关联互为备份的m个数据包均进行校验操作和有效标志位设置操作。若所有的有效标志位均为第二取值或有效标志位为第一取值的目标数据包之间的数据信息不一致,表明互为备份的m个数据包的信息都不可靠,此时,可使用默认值进行数据恢复。若存在有效标志位为第一取值且数据信息一致的至少两个数据包,表明有可靠的数据包(有效数据包),可使用可靠的数据包中的数据对不可靠数据包(异常数据包)中的数据进行恢复。
[0111] 下面以存储时,相同的数据包存至Address A至Address C为例,介绍更详细的读取过程。
[0112] 在本实施例的读取过程中,省略了接收读取请求(读取地址是Address A)的步骤,读取过程可包括:
[0113] S81:从NVM的Address A地址读出数据包1,进行CRC校验,并根据CRC校验结果设置数据包的有效标志位的取值。
[0114] 具体的,将数据包1拆分成第一数据信息(Data_1)和第一校验信息(CRC_1)。可使用Data_1数据作为输入,利用与存储时所采用的同一CRC算法进行计算,将计算结果与CRC_1比较。一致则校验通过(OK),不一致则NG。
[0115] 如果校验通过,则设置数据包1的有效标志位Flag_1=Valid,否则,设置Flag_1=Invalid。
[0116] S82:从NVM的Address B地址读出数据包2,进行CRC校验,并根据CRC校验结果设置数据包2的有效标志位的取值。
[0117] 具体的,将数据包2拆分成第一数据信息(Data_2)和第二校验信息(CRC_2)。可使用Data_2数据作为输入,利用与存储时所采用的同一CRC算法进行计算,将计算结果与CRC_2比较。一致则校验通过(OK),不一致则NG。
[0118] 如果校验通过,则设置数据包2的有效标志位Flag_2=Valid,否则,设置Flag_2=Invalid。
[0119] S83:从NVM的Address C地址读出数据包3,进行CRC校验,并根据CRC校验结果设置数据包3的有效标志位的取值。
[0120] 具体的,将数据包3拆分成第一数据信息(Data_3)和第二校验信息(CRC_3)。可使用Data_3数据作为输入,利用与存储时所采用的同一CRC算法进行计算,将计算结果与CRC_3比较。一致则校验通过(OK),不一致则NG。
[0121] 如果校验通过,则设置数据包3的有效标志位Flag_3=Valid,否则,设置Flag_3=Invalid。
[0122] S84:比对三个数据包的有效标志位,若均为Valid,则跳转至S85,若三个数据包中有两个有效标志位是Valid,一个是Invalid,则跳转至S815。若三个数据包中有一个有效标志位是Valid,两个是Invalid,则跳转至S818。若果三个数据包的有效标志位均为Invalid,则跳转至S820。
[0123] S85:比较Data_1和Data_2,如果完全一致,跳转至S86。如果数据不一致,则跳转至S89。
[0124] S86:认为数据包1数值合理,供嵌入式系统的后续使用,令DataRead=Data_1。
[0125] 也即,Data_1为最终读取结果。
[0126] 当然,也可令DataRead=Data_2。
[0127] S87:比较Data_1和Data_3(或者比较Data_2和Data_3),如果完全一致,跳转至S821。如果数据不一致,则跳转至S88。
[0128] S88:恢复异常数据包,跳转至S821
[0129] 在本步骤中,异常数据包为数据包3。可将Data_1和CRC_1组成数据包,存入到NVM的Addres C,对数据包3进行恢复。
[0130] S89:比较Data_1和Data_3,如果完全一致,跳转至S810。如果数据不一致,则跳转至S812。
[0131] S810:认为数据包1数值合理,供嵌入式系统的后续使用,令DataRead=Data_1,跳转至S811。
[0132] S811:恢复异常数据包,跳转至S821。
[0133] 在本步骤中,异常数据包为数据包2,。可将Data_1和CRC_1组成数据包,存入到NVM的Addres B。
[0134] S812:比较Data_2和Data_3,如果完全一致,跳转至S813。如果数据不一致,则跳转至S820。
[0135] S813:认为数据包2数值合理,供嵌入式系统的后续使用,DataRead=Data_2。跳转至S814。
[0136] S814:恢复异常数据包,跳转至S821。
[0137] 在本步骤中,数据包1为异常数据包,可将Data_2和CRC_2组成数据包,存入到NVM的Addres A。
[0138] S815:如果三个数据包中有两个有效标志位是Valid,一个是Invalid。以Flag_1=Valid,Flag_2=Valid,Flag_3=Invalid为例进行后续分析。比较Data_1和Data_2,如果完全一致,跳转至S816。如果数据不一致,则跳转至S820。
[0139] S816:认为数据包1数值合理,供嵌入式系统的后续使用,DataRead=Data_1。跳转至S817。
[0140] S817:恢复异常数据包。跳转至S821。
[0141] 具体的,异常数据包包括数据包3。可将Data_1和CRC_1组成数据包,存入到NVM的Addres C,以对数据包3进行恢复。
[0142] S818:如果三个数据包中有一个有效标志位是Valid,两个是Invalid。我们以Flag_1=Valid,Flag_2=Invalid,Flag_3=Invalid为例进行后续分析。认为数据包1数值合理,供嵌入式系统的后续使用,DataRead=Data_1。跳转至S819。
[0143] S819:恢复异常数据包,跳转至S821。
[0144] 具体的,异常数据包包括数据包2和数据包3。可将Data_1和CRC_1组成数据包,存入到NVM的Addres B,Address C中。
[0145] S820:嵌入式系统无法从NVM获取正确的数值,嵌入式系统使用预设默认值,并且使用默认值,对NVM的三块数据进行恢复。数据读取完毕。
[0146] S821:嵌入式系统可以从NVM获得正确的数值。数据读取完毕。
[0147] 本发明还要求保护一种数据读写控制装置,用于对NVM进行数据读写控制;在上述NVM中,同一数据信息及其校验信息以数据包的形式存储于m个存储地址中;m为不小于3的正整数。
[0148] 图9示出了数据读写控制装置的一种示例性结构,包括:读取模块1和写入模块2。
[0149] 其中,读取模块1包括:接收单元11、校验单元12和数据恢复单元13。
[0150] 写入模块2包括:校验信息单元21和写入单元22。
[0151] 具体的:
[0152] 接收单元11,用于:
[0153] 接收读取请求;读取请求至少包括读取地址;
[0154] 校验单元12,用于:
[0155] 对m个目标数据包进行校验操作及有效标志位设置操作;其中,m个目标数据包包括:读取地址对应的数据包,以及与读取地址相关联的m-1个数据包;校验操作包括:使用目标数据包中的校验信息对目标数据包中的数据信息进行校验;有效标志位设置操作包括:若校验操作通过,将目标数据包的有效标志位设置为第一取值,否则,将目标数据包的有效标志位设置为第二取值;m个目标数据包对应的存储地址为目标存储地址;
[0156] 数据恢复单元13,用于:
[0157] 若m个目标数据包中存在多个有效标志位为第一取值的数据包,选取其中数据信息一致的目标数据包,基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复;异常数据包包括:有效标志位为第二取值的目标数据包,或有效标志位为第一取值但其数据信息与所选取的目标数据包的数据信息不一致的数据包;所选取的目标数据包中任一数据包的数据信息为最终读取结果;
[0158] 若m个目标数据包中仅存在一个有效标志位为第一取值的目标数据包,使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复;仅存的有效标志位为第一取值的目标数据包中的数据信息为最终读取结果。
[0159] 具体描述请参见本文前述记载,在此不作赘述。
[0160] 在一个示例中,上述数据恢复单元13还用于:
[0161] 若m个目标数据包的有效标志位均为第二取值或者有效标志位为第一取值的目标数据包之间的数据信息不一致,使用默认值对上述m个目标存储地址进行数据恢复;
[0162] 上述默认值为最终读取结果。
[0163] 在存储时,校验信息计算单元21,用于:计算数据信息的校验信息;
[0164] 写入单元22,用于:
[0165] 将数据信息和校验信息组成数据包;
[0166] 将数据包存储于NVM中的m个存储地址中。
[0167] 具体描述请参见本文前述记载,在此不作赘述。
[0168] 在本发明其他实施例中,在使用默认值对m个目标存储地址进行数据恢复的方面,上述数据恢复单元13具体用于:
[0169] 计算默认值的校验信息;
[0170] 将默认值及其校验信息组成数据包,存至m个目标存储地址中。
[0171] 具体描述请参见本文前述记载,在此不作赘述。
[0172] 在本发明其他实施例中,在基于所选取的目标数据包对异常数据包所对应的目标存储地址进行数据恢复的方面,上述数据恢复单元13具体用于:
[0173] 将所选取的目标数据包,存至异常数据包所对应的目标存储地址中。
[0174] 具体描述请参见本文前述记载,在此不作赘述。
[0175] 在本发明其他实施例中,在使用仅存的有效标志位为第一取值的目标数据包对其他目标数据包所对应的目标存储地址进行数据恢复的方面,上述数据恢复单元13具体用于:
[0176] 将仅存的有效标志位为第一取值的目标数据包,存至其他目标数据包所对应的目标存储地址。
[0177] 具体描述请参见本文前述记载,在此不作赘述。
[0178] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及模型步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0179] 结合本文中所公开的实施例描述的方法或模型的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、WD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0180] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。