本申请涉及数据纠错的,尤其涉及一种纠错码的确定方法、数据加载方法和装置。
背景技术:
1、目前嵌入式系统一般使用非易失存储器作为存储介质用于代码段或关键配置数据的保存。然而存储器中通常还存储处理器工作相关的配置等其它数据。通常,上述非易失存储器为flash。尽管固件(代码段)或关键配置数据一般很少更新,但受到flash中频繁更新的其它数据的影响,这些关键数据存在遭受损坏的风险。固件(代码段)或关键配置数据属于系统的关键数据,一旦发生损坏,会导致系统无法启动等严重后果。另外,flash受到温度、x射线辐射等因素也会偶尔发生少量的数据翻转。
2、数据损坏在一定条件下无法避免,为规避上述问题的发生,在现有技术中一般有两种方案:一种是双备份策略,另一种是纠错码。然而,双备份方法需要占用双倍的flash空间,当两个独立区域分别发生错误时,系统仍然无法启动。传统的纠错码方案纠错能力有限,针对指定大小的数据块连续校验数据,只能纠错该指定大小空间内1位或2位的错误。
3、针对上述技术问题,设计新的具有高纠错能力的纠错码方案以恢复数据并避免发生系统无法启动等严重后果,是亟待解决的技术问题。
技术实现思路
1、本申请的主要目的在于提供一种纠错码的确定方法、数据加载方法和装置,解决了现有技术中针对系统的关键数据发生损坏导致系统无法启动等严重后果没有有效解决方案的问题,能够提高数据纠错能力,满足系统数据恢复的要求,避免发生系统无法启动等严重后果的问题。
2、本申请提出了一种纠错码的确定方法,应用于非易失存储器,包括:
3、将预设数据中相距预设距离的位的数据划分为一个数据块;
4、分别计算每个所述数据块的子纠错码,将计算得到的全部子纠错码作为所述预设数据的纠错码。
5、在一个示例性的实施例中,所述将预设数据中相距预设距离的位的数据划分为一个数据块包括:
6、对于所述预设数据的第1位数据到第n位数据分别进行如下操作,以形成n个数据块:将该位数据,以及与该位数据相距k×n位的数据划分为一个数据块,其中k分别为从1到m减1中的每一个整数;其中,m为每个数据块的位数,大小为预设数据的总位数a除以n的结果向上取整后的数值。
7、在一个示例性的实施例中,当所述a能被所述n整除时,m为
8、当所述a不能被所述n整除时,m为所述纠错码的确定方法还包括:采用填充固定数据的方式对第n个数据块进行填充,使其大小达到m位。
9、在一个示例性的实施例中,在所述分别计算每个所述数据块的子纠错码,将计算得到的全部子纠错码作为所述预设数据的纠错码之后,所述方法还包括:
10、将所述预设数据和所述纠错码存储在所述非易失存储器中;
11、计算所述预设数据的所述纠错码的校验和,并将所述预设数据的所述纠错码的所述校验和存储在所述非易失存储器中。
12、在一个示例性的实施例中,所述n的初始取值为4096的整数倍,所述n的所述取值能进行配置或修改。
13、在一个示例性的实施例中,所述非易失存储器为非型闪存nor flash。
14、本申请提供了一种纠错码的确定装置,包括:处理器和存储器;存储器用于保存用于进行纠错码的确定方法的程序,处理器用于读取执行用于进行纠错码的确定方法的程序,进行如上述任一实施例的纠错码的确定方法。
15、本申请提出了一种数据加载方法,包括:
16、在对预设数据进行加载时,若所述预设数据的校验结果为错误,采用根据如上述任一实施例所述的纠错码的确定方法确定的所述纠错码,对所述预设数据进行纠错,更新所述预设数据,对所述更新后的预设数据进行加载。
17、在一个示例性的实施例中,所述数据加载方法还包括:
18、若所述预设数据的校验结果为正确,利用所述纠错码的校验和检查所述纠错码是否正确,若所述纠错码的检查结果为正确,则对所述预设数据执行加载;若所述纠错码的检查结果为错误,则重新计算并存储所述预设数据的纠错码和重新计算的纠错码的校验和,对所述预设数据执行加载。
19、在一个示例性的实施例中,在采用所述纠错码,对所述预设数据进行纠错之前,所述数据加载方法还包括:
20、利用所述纠错码的校验和检查所述纠错码是否正确,得到所述纠错码的检查结果;
21、采用所述纠错码,对所述预设数据进行纠错包括:
22、若所述纠错码的检查结果为正确,采用所述纠错码,对所述预设数据进行纠错。
23、本申请提供了一种数据加载装置,包括:处理器和存储器;存储器用于保存用于进行数据加载方法的程序,处理器用于读取执行用于进行数据加载方法的程序,进行如上述任一实施例的数据加载方法。
24、根据本申请实施例确定的纠错码不仅具有强大的数据纠错能力,可实现对连续n比特(n的数值可设置)数据损坏的数据恢复,而且具有极高的纠错稳定性,即使在纠错过程中断电导致数据丢失,在下次上电后仍可自动恢复,其能够满足系统数据恢复的要求,避免发生系统无法启动等严重后果的问题。
25、采用本申请实施例的数据加载方法对预设数据进行加载,当预设数据出现数据错误时,能够充分利用本申请实施例确定的纠错码的优势(强大的纠错能力和极高的纠错稳定性),对预设数据进行修复,最大程度地保证系统的正常启动。
26、本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
1.一种纠错码的确定方法,应用于非易失存储器,包括:
2.根据权利要求1所述的纠错码的确定方法,其特征在于,所述将预设数据中相距预设距离的位的数据划分为一个数据块包括:
3.根据权利要求2所述的纠错码的确定方法,其特征在于,
4.根据权利要求1所述的纠错码的确定方法,其特征在于,在所述分别计算每个所述数据块的子纠错码,将计算得到的全部子纠错码作为所述预设数据的纠错码之后,所述方法还包括:
5.根据权利要求1所述的纠错码的确定方法,其特征在于,所述n的初始取值为4096的整数倍,所述n的所述取值能进行配置或修改。
6.根据权利要求1所述的纠错码的确定方法,其特征在于,所述非易失存储器为非型闪存nor flash。
7.一种纠错码的确定装置,包括:处理器和存储器;
8.一种数据加载方法,包括:
9.根据权利要求8所述的数据加载方法,其特征在于,所述方法还包括:
10.根据权利要求8所述的数据加载方法,其特征在于,在采用所述纠错码,对所述预设数据进行纠错之前,所述方法还包括:
11.一种数据加载装置,包括:处理器和存储器;