CN110442473B - 一种非易失性数据存储方法、装置、电子设备及介质 - Google Patents
一种非易失性数据存储方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN110442473B CN110442473B CN201910711070.0A CN201910711070A CN110442473B CN 110442473 B CN110442473 B CN 110442473B CN 201910711070 A CN201910711070 A CN 201910711070A CN 110442473 B CN110442473 B CN 110442473B
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- check value
- cyclic redundancy
- redundancy check
- 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.)
- Active
Links
Images
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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供了一种非易失性数据存储方法、装置、电子设备及介质,该方法包括:对系统非易失性数据进行结构体整合;当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区。本申请实施例能有效防止嵌入式系统在异常掉电或异常重启时导致正在写入过程中的非易失性数据丢失或错误,进而提高系统的稳定性。
Description
技术领域
本申请涉及数据存储技术领域,尤其涉及一种非易失性数据存储方法、装置、电子设备及介质。
背景技术
随着计算机技术的发展,嵌入式系统被广泛应用于诸多领域中,常见的例如:工业控制、智能家居、交通管理等,它的组成包括嵌入式操作系统、嵌入式微处理器、硬件设备以及应用程序四个部分,主要用于对其他设备进行控制、监视或管理。然而,嵌入式系统在运行过程中不可避免的会遇到突发情况:异常掉电或者异常重启,在传统设计中,若这种情况正好发生在系统非易失性数据(配置参数、设置参数等)存储的写入过程中,极大可能会导致数据的丢失或者写入错误,进而降低系统的稳定性,甚至导致系统无法再次启动。
发明内容
本申请提出了一种非易失性数据存储方法、装置、电子设备及介质,能有效防止嵌入式系统在异常掉电或异常重启时导致正在写入过程中的非易失性数据丢失或错误,进而提高系统的稳定性。
本申请实施例第一方面提供了一种非易失性数据存储方法,该方法包括:
对系统非易失性数据进行结构体整合;
当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;
调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及
预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区。
在一种可能的实施方式中,所述方法还包括:
当系统后续启动运行时,读取所述数据保存区内存储的数据,以对所述循环冗余校验值进行校验;
若校验通过则退出,若校验失败则读取所述数据备份区内存储的数据,以对所述循环冗余校验值进行校验;
若校验通过则退出,若校验失败则导入系统默认参数以完成系统启动运行。
在一种可能的实施方式中,所述重新生成循环冗余校验值,包括:
将所述结构体内更新变化后的非易失性数据依次划分为长度为n的多个子数据序列;
根据所述多个子数据序列重新生成循环冗余校验值。
在一种可能的实施方式中,所述根据所述多个子数据序列重新生成循环冗余校验值,包括:
针对所述多个子数据序列中的第一个子数据序列,采用直接生成法计算得到该第一个子数据序列的m位循环冗余校验值;
针对所述多个子数据序列中的第二个子数据序列,将该第二个子数据序列的前m位数据与该第一个子数据序列的m位循环冗余校验值进行异或运算,用异或运算的结果替换该第二个子数据序列的前m位数据,得到更新的第二个子数据序列,采用直接生成法计算得到该更新的第二个子数据序列的m位循环冗余校验值;
重复以上步骤直到得到所述多个子数据序列中更新的最后一个子数据序列,采用直接生成法计算得到该更新的最后一个子数据序列的m位循环冗余校验值,即得到重新生成的循环校验值。
在一种可能的实施方式中,所述数据保存区包括多个数据保存子分区;所述将包括有所述循环冗余校验值的所述结构体写入数据保存区,包括:
遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第一目标数据保存子分区;
将包括有所述循环冗余校验值的所述结构体写入所述第一目标数据保存子分区。
在一种可能的实施方式中,所述方法还包括:
检测所述第一目标数据保存子分区是否还有存储空间;
若所述第一目标数据保存子分区没有存储空间,则判断包括有所述循环冗余校验值的所述结构体是否已写入完成;若包括有所述循环冗余校验值的所述结构体已写入完成,则结束写入操作;若包括有所述循环冗余校验值的所述结构体未写入完成,则重新执行遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第二目标数据保存子分区;
将包括有所述循环冗余校验值的所述结构体未写入所述第一目标数据保存子分区的部分写入所述第二目标数据保存子分区。
本申请实施例第二方面提供了一种非易失性数据存储装置,该装置包括:
数据整合模块,用于对系统非易失性数据进行结构体整合;
校验值生成模块,用于当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;
第一写入模块,用于调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及
第二写入模块,用于预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区。
可选的,所述装置还包括:
第一校验模块,用于当系统后续启动运行时,读取所述数据保存区内存储的数据,以对所述循环冗余校验值进行校验;
第二校验模块,用于若校验通过则退出,若校验失败则读取所述数据备份区内存储的数据,以对所述循环冗余校验值进行校验;
参数导入模块,用于若校验通过则退出,若校验失败则导入系统默认参数以完成系统启动运行。
可选的,所述校验值生成模块,包括:
数据划分单元,用于将所述结构体内更新变化后的非易失性数据依次划分为长度为n的多个子数据序列;
校验值生成单元,用于根据所述多个子数据序列重新生成循环冗余校验值。
可选的,所述校验值生成单元,包括:
第一生成单元,用于针对所述多个子数据序列中的第一个子数据序列,采用直接生成法计算得到该第一个子数据序列的m位循环冗余校验值;
第二生成单元,用于针对所述多个子数据序列中的第二个子数据序列,将该第二个子数据序列的前m位数据与该第一个子数据序列的m位循环冗余校验值进行异或运算,用异或运算的结果替换该第二个子数据序列的前m位数据,得到更新的第二个子数据序列,采用直接生成法计算得到该更新的第二个子数据序列的m位循环冗余校验值;
结果获取单元,用于重复以上步骤直到得到所述多个子数据序列中更新的最后一个子数据序列,采用直接生成法计算得到该更新的最后一个子数据序列的m位循环冗余校验值,即得到重新生成的循环校验值。
可选的,所述数据保存区包括多个数据保存子分区;所述第一写入模块,包括:
第一目标子分区查找单元,用于遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第一目标数据保存子分区;
第一目标子分区写入单元,用于将包括有所述循环冗余校验值的所述结构体写入所述第一目标数据保存子分区。
可选的,所述装置还包括:
存储空间检测模块,用于检测所述第一目标数据保存子分区是否还有存储空间;
第二目标子分区查找模块,用于若所述第一目标数据保存子分区没有存储空间,则判断包括有所述循环冗余校验值的所述结构体是否已写入完成;若包括有所述循环冗余校验值的所述结构体已写入完成,则结束写入操作;若包括有所述循环冗余校验值的所述结构体未写入完成,则重新执行遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第二目标数据保存子分区;
第二目标子分区写入模块,用于将包括有所述循环冗余校验值的所述结构体未写入所述第一目标数据保存子分区的部分写入所述第二目标数据保存子分区。
本申请实施例第三方面提供了一种电子设备,所述电子设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的非易失性数据存储方法中的步骤。
本申请实施例第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的非易失性数据存储方法中的步骤。
本申请的上述方案至少包括以下有益效果:通过对系统非易失性数据进行结构体整合;当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区。从而实现嵌入式系统非易失性数据的互为备份,能有效防止嵌入式系统在异常掉电或异常重启时导致正在写入过程中的非易失性数据丢失或错误,进而提高系统的稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用架构图;
图2为本申请实施例提供的一种非易失性数据存储方法的流程示意图;
图3为本申请实施例提供的一种数据结构体的格式示例图;
图4为本申请实施例提供的另一种非易失性数据存储方法的流程示意图;
图5为本申请实施例提供的一种非易失性数据存储装置的结构示意图;
图6为本申请实施例提供的另一种非易失性数据存储装置的结构示意图;
图7为本申请实施例提供的另一种非易失性数据存储装置的结构示意图;
图8为本申请实施例提供的另一种非易失性数据存储装置的结构示意图;
图9为本申请实施例提供的另一种非易失性数据存储装置的结构示意图;
图10为本申请实施例提供的另一种非易失性数据存储装置的结构示意图;
图11为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
首先结合相关附图来举例介绍下本申请实施例的方案可能用到的应用架构。请参见图1,图1为本申请实施例提供的一种应用架构图,如图1所示,包括服务端和客户端,服务端和客户端之间通过网络连接,并可进行交互。客户端主要用于接收用户输入的数据处理指令,例如存储指令、读取指令、程序调用指令等,服务端通过网络获取客户端接收到的数据处理指令,并响应该数据处理指令,进行相应处理,以及将需要展示部分或全部处理结果返回到客户端。
基于图1所示的应用架构,以下结合其他附图对本申请实施例提供的非易失性数据存储方法进行详细阐述。
请参见图2,图2为本申请实施例提供的一种非易失性数据存储方法的流程示意图,如图2所示,包括步骤:
S201,对系统非易失性数据进行结构体整合。
其中,本申请具体实施例中,非易失性数据具体指系统启动运行过程中各个模块可能用到的一些配置参数或设置参数的值,结构体(struct)指的是一种数据结构,是由一系列具有想相同类型或不同类型的数据构成的数据集合,常被用来封装一些属性组成新的类型以简化运算。上述对系统非易失性数据进行结构体整合,可以是按照特定结构体格式对系统非易失性数据进行结构体整合,即按照特定结构体格式打包,如图3所示,特定结构体格式具体为结构体内的数据字节长度DataLen、结构体内具体数据,例如:第一个数据Data1至第N个数据DataN、生成循环冗余校验值DataCRC(Cyclic Redundancy Check,循环冗余校验值),计算从DataLen开始到DataN的数据的循环冗余校验值,其中,结构体内的数据字节长度部分不包含生成循环冗余校验值DataCRC的2字节。
S202当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值。
其中,本申请具体实施例中,上述结构体整合完成后,结构体内就生成了从DataLen开始到DataN的数据的循环冗余校验值,由于非易失性数据往往需要校准和终测,所以结构体内的非易失性数据会出现更新变化,同时,会生成新的一包结构体,服务器将新的结构体中的非易失性数据与旧的结构体中的非易失性数据进行比对,在检测到有更新变化后,首先在新的结构体内重新生成循环冗余校验值。
S203,调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区。
S204,预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区。
其中,本申请具体实施例中,数据写入程序即指一个接口函数,数据保存区可以是非易失性存储器,例如:FLASH芯片等,数据备份区可以是数据保存区中划分出来的备份区,也是数据保存区外的备份区,例如:辅助存储器。在重新生成循环冗余校验值后,立即调取数据写入程序将更新后的结构体写入数据保存区,然后在预先设定的时间到达后,再次将结构体写入数据备份区,实现数据存储区和数据保存区之间的互为备份,当异常情况出现时,均能保证系统正常启动运行。
可以看出,本申请实施例通过对系统非易失性数据进行结构体整合;当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区。从而实现嵌入式系统非易失性数据的互为备份,能有效防止嵌入式系统在异常掉电或异常重启时导致正在写入过程中的非易失性数据丢失或错误,进而提高系统的稳定性。
请参见图4,图4为本申请实施例提供的另一种非易失性数据存储方法的流程示意图,如图4所示,包括步骤:
S401,对系统非易失性数据进行结构体整合;
S402当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;
S403,调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;
S404,预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区;
S405,当系统后续启动运行时,读取所述数据保存区内存储的数据,以对所述循环冗余校验值进行校验;若校验通过则执行步骤S408,若校验失败则执行步骤S406;
S406,读取所述数据备份区内存储的数据,以对所述循环冗余校验值进行校验;若校验通过则执行步骤S408,若校验失败则执行步骤S407;
S407,导入系统默认参数以完成系统启动运行;
S408,退出。
其中,本申请具体实施例中,步骤S401-步骤S404在图2所示的实施例中已有相关描述,为避免重复,此处不再赘述,且能达到相同或相似的有益效果。在对系统非易失性数据进行互为备份式的存储操作之后,若遇到系统掉电或异常重启的情况,系统重新启动运行时首先会读取数据存储区内的数据,该数据为图3所示的结构体内的数据,具体包括更新变化后的非易失性数据、及其字节长度和重新生成的循环冗余校验值,之后用预先选定的二进制除数,用模2除法对读取到的数据进行校验,若校验余数为0则说明数据存储区内的非易失性数据在写入过程中没有丢失或出错,否则说明数据存储区内的非易失性数据在写入过程中丢失或出错,转而读取数据备份区中的数据,采用同样的方法进行校验,若校验余数仍然不为0则直接导入系统默认参数,即最初始的参数,以完成系统启动运行。
在一种可能的实施方式中,所述重新生成循环冗余校验值,包括:
将所述结构体内更新变化后的非易失性数据依次划分为长度为n的多个子数据序列;
根据所述多个子数据序列重新生成循环冗余校验值。
其中,本申请具体实施例中,假设结构体内更新变化后的非易失性数据的字节长度为s,选取子数据序列的长度n,且s能够被子数据序列的长度n整除,那么将会得到s/n个子数据序列。
具体的,上述根据所述多个子数据序列重新生成循环冗余校验值可以是:
针对所述多个子数据序列中的第一个子数据序列,采用直接生成法计算得到该第一个子数据序列的m位循环冗余校验值;
针对所述多个子数据序列中的第二个子数据序列,将该第二个子数据序列的前m位数据与该第一个子数据序列的m位循环冗余校验值进行异或运算,用异或运算的结果替换该第二个子数据序列的前m位数据,得到更新的第二个子数据序列,采用直接生成法计算得到该更新的第二个子数据序列的m位循环冗余校验值;
重复以上步骤直到得到所述多个子数据序列中更新的最后一个子数据序列,采用直接生成法计算得到该更新的最后一个子数据序列的m位循环冗余校验值,即得到重新生成的循环校验值。
直接生成法,即采用原始数据序列与特定多项式进行直接计算得到循环校验值的方法。对于第一个子数据序列先选定特定的多项式G(x),将该多项式G(x)转化为二进制序列,该二进制序列有m+1位,在第一个子数据序列后添加m位0得到新的第一子数据序列,将该新的第一子数据序列用模2除法除以前面得到的二进制序列得到的余数即为该第一个子数据序列的m位循环冗余校验值。然后用该第一个子数据序列的m位循环冗余校验值与第二个子数据序列的前m位数据进行异或运算,即相同为0,不同为1,得到的结果替换掉第二个子数据序列的前m位,得到更新的第二个子数据序列。同样采取上述的直接生成法计算更新的第二子数据序列的循环冗余校验值、计算更新的第三子数据序列的循环冗余校验值,直到计算更新的第s/n个子数据序列的循环冗余校验值,将该更新的第s/n个子数据序列的循环冗余校验值作为重新生成的循环校验值。
在一种可能的实施方式中,所述数据保存区包括多个数据保存子分区;所述将包括有所述循环冗余校验值的所述结构体写入数据保存区,包括:
遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第一目标数据保存子分区;
将包括有所述循环冗余校验值的所述结构体写入所述第一目标数据保存子分区。
其中,本申请具体实施例中,首先对数据保存区进行分区或分块,得到多个数据保存子分区,在写入上述结构体时首先查询是否有空置的数据保存子分区,然后执行写入存储操作,分区存储的方式有利于降低数据保存区的损耗,且对结构体数据的完整性没有影响。
在一种可能的实施方式中,所述方法还包括:
检测所述第一目标数据保存子分区是否还有存储空间;
若所述第一目标数据保存子分区没有存储空间,则判断包括有所述循环冗余校验值的所述结构体是否已写入完成;若包括有所述循环冗余校验值的所述结构体已写入完成,则结束写入操作;若包括有所述循环冗余校验值的所述结构体未写入完成,则重新执行遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第二目标数据保存子分区;
将包括有所述循环冗余校验值的所述结构体未写入所述第一目标数据保存子分区的部分写入所述第二目标数据保存子分区。
其中,本申请具体实施例中,由于数据保存子分区的存储大小是预先定义的,若第一目标数据保存子分区能够存储下整个结构体,就不用再寻找下一个目标数据保存子分区,若该结构体较大而使得第一目标数据保存子分区不能直接存储完,则需要寻找下一个目标数据保存子分区进行写入存储操作。另外,还需在所述第一目标数据保存子分区中添加指针,所述指针用于指向所述第二目标数据保存子分区。
请参见图5,图5为本申请实施例提供的一种非易失性数据存储装置的结构示意图,如图5所示,该装置包括:
数据整合模块51,用于对系统非易失性数据进行结构体整合;
校验值生成模块52,用于当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;
第一写入模块53,用于调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及
第二写入模块54,用于预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区。
可选的,如图6所示,所述装置还包括:
第一校验模块55,用于当系统后续启动运行时,读取所述数据保存区内存储的数据,以对所述循环冗余校验值进行校验;
第二校验模块56,用于若校验通过则退出,若校验失败则读取所述数据备份区内存储的数据,以对所述循环冗余校验值进行校验;
参数导入模块57,用于若校验通过则退出,若校验失败则导入系统默认参数以完成系统启动运行。
可选的,如图7所示,所述校验值生成模块52,包括:
数据划分单元5201,用于将所述结构体内更新变化后的非易失性数据依次划分为长度为n的多个子数据序列;
校验值生成单元5202,用于根据所述多个子数据序列重新生成循环冗余校验值。
可选的,如图8所示,所述校验值生成单元5202,包括:
第一生成单元52021,用于针对所述多个子数据序列中的第一个子数据序列,采用直接生成法计算得到该第一个子数据序列的m位循环冗余校验值;
第二生成单元52022,用于针对所述多个子数据序列中的第二个子数据序列,将该第二个子数据序列的前m位数据与该第一个子数据序列的m位循环冗余校验值进行异或运算,用异或运算的结果替换该第二个子数据序列的前m位数据,得到更新的第二个子数据序列,采用直接生成法计算得到该更新的第二个子数据序列的m位循环冗余校验值;
结果获取单元52023,用于重复以上步骤直到得到所述多个子数据序列中更新的最后一个子数据序列,采用直接生成法计算得到该更新的最后一个子数据序列的m位循环冗余校验值,即得到重新生成的循环校验值。
可选的,所述数据保存区包括多个数据保存子分区;如图9所示,所述第一写入模块53,包括:
第一目标子分区查找单元5301,用于遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第一目标数据保存子分区;
第一目标子分区写入单元5302,用于将包括有所述循环冗余校验值的所述结构体写入所述第一目标数据保存子分区。
可选的,如图10所示,所述装置还包括:
存储空间检测模块58,用于检测所述第一目标数据保存子分区是否还有存储空间;
第二目标子分区查找模块59,用于若所述第一目标数据保存子分区没有存储空间,则判断包括有所述循环冗余校验值的所述结构体是否已写入完成;若包括有所述循环冗余校验值的所述结构体已写入完成,则结束写入操作;若包括有所述循环冗余校验值的所述结构体未写入完成,则重新执行遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第二目标数据保存子分区;
第二目标子分区写入模块510,用于将包括有所述循环冗余校验值的所述结构体未写入所述第一目标数据保存子分区的部分写入所述第二目标数据保存子分区。
可以理解的,本申请实施例提供的非易失性数据存储装置能够实现图2和图4所示实施例中的非易失性数据存储方法,且能够应用于实际非易失性数据存储场景中。
请参见图11,图11为本申请实施例提供的一种电子设备的结构示意图,如图11所示,包括:存储器1101,用于存储计算机程序;处理器1102,用于调用存储器1101存储的计算机程序实现上述非易失性数据存储方法的实施例中的步骤;具体的,处理器1102具体用于调用计算机程序执行如下步骤:
对系统非易失性数据进行结构体整合;
当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;
调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及
预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区。
可选的,处理器1102还用于:
当系统后续启动运行时,读取所述数据保存区内存储的数据,以对所述循环冗余校验值进行校验;
若校验通过则退出,若校验失败则读取所述数据备份区内存储的数据,以对所述循环冗余校验值进行校验;
若校验通过则退出,若校验失败则导入系统默认参数以完成系统启动运行。
可选的,处理器1102执行所述重新生成循环冗余校验值,包括:
将所述结构体内更新变化后的非易失性数据依次划分为长度为n的多个子数据序列;
根据所述多个子数据序列重新生成循环冗余校验值。
可选的,处理器1102用于执行所述根据所述多个子数据序列重新生成循环冗余校验值,包括:
针对所述多个子数据序列中的第一个子数据序列,采用直接生成法计算得到该第一个子数据序列的m位循环冗余校验值;
针对所述多个子数据序列中的第二个子数据序列,将该第二个子数据序列的前m位数据与该第一个子数据序列的m位循环冗余校验值进行异或运算,用异或运算的结果替换该第二个子数据序列的前m位数据,得到更新的第二个子数据序列,采用直接生成法计算得到该更新的第二个子数据序列的m位循环冗余校验值;
重复以上步骤直到得到所述多个子数据序列中更新的最后一个子数据序列,采用直接生成法计算得到该更新的最后一个子数据序列的m位循环冗余校验值,即得到重新生成的循环校验值。
可选的,所述数据保存区包括多个数据保存子分区;处理器1102执行所述将包括有所述循环冗余校验值的所述结构体写入数据保存区,包括:
遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第一目标数据保存子分区;
将包括有所述循环冗余校验值的所述结构体写入所述第一目标数据保存子分区。
可选的,处理器1102还用于:
检测所述第一目标数据保存子分区是否还有存储空间;
若所述第一目标数据保存子分区没有存储空间,则判断包括有所述循环冗余校验值的所述结构体是否已写入完成;若包括有所述循环冗余校验值的所述结构体已写入完成,则结束写入操作;若包括有所述循环冗余校验值的所述结构体未写入完成,则重新执行遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第二目标数据保存子分区;
将包括有所述循环冗余校验值的所述结构体未写入所述第一目标数据保存子分区的部分写入所述第二目标数据保存子分区。
示例性的,上述电子设备可以是计算机、笔记本电脑、平板电脑、服务器等设备。电子设备可包括但不仅限于处理器1102、存储器1101。本领域技术人员可以理解,所述示意图仅仅是电子设备的示例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
需要说明的是,由于电子设备的处理器1102执行计算机程序时实现上述的非易失性数据存储方法中的步骤,因此非易失性数据存储方法的实施例均适用于该电子设备,且均能达到相同或相似的有益效果。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述的非易失性数据存储方法中的步骤。
示例性的,计算机可读存储介质的计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,由于计算机可读存储介质的计算机程序被处理器执行时实现上述的非易失性数据存储方法中的步骤,因此上述非易失性数据存储方法的所有例均适用于该计算机可读存储介质,且均能达到相同或相似的有益效果。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种非易失性数据存储方法,其特征在于,所述方法包括:
对系统非易失性数据进行结构体整合;
当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;
调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及
预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区;
所述重新生成循环冗余校验值,包括:
将所述结构体内更新变化后的非易失性数据依次划分为长度为n的多个子数据序列;
针对所述多个子数据序列中的第一个子数据序列,采用直接生成法计算得到该第一个子数据序列的m位循环冗余校验值;
针对所述多个子数据序列中的第二个子数据序列,将该第二个子数据序列的前m位数据与该第一个子数据序列的m位循环冗余校验值进行异或运算,用异或运算的结果替换该第二个子数据序列的前m位数据,得到更新的第二个子数据序列,采用直接生成法计算得到该更新的第二个子数据序列的m位循环冗余校验值;
重复以上步骤直到得到所述多个子数据序列中更新的最后一个子数据序列,采用直接生成法计算得到该更新的最后一个子数据序列的m位循环冗余校验值,即得到重新生成的循环校验值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当系统后续启动运行时,读取所述数据保存区内存储的数据,以对所述循环冗余校验值进行校验;
若校验通过则退出,若校验失败则读取所述数据备份区内存储的数据,以对所述循环冗余校验值进行校验;
若校验通过则退出,若校验失败则导入系统默认参数以完成系统启动运行。
3.根据权利要求1或2所述的方法,其特征在于,所述数据保存区包括多个数据保存子分区;所述将包括有所述循环冗余校验值的所述结构体写入数据保存区,包括:
遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第一目标数据保存子分区;
将包括有所述循环冗余校验值的所述结构体写入所述第一目标数据保存子分区。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
检测所述第一目标数据保存子分区是否还有存储空间;
若所述第一目标数据保存子分区没有存储空间,则判断包括有所述循环冗余校验值的所述结构体是否已写入完成;若包括有所述循环冗余校验值的所述结构体已写入完成,则结束写入操作;若包括有所述循环冗余校验值的所述结构体未写入完成,则重新执行遍历所述多个数据保存子分区,以从所述多个数据保存子分区中确定出未保存数据的第二目标数据保存子分区;
将包括有所述循环冗余校验值的所述结构体未写入所述第一目标数据保存子分区的部分写入所述第二目标数据保存子分区。
5.一种非易失性数据存储装置,其特征在于,所述装置包括:
数据整合模块,用于对系统非易失性数据进行结构体整合;
校验值生成模块,用于当所述结构体内的非易失性数据出现更新变化时,重新生成循环冗余校验值;
第一写入模块,用于调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据保存区;以及
第二写入模块,用于预设时间后调取数据写入程序将包括有所述循环冗余校验值的所述结构体写入数据备份区;
所述校验值生成模块,包括:
数据划分单元,用于将所述结构体内更新变化后的非易失性数据依次划分为长度为n的多个子数据序列;
第一生成单元,用于针对所述多个子数据序列中的第一个子数据序列,采用直接生成法计算得到该第一个子数据序列的m位循环冗余校验值;
第二生成单元,用于针对所述多个子数据序列中的第二个子数据序列,将该第二个子数据序列的前m位数据与该第一个子数据序列的m位循环冗余校验值进行异或运算,用异或运算的结果替换该第二个子数据序列的前m位数据,得到更新的第二个子数据序列,采用直接生成法计算得到该更新的第二个子数据序列的m位循环冗余校验值;
结果获取单元,用于重复以上步骤直到得到所述多个子数据序列中更新的最后一个子数据序列,采用直接生成法计算得到该更新的最后一个子数据序列的m位循环冗余校验值,即得到重新生成的循环校验值。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第一校验模块,用于当系统后续启动运行时,读取所述数据保存区内存储的数据,以对所述循环冗余校验值进行校验;
第二校验模块,用于若校验通过则退出,若校验失败则读取所述数据备份区内存储的数据,以对所述循环冗余校验值进行校验;
参数导入模块,用于若校验通过则退出,若校验失败则导入系统默认参数以完成系统启动运行。
7.一种电子设备,其特征在于,所述电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的非易失性数据存储方法中的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的非易失性数据存储方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910711070.0A CN110442473B (zh) | 2019-07-30 | 2019-07-30 | 一种非易失性数据存储方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910711070.0A CN110442473B (zh) | 2019-07-30 | 2019-07-30 | 一种非易失性数据存储方法、装置、电子设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442473A CN110442473A (zh) | 2019-11-12 |
CN110442473B true CN110442473B (zh) | 2023-01-24 |
Family
ID=68432865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910711070.0A Active CN110442473B (zh) | 2019-07-30 | 2019-07-30 | 一种非易失性数据存储方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442473B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737255B (zh) * | 2020-06-02 | 2024-06-18 | 通号城市轨道交通技术有限公司 | 一种联锁监测数据的存储方法及系统 |
CN112540725A (zh) * | 2020-11-26 | 2021-03-23 | 深圳腾视科技有限公司 | 非易失性数据存储方法、嵌入式系统以及存储介质 |
CN112905112B (zh) * | 2021-02-09 | 2023-03-31 | 上海锐伟电子科技有限公司 | 一种嵌入式设备的数据处理方法及系统 |
CN113434338A (zh) * | 2021-06-25 | 2021-09-24 | 苏州伟创电气科技股份有限公司 | 数据存储的容错方法、装置、设备及存储介质 |
CN113553220A (zh) * | 2021-09-23 | 2021-10-26 | 深圳华云时空技术有限公司 | 一种嵌入式系统参数备份方法 |
CN114518845B (zh) * | 2022-01-06 | 2024-09-10 | 中汽创智科技有限公司 | 数据存储方法、装置、介质及设备 |
CN117349085B (zh) * | 2023-12-01 | 2024-03-05 | 杭州云动智能汽车技术有限公司 | 一种数据存储方法、数据备份方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077100A (zh) * | 2013-01-31 | 2013-05-01 | 广东欧珀移动通信有限公司 | 非易失性数据备份和恢复方法 |
CN106610786A (zh) * | 2015-10-26 | 2017-05-03 | 联车(上海)信息科技有限公司 | 数据存储方法 |
CN108233944A (zh) * | 2017-12-29 | 2018-06-29 | 北京自动测试技术研究所 | 一种循环冗余校验方法、设备及存储介质 |
CN110008059A (zh) * | 2019-02-20 | 2019-07-12 | 深圳市汇顶科技股份有限公司 | 非易失性存储介质的数据更新方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009098776A1 (ja) * | 2008-02-08 | 2009-08-13 | Fujitsu Limited | バックアップ方法、ディスクアレイ装置及びコントローラ |
-
2019
- 2019-07-30 CN CN201910711070.0A patent/CN110442473B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077100A (zh) * | 2013-01-31 | 2013-05-01 | 广东欧珀移动通信有限公司 | 非易失性数据备份和恢复方法 |
CN106610786A (zh) * | 2015-10-26 | 2017-05-03 | 联车(上海)信息科技有限公司 | 数据存储方法 |
CN108233944A (zh) * | 2017-12-29 | 2018-06-29 | 北京自动测试技术研究所 | 一种循环冗余校验方法、设备及存储介质 |
CN110008059A (zh) * | 2019-02-20 | 2019-07-12 | 深圳市汇顶科技股份有限公司 | 非易失性存储介质的数据更新方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
CRC算法在计算机网络通信中的应用研究;高岳等;《信息记录材料》;20171001(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110442473A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110442473B (zh) | 一种非易失性数据存储方法、装置、电子设备及介质 | |
US9286164B2 (en) | Electronic device to restore MBR, method thereof, and computer-readable medium | |
CN108563532B (zh) | 数据处理方法及相关装置 | |
KR102015719B1 (ko) | 데이터 버스 트랜시버로부터의 구성 데이터를 보호하기 위한 방법, 데이터 버스 트랜시버 및 데이터 버스 시스템 | |
CN111078662B (zh) | 一种区块链数据存储方法与装置 | |
CN107315616B (zh) | 一种固件的加载方法、装置及电子设备 | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
CN107479823B (zh) | 随机读写文件测试中的数据校验方法和装置 | |
EP3336702B1 (en) | Metadata recovery method and device | |
CN115408730A (zh) | 数据处理方法、芯片、电子设备及存储介质 | |
CN112558868A (zh) | 一种配置数据存储的方法和装置及设备 | |
CN110569058B (zh) | 系统升级方法、装置、终端及计算机可读存储介质 | |
CN105550071A (zh) | 系统文件升级及检测方法、通信设备 | |
CN109801668A (zh) | 数据储存装置及应用于其上的操作方法 | |
CN108196975B (zh) | 基于多校验和的数据验证方法、装置及存储介质 | |
CN114385418A (zh) | 通信设备的保护方法、装置、设备和存储介质 | |
CN107894900B (zh) | 一种mcu升级的方法及系统 | |
CN111586202B (zh) | 网络掩码校验方法、装置、电子设备及存储介质 | |
CN112579141A (zh) | 一种嵌入式系统的固件更新方法、装置、设备及存储介质 | |
CN105278993B (zh) | 一种基于Linux系统的驱动模块升级方法及装置 | |
CN113961151B (zh) | 一种故障日志的存储方法、装置、电子设备及存储介质 | |
CN116072202A (zh) | 一种存储设备的管理方法、系统及存储介质 | |
CN114003174A (zh) | 一种纠删码存储方法、系统及电子设备 | |
CN115827308A (zh) | 一种固态硬盘数据纠错方法及一种固态硬盘 | |
CN115129509A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |