在嵌入系统的非易失存储器中进行数据操作的方法技术方案

技术编号:2850465 阅读:199 留言:0更新日期:2012-04-11 18:40
本发明专利技术提出了一种在嵌入系统的非易失存储器中进行数据操作的方法。根据该方法系统数据通过定义一种与数据库数据表相似的表的结构以日志方式追加记录的方式保存到FLASH中,在保存之前不执行擦除动作,提高了写入速度。同时还可以把数据区分为记录区和备份区,提高了数据记录的安全性,通过该方法可以在FLASH中保存任何系统数据,大到一块内存区域,小到一个字的数据。另外由于每次保存的位置不固定和可以把整块数据分成部分保存到FLASH的不同位置,因此提高了数据的保密性。

【技术实现步骤摘要】

本专利技术涉及嵌入系统的数据存储领域,具体是涉及一种。
技术介绍
随着电子技术的不断发展,嵌入式系统越来越多地在控制类、消费类、通讯类等电子产品中广泛应用。FLASH(非易失存储器)以其制造成本低廉、存储容量大、数据非易失、无机械故障等优点,在目前的嵌入系统中被普遍使用来保存系统的程序。但是由于FLASH在已经有脏数据的情况下写入数据之前必须进行擦除操作,而擦除操作很费时间,并且擦除次数有限,因此在嵌入系统中如果不特殊处理不能用来存储数据,否则会大大降低系统的可靠性和实时性。人们为了在嵌入系统能够使用FLASH存储数据,提出了一种文件系统,对Flash存储器中的数据内容进行基于文件代号的存储管理,同时对于Flash存储器本身的坏损单元自动进行应用透明的坏损管理。采用这种方式,大大提高了系统数据存储的可靠性,因此许多嵌入系统采用这种方式来存储数据。但是用文件系统存储数据,需要事先建立一个文件系统,而我们知道大量的嵌入系统不需要文件系统的支持,需要保存的数据大部分以数据结构或一块内存区域的形式存在,如果为了单独保存这些数据而建立一套文件系统,不仅增大了代码量,使用起来也比较麻烦。
技术实现思路
本专利技术的目的在于提供一种能够基于简单数据库形式实现的。为实现上述目的,本专利技术所采用的技术方案是一种,所述非易失存储器中设置有数据区,所述数据区中包括记录区;所述记录区配置有记录指针,所述记录指针指向记录区的空白写位置,当记录区为空时,指向记录区的开始位置;所述数据操作的方法包括数据存储的方法,所述数据存储的方法包括如下步骤1)构造记录,所述记录包括记录头、数据部分和记录尾;所述记录头包括所记录数据的识别信息,所述数据部分为需要记录的内容,所述记录尾包括校验码;2)根据记录的长度判断记录区是否已满,若已满则清空记录区,并将记录指针指向记录区的开始位置,然后执行步骤3);若未满,则直接执行步骤3);3)将记录以追加方式写入所述记录指针指向的位置,并将记录指针随之后移,后移大小为该记录的实际长度。优选的是,所述数据区中还包括备份区,其大小不小于所需要存储的全部系统数据的大小;所述备份区配置有备份指针,所述备份指针指向备份区的空白写位置,当备份区为空时,指向备份区的开始位置;所述步骤2)中若记录区已满,则根据所需要存储的全部系统数据的大小判断备份区是否已满,若已满则清空备份区并将备份指针指向备份区的开始位置,然后执行步骤2a);若未满,则直接执行步骤2a);2a)将当前的全部系统数据按步骤1)所述构造成记录,并以追加方式逐条写入所述备份指针指向的位置,每写入一条记录,备份指针随之后移,后移大小为当前写入记录的长度;待备份完成后,清空记录区,并将记录指针指向记录区的开始位置,然后执行步骤3)。所述记录可以是数据部分存储变量的内容的表记录;所述记录头包括表名字、记录长度;所述表名字与该记录所关联的变量唯一对应;所述记录长度为数据部分的长度。所述记录也可以是数据部分存储变量中变化的单元的条记录;所述记录头还包括存储类型、记录号;所述存储类型包括表类型、记录类型,所述表记录对应的存储类型为表类型,所述条记录对应的存储类型为记录类型;所述记录号在所述存储类型为表类型以外的其他类型时有效,所述记录号为与该记录所关联的单元在所属变量中的序号。所述记录还可以是数据部分存储变量某个单元中的单个字段的字段记录;所述记录头还包括记录偏移;所述存储类型还包括字段类型,所述字段记录对应的存储类型为字段类型;所述记录偏移在所述存储类型为字段类型时有效,所述记录偏移为该记录所存储的字段在所述记录号所表示的那个单元中的位置。上述数据操作的方法还包括数据恢复的方法,所述数据恢复的方法可采用历史恢复法按照先备份区后记录区的顺序进行数据恢复,并且每个区都按照记录存放的顺序从前到后进行恢复,关于相同内容的记录,后恢复的覆盖之前恢复的,直到全部记录恢复完。也可采用倒序恢复法按照先记录区后备份区的顺序进行数据恢复,并且每个区都按照记录存放的顺序从后到前进行恢复,关于相同内容的记录,后恢复的不覆盖之前恢复的,直到全部记录恢复完。为保证数据安全,在进行数据恢复时,还执行如下数据安全机制根据每条记录的记录头和记录尾信息判断恢复出的记录是否正确,若是则采用,若否则放弃。本专利技术采用上述技术方案,有益的技术效果在于1)通过采用日志方式存储系统数据,可以广泛用于嵌入系统中,提高系统的可靠性和实时性。并且数据就以原先的形式加上很少的结构头尾信息来保存,因此系统实现起来简单容易,增加的代码量也不大。另外还可以把系统加密、安全认证信息也保存到FLASH中,由于采用日志方式存储数据,其记录位置可变,因此提高了系统破解的难度,进一步提高了系统的安全性。2)在擦除清空记录区之前,先把全部系统数据保存到备份区,因此即使在擦除过程中断电,备份区也还有一份数据记录的备份,保证了数据的完整性。3)通过设置不同的记录存储类型,可以保存系统中任何需要保存的数据,包括定义数据结构的变量或一块连续内存,也可以把要保存的整块数据分成几个部分,小到一个字,从而只保存整块数据中变化的部分,减少数据的保存量和FLASH的写次数。下面通过实施例并结合附图对本专利技术作进一步的详细说明。附图说明图1是FLASH的数据区分区示意图。图2是记录保存流程示意图。图3是记录结构示意图。图4是将一块连续内存进行记录划分的示意图。具体实施方式一种在嵌入系统的FLASH中进行数据操作的方法,在FLASH中定义连续几个块(BLOCK)作为系统数据区使用,并分为记录区和备份区两部分。如图1所示,FLASH划分5块作为数据区使用,4块为记录区,1块为备份区。需要注意的是,由于备份区需要在作记录区擦除前进行全部系统数据的备份,因此要求其大小不小于所需要存储的全部系统数据的大小,否则,数据将备份不下。记录区和备份区分别配置有记录指针和备份指针,指向各自区的空白写位置,当各自区为空时,则指向各自区的开始位置。本专利技术数据操作的方法包括数据存储的方法和数据恢复的方法以及数据恢复时的数据安全机制,数据存储方法的流程如图2所示,包括如下步骤1)构造记录。记录的结构如图3所示,包括记录头、数据部分和记录尾;记录头包含所记录数据的识别信息,数据部分为需要记录的内容,记录尾为校验码。系统可以通过构造不同存储类型的记录保存任何需要保存的数据,包括本身就是表结构的变量或一块连续内存,对于一块连续内存可以分成固定大小的许多个小块,每个小块作为一条记录,每条记录包括若干个字组成,当然也可以不分,直接作为一条包括若干字的记录使用。由于连续内存可定义成类似变量的表结构,因此下面的描述均以变量来表示。一般而言,要保存的变量都定义为一个数据表的结构,并可以分为大小相同的一个到多个单元(例如数据表中的每一条数据就是一个单元;结构数组中的每一个元素就是一个单元;连续内存可作为一整个单元,也可划分为长度相等的若干个单元;对于某些不具有结构的变量,则将整个变量视为一个单元),每个单元还可以细分为字段或字。如果是将整个变量的内容进行保存,这种记录称为表记录。此时,记录头的识别信息只需要包括表名字、记录长度就可以了。所述表名字(也叫表ID)与该记录所关联的变量唯一对应,记录长度为记本文档来自技高网...

【技术保护点】
一种在嵌入系统的非易失存储器中进行数据操作的方法,所述非易失存储器中设置有数据区,所述数据区中包括记录区;所述记录区配置有记录指针,所述记录指针指向记录区的空白写位置,当记录区为空时,指向记录区的开始位置;所述数据操作的方法 包括数据存储的方法,所述数据存储的方法包括如下步骤:1)构造记录,所述记录包括记录头、数据部分和记录尾;所述记录头包括所记录数据的识别信息,所述数据部分为需要记录的内容,所述记录尾包括校验码;2)根据记录的长度判断记录区是否 已满,若已满则清空记录区,并将记录指针指向记录区的开始位置,然后执行步骤3);若未满,则直接执行步骤3);3)将记录以追加方式写入所述记录指针指向的位置,并将记录指针随之后移,后移大小为该记录的实际长度。

【技术特征摘要】
1.一种在嵌入系统的非易失存储器中进行数据操作的方法,所述非易失存储器中设置有数据区,所述数据区中包括记录区;所述记录区配置有记录指针,所述记录指针指向记录区的空白写位置,当记录区为空时,指向记录区的开始位置;所述数据操作的方法包括数据存储的方法,所述数据存储的方法包括如下步骤1)构造记录,所述记录包括记录头、数据部分和记录尾;所述记录头包括所记录数据的识别信息,所述数据部分为需要记录的内容,所述记录尾包括校验码;2)根据记录的长度判断记录区是否已满,若已满则清空记录区,并将记录指针指向记录区的开始位置,然后执行步骤3);若未满,则直接执行步骤3);3)将记录以追加方式写入所述记录指针指向的位置,并将记录指针随之后移,后移大小为该记录的实际长度。2.根据权利要求1所述的在嵌入系统的非易失存储器中进行数据操作的方法,其特征在于所述数据区中还包括备份区,其大小不小于所需要存储的全部系统数据的大小;所述备份区配置有备份指针,所述备份指针指向备份区的空白写位置,当备份区为空时,指向备份区的开始位置;所述步骤2)中若记录区已满,则根据所需要存储的全部系统数据的大小判断备份区是否已满,若已满则清空备份区并将备份指针指向备份区的开始位置,然后执行步骤2a);若未满,则直接执行步骤2a);2a)将当前的全部系统数据按步骤1)所述构造成记录,并以追加方式逐条写入所述备份指针指向的位置,每写入一条记录,备份指针随之后移,后移大小为当前写入记录的长度;待备份完成后,清空记录区,并将记录指针指向记录区的开始位置,然后执行步骤3)。3.根据权利要求2所述的在嵌入系统的非易失存储器中进行数据操作的方法,其特征在于所述记录包括数据部分存储变量的内容的表记录;所述记录头包括表名字、记录长度;所述表名字与该记录所关联的变量唯一对应;所述记录长度为数据部分的长度。4.根据权利要求3所述的在嵌入系统的非易失存储器中进行数据操作的方法,其特征在于所述记录还包括数据部分...

【专利技术属性】
技术研发人员:毛国红
申请(专利权)人:深圳创维数字技术股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1