一种数据存储方法、装置、读取方法及装置与流程

文档序号:15888468发布日期:2018-11-09 19:48阅读:164来源:国知局
一种数据存储方法、装置、读取方法及装置与流程

本发明涉及互联网技术领域,尤其涉及一种数据存储方法、装置、读取方法及装置。

背景技术

在单片机应用系统中,长期存储数据的存储媒介为数据存储模块,数据存储模块的质量以及对数据存储模块的控制会影响数据存储的有效性,尤其是涉及到失电的情况。

通过单片机读写数据时,经由接口和数据存储模块进行通信交互实现数据读写,在单片机的正常工作中这样的交互会比较频繁,在交互过程中,如果遇到干扰,甚至突然断电,会造成当次交互失败,使数据存储模块存储的数据不完整或者存储错误从而导致历史数据永久性完全丢失,更严重的会使该单片机所属设备不能正常工作。

电可擦除可编程rom(electricallyerasableprogrammablerom,简称eeprom)是一种常用的数据存储模块。一般通过i2c通信接口对eeprom进行读写访问,并且可以对其地址范围内的任意字节进行读写操作。eeprom在失去电源的情况下,可以保持内部已存储的数据长时间不丢失(一般可长达10年以上),在下次上电后,可以正常访问内部数据。

目前,对数据存储模块进行访问时,一般根据下述步骤执行:

1)定义好需要保存的数据(块)在数据存储模块中的绝对开始地址的位置。

2)按i2c通信要求,将数据(块)写入到指定开始地址以后的一段区域。

3)为了保证数据写入的可靠性,把刚写入的数据(块),再读取出来,和写入原始数据(块)比对是否一致,在一致的情况下,确认写入操作正确。

4)为进一步保证数据写入准确,在写入到数据存储模块内的数据(块)内附加校验字节,在下次读取时候,通过此检验字节验证是否数据可信。

5)读取数据,按预知的位置,读取数据(块)并验证校验字节,决定是否采纳该数据(块),如果校验正确,则采纳,否则抛弃。

上述方法具有以下缺点:当在对数据存储模块写入数据的过程中出现系统断电的情况时,会导致正写入的数据写入不完整或者写入错误,断电后无法通过读出数据进行比较的办法验证是否出现错误,从而进行重新写入,那么在下次上电后,读取该地址则得不到正确的数据只能抛弃读取操作。于是,会丢失历史数据,如果丢失的是比较重要的历史累积数据,则会造成严重损失,甚至造成设备不能正常工作。



技术实现要素:

为了解决上述技术问题,本发明提供了一种数据存储方法、装置、读取方法及装置。

本发明提供的数据存储方法,包括:

为目标数据设置n个存储区,其中,n为大于1的整数;

将所述目标数据循环地写入各存储区中,其中,将所述目标数据写入一存储区后,判断是否满足换区写入条件,在满足换区写入条件时,确定下一存储区,将所述目标数据写入下一存储区。

上述数据存储方法还具有以下特点:

所述换区写入条件包括:所述目标数据的变化程度大于预设变化阈值和/或所述目标数据在当前存储区保存的时长大于预设时长规则中的相应时长。

上述数据存储方法还具有以下特点:

所述将目标数据写入一存储区包括:

第一过程:缓存目标数据,将所述目标数据写入所述存储区,从所述存储区读取出目标数据;

第二过程:判断缓存的目标数据和读取出的目标数据是否相同,在缓存的目标数据和读取出的目标数据相同时,确定将所述目标数据写入存储区成功,在缓存的目标数据和读取出的目标数据不相同时,多次执行所述第一过程直至缓存的目标数据和读取出的目标数据相同。

上述数据存储方法还具有以下特点:

所述预设时长规则包括以下规则中的一种:

所述目标数据保存在各存储区的预设时长均相同;

所述目标数据保存在各存储区的预设时长均不相同;

所述目标数据保存在一存储区的预设时长与所述目标数据写入此存储区的次数呈正相关;

所述目标数据保存在一存储区的预设时长与所述目标数据写入所有存储区的总次数呈正相关。

上述数据存储方法还具有以下特点:

所述方法还包括以下方式的中的一种:

方式一,将所述目标数据写入存储区时,还写入所述目标数据的时间戳信息;

方式二,所述目标数据中包括时间戳信息;

其中,所述时间戳信息是循环累加的时间戳信息,将所述目标数据写入存储区之前,将所述目标数据的当前时间戳信息累加预设间隔,在累加到最大值时,在再次累加时回归最小值。

本发明提供的数据读取方法,包括:

确定目标数据在各存储区的存储位置;

从各存储区读取所述目标数据的内容;

校验读取出的目标数据的内容正确后,选择读取出的内容中的一个作为读取结果。

上述数据存储方法还具有以下特点:

所述方法还包括:从各存储区读取目标数据的时间戳信息;

所述选择读取出的内容中的一个作为读取结果包括:选择最新的时间戳信息对应的内容作为读取结果。

本发明提供的数据存储装置,包括:

设置装置,用于为目标数据设置n个存储区;其中n为大于1的整数;

控制装置,用于将目标数据循环地写入各存储区中;

所述控制装置包括写入模块、判断模块、确定模块;

所述写入模块,用于将目标数据写入所述确定模块确定的存储区;

所述判断模块,用于判断是否满足换区写入条件;

所述确定模块,用于确定下一存储区。

上述数据存储装置还具有以下特点:

所述换区写入条件包括:所述目标数据的变化程度大于预设变化阈值和/或所述目标数据在当前存储区保存的时长大于预设时长规则中的相应时长。

上述数据存储装置还具有以下特点:

所述写入模块包括执行模块和判断单元,所述执行模块包括缓存单元、写入单元、读取单元;

所述缓存单元,用于缓存目标数据;

所述写入单元,用于将所述目标数据写入存储区;

读取单元,用于从所述存储区读取出目标数据;

判断单元,用于判断缓存的目标数据和读取出的目标数据是否相同,在缓存的目标数据和读取出的目标数据相同时,确定将所述目标数据写入存储区成功,在缓存的目标数据和读取出的目标数据不相同时,触发所述执行模块再次执行。

上述数据存储装置还具有以下特点:

所述预设时长规则包括以下规则中的一种:

所述目标数据保存在各存储区的预设时长均相同;

所述目标数据保存在各存储区的预设时长均不相同;

所述目标数据保存在一存储区的预设时长与所述目标数据写入此存储区的次数呈正相关;

所述目标数据保存在一存储区的预设时长与所述目标数据写入所有存储区的总次数呈正相关。

上述数据存储装置还具有以下特点:

所述写入模块,还用于将所述目标数据写入存储区时,还写入所述目标数据的时间戳信息;或者,还用于将所述目标数据写入存储区时,所述目标数据中包括时间戳信息;

其中,所述时间戳信息是循环累加的时间戳信息,将所述目标数据写入第一存储区或第二存储区之前,将所述目标数据的当前时间戳信息累加预设间隔,在累加到最大值时,在再次累加时回归最小值。

本发明提供的数据读取装置,包括:

位置确定模块,用于确定目标数据在各存储区的存储位置;

读取模块,用于从各存储区读取所述目标数据的内容;

校验模块,用于校验读取出的目标数据的内容是否正确;

选择模块,用于在所述校验模块校验读取出的目标数据的内容正确后,选择读取出的内容中的一个作为读取结果。

上述数据读取装置还具有以下特点:

所述读取模块,还用于从各存储区读取目标数据的时间戳信息;

所述选择模块,还用于选择最新的时间戳信息对应的内容作为读取结果。

本发明中在数据存储模块中为每个需存储的数据分配一个以上存储区域,实现多备份,主控单元(例如单片机)与数据存储模块交互时,分别对多个存储区域进行操作,可以确保数据写入正确。本发明能够实现数据的掉电不丢失,确保在写过程中掉电后,则在下次上电时,仍可以得到基本没有损失的累积式历史数据。典型的,本发明在数据存储模块中为每个需存储的数据分配两个存储区域,实现双备份。

本发明还实现了独立的广义时间戳设计,不依赖自然时间系统,能够独立识别数据存储次序。

本发明还使用校验信息,通过新定义的数据结构和算法,实现了在存储器模块写操作过程中掉电,也能够保证数据信息基本没有损失的高可靠数据保存的优点。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是实施例一中数据存储方法的流程图;

图2是实施例二中数据存储装置的结构图;

图3是实施例三中数据读取方法的流程图;

图4是实施例四中数据读取装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例一

如图1所示,数据存储方法包括:

步骤101,为目标数据设置n个存储区;其中,n为大于1的整数;

步骤102,将目标数据循环地写入各存储区中,其中,将目标数据写入一存储区后,判断是否满足换区写入条件,在满足换区写入条件时,确定下一存储区,将目标数据写入下一存储区。

存储区的个数典型的为2个,但不限于2个,2个以上的存储区的情况与存储区的个数为2个的方法同理。

此方法中,在任何一个存储区进行存储时,都需确认保存成功后,才会在下一存储区进行新的次保存,保证数据的有效存储,在断电情况下,使存储设备仍然能保存完整的数据。

其中,

步骤101中,将目标数据写入一存储区包括:

第一过程:缓存目标数据,将目标数据写入存储区,从存储区读取出目标数据;

第二过程:判断缓存的目标数据和读取出的目标数据是否相同,在缓存的目标数据和读取出的目标数据相同时,确定将目标数据写入存储区成功,在缓存的目标数据和读取出的目标数据不相同时,多次执行第一过程直至缓存的目标数据和读取出的目标数据相同。

步骤102中将目标数据循环地写入各存储区可以是依次写入,也可以是无顺序式写入。依次写入时,为存储区设置编号,按照编号的顺序依次写入,例如按编号从大到小的顺序或者按编号从小到大的顺序。无顺序式写入时,在一存储区写入目标数据后,从其它存储区中选择一存储区,将目标数据写入选中的存储区中。

步骤102中,换区写入条件包括:目标数据的变化程度大于预设变化阈值和/或目标数据在当前存储区保存的时长大于预设时长规则中的相应时长。

单片机系统中,对累积数据的保存是不间断进行的,也就是说,每间隔一些时间就对该累积数据保存一次,一般保存间隔能够保证数据的精度误差,例如如果精度要求10,则该数据变化差值接近10间距,则就会立即保存一次,从而保证两个备份区的数据都能够保证精度需要。目标数据的变化程度大于预设变化阈值的换区写入条件时为保证数据存储的精度值,例如目标数据为温度值,预设变化阈值为1摄氏度,则目标数据更新后,更新的值大于1度时,则需要在下一存储区进行存储,从而满足用户对数据的精度要求,从而保证了累积历史数据的可靠。从上述内容已可知,系统稳定运行一段时间后(如果系统还没有稳定运行一定时间,则累积历史数据也没有意义),两个备份区的数据,必然会有一个是正确的。从刚才的精度保障机制可以得知,取出任意一个区内的数据,都可以保证满足用户数据精度。如果由于掉电损失,则最大只是损失了一个精度范围的差值,从而最大限度确保了历史数据的可靠。

步骤102中的预设时长规则包括以下规则中的一种:

第一种,目标数据保存在各存储区的预设时长均相同;例如,以存储区的个数为2个为例,目标数据保存在第一存储区的预设时长和保存在第二存储区的预设时长均100毫秒。

第二种,目标数据保存在各存储区的预设时长均不相同;例如,以存储区的个数为2个为例,目标数据保存在第一存储区的预设时长为100豪秒,保存在第二存储区的预设时长均为200毫秒。

第三种,目标数据保存在一存储区的预设时长与目标数据写入此存储区的次数呈正相关,例如,以存储区的个数为2个为例,目标数据第一次保存在第一存储区后,对应的预设时长为100毫秒,第二次保存在第一存储区后,对应的预设时长为101毫秒,第二次保存在第一存储区后,对应的预设时长为102毫秒,以此类推。目标数据第一次保存在第二存储区后,对应的预设时长为200毫秒,第二次保存在第一存储区后,对应的预设时长为201毫秒,第二次保存在第一存储区后,对应的预设时长为202毫秒,以此类推。

第四种,目标数据保存在一存储区的预设时长与目标数据写入所有存储区的总次数呈正相关。例如,以存储区的个数为2个为例,目标数据第一次保存在第一存储区后,对应的预设时长为100毫秒,目标数据第一次保存在第二存储区后,对应的预设时长为101毫秒,目标数据第二次保存在第一存储区后,对应的预设时长为102毫秒,目标数据第二次保存在第二存储区后,对应的预设时长为103毫秒。以此类推。

为了使读取数据时,获取最新的和最准确的数据,使用时间戳信息来表示数据的更新程序,此方法包括以下两种方式:

方式一,将目标数据写入存储区时,还写入目标数据的时间戳信息;

方式二,目标数据包括时间戳信息。

此时间戳信息是一种独立的广义的时间戳信息。所谓独立,是指该信息只是在该数据应用范畴内有效,而且不依赖具体时钟系统,所谓广义,是指该时间不是通常的全息的自然时间(年月日时分秒格式的时间),而只是从自然时间的信息中提取对数据保存有用的一部分信息来使用,其本质是也是时间,是特别的时间信息。此处只是提取时间的先后次序信息作为时间戳。来标志两个备份区内数据保存的先后次序,以保障能够读取到最新的数据。

时间戳信息是循环累加的时间戳信息,将目标数据写入一存储区之前,将目标数据的当前时间戳信息累加预设间隔,在累加到最大值时,在再次累加时回归最小值。本方法中,每次保存数据时都会在时间戳初始信息基础是加1,然后保存,这样,两次保存的数据块的时间戳一定是整数连续的,最新的一定按连续累加特性比前一个大1,则可以判断出最新的数据。一种典型的例子为:时间戳信息的最大值是255,最小值是0,当时间戳累计到255,再加1则变成0,这里按循环累加原则(例如时钟0-24小时循环),0大于255且差值为1,即可判断最新为0标记数据块。这样的好处是,不依赖时钟系统获取时间信息,而且使用最小数据量来标志次序,一般只需要一个字节即可,就可以判断数据保存的次序。

本方法中,在进行数据存储时,只有存储操作正确后,才能对时间戳信息进行累加,如果不正确,或者过程掉电,则下次还是在对第同一存储区进行写操作,直到该存储区写入正确,再对时间戳信息进行累加。如果系统能够稳定运行一段时间(如果系统还没有稳定运行一定时间,则累积历史数据也没有意义),这个操作一定会实现。后续才能对另外的存储区进行写操作,也就是说在进入另外一个区的写入操作时,则必然上一次写入是正确的。这也正是该方案能够保证掉电后一定能够读取到正确历史数据的关键。因为不可能出现多个存储区的数据都出现错误,所以本方法可以保障存储模块中已写入至少一正确的数据。

为了保证存储的准确性,本方法中还包括使用校验数据进行数据检验,包括以下两种方式:

方式一,将目标数据写入一存储区时,还写入目标数据的校验数据;

方式二,目标数据包括校验数据。

实施例二

如图2所示,与上述方法对应的数据存储装置包括:

设置装置,用于为目标数据设置n个存储区;其中n为大于1的整数;

控制装置,用于将目标数据循环地写入各存储区中;

控制装置包括写入模块、判断模块、确定模块;

写入模块,用于将目标数据写入确定模块确定的存储区;

判断模块,用于判断是否满足换区写入条件;

确定模块,用于确定下一存储区。

存储区的个数典型的为2个,但不限于2个,2个以上的存储区的情况与存储区的个数为2个的方法同理。下面主要以存储区的个数为2个的情况进行说明。

换区写入条件包括:目标数据的变化程度大于预设变化阈值和/或目标数据在当前存储区保存的时长大于预设时长规则中的相应时长。

写入模块包括执行模块和判断单元,执行模块包括缓存单元、写入单元、读取单元;

缓存单元,用于缓存目标数据;

写入单元,用于将目标数据写入存储区;

读取单元,用于从存储区读取出目标数据;

判断单元,用于判断缓存的目标数据和读取出的目标数据是否相同,在缓存的目标数据和读取出的目标数据相同时,确定将目标数据写入存储区成功,在缓存的目标数据和读取出的目标数据不相同时,触发执行模块再次执行。

预设时长规则包括以下规则中的一种:

目标数据保存在各存储区的预设时长均相同;

目标数据保存在各存储区的预设时长均不相同;

目标数据保存在一存储区的预设时长与目标数据写入此存储区的次数呈正相关;

目标数据保存在一存储区的预设时长与目标数据写入所有存储区的总次数呈正相关。

具体的,

写入模块,还用于将目标数据写入存储区时,还写入目标数据的时间戳信息;或者,还用于将目标数据写入存储区时,目标数据中包括时间戳信息;

其中,时间戳信息是循环累加的时间戳信息,将目标数据写入第一存储区或第二存储区之前,将目标数据的当前时间戳信息累加预设间隔,在累加到最大值时,在再次累加时回归最小值。

实施例三

如图3所示,数据读取方法包括:

步骤301,确定目标数据在各存储区的存储位置;

步骤302,从各存储区读取目标数据的内容;

步骤303,校验读取出的目标数据的内容正确后,选择读取出的内容中的一个作为读取结果此读取方法还包括:从各存储区读取目标数据的时间戳信息,选择最新的时间戳信息对应的目标数据作为读取出的目标数据。

此方法还包括:从各存储区读取目标数据的时间戳信息;步骤303中选择读取出的内容中的一个作为读取结果包括:选择最新的时间戳信息对应的内容作为读取结果。

实施例四

如图4所示,数据读取装置包括:

位置确定模块,用于确定目标数据在各存储区的存储位置;

读取模块,用于从各存储区读取目标数据的内容;

校验模块,用于校验读取出的目标数据的内容是否正确;

选择模块,用于在校验模块校验读取出的目标数据的内容正确后,选择读取出的内容中的一个作为读取结果。

其中,

读取模块,还用于从各存储区读取目标数据的时间戳信息;

选择模块,还用于选择最新的时间戳信息对应的内容作为读取结果。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的物品或者设备中还存在另外的相同要素。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1