一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种信息存储方法、装置及计算机存储介质与流程

2022-07-22 22:36:47 来源:中国专利 TAG:


1.本技术涉及存储技术领域,具体涉及一种信息存储方法、装置及计算机存储介质。


背景技术:

2.随着人们日常生活水平的提高,人们对城市智能化的需求也越发增加,智慧城市逐渐引起了人们的关注。其中,能源为智慧城市的重要组成部分,能源在消耗后,能源计量系统会对消耗的能源进行统计,因此,能源计量系统中的计量信息是智慧城市数字化建设的基础单元。
3.其中,能源计量系统中的能源设备是通过记录累计能源消耗的方式来记录能源信息的。即能源设备中存储的是能源的累计信息,每次从休眠到唤醒时,能源设备需要将存储的累计信息作为基准值,与本次消耗的增量数据进行累加,得到新的累计信息并存储。如果累计信息是存储在能源设备的内存中,则休眠后可能会丢失存储的累计信息,从而无法持续的累计。目前,能源设备可以通过将累计信息以特定文件的形式存储在文件系统中,通过调用文件读取接口读取累计信息以及写入新的累计信息。但是通过文件系统方式需要额外移植文件系统,并且在频繁大量写的场景下,功耗较高,可能会产生额外的资源开销,无法很好的支持频繁读写的能源计量场景。


技术实现要素:

4.本技术实施例提供一种信息存储方法、装置及计算机存储介质,可以通过检测到数据采集指令的情况下,在flash存储器中读取已经写入的信息以及写入新的信息,一方面,无需额外移植文件系统,提高了存储效率,另一方面能够提通过增加flash容量,提高flash存储器的使用寿命与可靠性。
5.第一方面,本技术实施例提供了一种信息存储方法,应用于flash存储器,上述方法包括:
6.在检测到第一数据采集指令的情况下,读取存储在上述flash存储器中的第i条信息,上述第一数据采集指令携带第一增量数据;
7.在上述flash存储器中写入第i 1条信息,上述第i 1条信息是根据上述第i条信息和上述第一增量数据确定的。
8.上述flash存储器包括第一数据块、第二数据块,每个上述数据块包括n个索引和每个上述索引对应的信息域。
9.在一种实现方式中,上述n个索引具有初始值;上述在上述flash存储器中写入第i 1条信息,包括:
10.在上述第一数据块和上述第二数据块的第i 1个索引对应的信息域中写入上述第i 1条信息;1《=i《=n,i和n均为整数;
11.在上述第一数据块和上述第二数据块的第i 1个索引对应的信息域中成功写入上述第i 1条信息的情况下,将上述第一数据块和上述第二数据块的第i 1个索引的值均从上
述初始值修改为预设值。
12.在一种实现方式中,上述flash存储器还包括第三数据块,上述第三数据块包括n个索引和每个上述索引对应的信息域;上述方法还包括:
13.在上述第一数据块中写入上述第i 1条信息失败的情况下,在上述第三数据块的第i 1个索引对应的信息域中写入第i 1条信息;
14.在上述第三数据块的第i 1个索引对应的信息域中成功写入第i 1条信息的情况下,将上述第三数据块中第i 1个索引的值从上述初始值修改为上述预设值。
15.在一种实现方式中,上述将上述第三数据块中第i 1个索引的值从上述初始值修改为上述预设值之后,上述方法还包括:
16.将上述第三数据块中上述n个索引中上述第i 1个索引之前的i个索引的值均从上述初始值修改为上述预设值。
17.在一种实现方式中,从上述flash存储器中读取的上述第i条信息是:从上述第一数据块的第i个索引对应的信息域中读取得到的,上述第一数据块的第i个索引是上述第一数据块的上述n个索引中索引值等于上述预设值的最后一个索引。
18.在一种实现方式中,在从上述第一数据块的第i个索引对应的信息域中读取信息失败的情况下,从上述flash存储器中读取的上述第i条信息是:从上述第二数据块的第i个索引对应的信息域中读取得到的。
19.在一种实现方式中,上述方法还包括:
20.在检测到第二数据采集指令的情况下,读取存储在上述第三数据块中的第i 1个索引对应的信息域中的上述第i 1条信息,上述第二数据采集指令携带第二增量数据;
21.在上述第一数据块和上述第二数据块的第i 2个索引对应的信息域中写入第i 2条信息,上述第i 2条信息是根据上述第i 1条信息和上述第二增量数据确定的。
22.第二方面,本技术实施例提供一种信息存储装置,应用于flash存储器,上述信息存储装置包括:
23.读取单元,用于在检测到第一数据采集指令的情况下,读取存储在上述flash存储器中的第i条信息,上述第一数据采集指令携带第一增量数据;
24.写入单元,用于在上述flash存储器中写入第i 1条信息,上述第i 1条信息是根据上述第i条信息和上述第一增量数据确定的。
25.另外,该方面中,信息存储装置其他可选的实现方式可参见上述第一方面的相关内容,此处不再详述。
26.第三方面,本技术实施例提供了一种计算机设备,该设备包括存储器和处理器、收发器;上述处理器分别与上述存储器和上述收发器相连,其中,上述存储器存储有计算机程序代码,上述处理器和上述收发器用于调用上述程序代码,执行上述第一方面和/或第一方面任一种可能的实现方式提供的方法。
27.第四方面,本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现上述第一方面和/或第一方面任一种可能的实施方式所提供的方法。
28.在本技术实施例中,通过在检测到携带增量数据的数据采集指令的情况下读取存储在flash存储器中存储的第i条信息,并根据第i条信息和增量数据确定第i 1条信息,进
而将第i 1条信息写入flash存储器中。由此看来,此方案无需额外移植文件系统存储累计信息,避免了额外的资源开销,提高了存储效率,降低了频繁唤醒读写场景下的功耗,同时引入一种容错机制,增加了数据存储的可靠性,能够应用于低端嵌入式设备从休眠频繁唤醒进行读写的低功耗能源计量场景。
附图说明
29.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.图1是本技术实施例提供的一种信息存储方法的流程示意图;
31.图2是本技术实施例提供的一种信息存储方法的能源计量时序示意图;
32.图3是本技术实施例提供的一种从flash存储器中读取数据的流程示意图;
33.图4是本技术实施例提供的一种从flash存储器中写入数据的流程示意图;
34.图5是本技术实施例提供的一种从flash存储器中写入数据的又一流程示意图;
35.图6是本技术实施例提供的一种信息存储装置的结构示意图;
36.图7是本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
37.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.下面结合图1-图6对本技术实施例提供的一种信息存储方法进行示意性说明。
39.目前,在能源计量系统中,能源设备通常会存储累计信息,即某一种能源累计消耗的信息,例如用水、用电消耗,能源设备可以是水表、电表等设备。能源设备每次从休眠到唤醒时,能源设备需要获取存储的累计信息作为基准值,与本次消耗的增量数据进行累加,从而得到新的累计信息并存储,以便下一次使用。若是能源设备中的累计信息存储在能源设备的内存中,则在休眠之后可能会丢失存储的累计信息,无法再次进行累计。若是将累计信息以特定文件的形式存储在文件系统中,通过调用文件的读取接口读取累计信息以及写入新的累计信息,这种方式需要额外移植文件系统,并且在频繁大量写的场景下,功耗较高,可能会产生额外的资源开销。
40.基于上述描述,本技术实施例提供了一种信息存储方法,该方法应用于flash存储器,本技术实施例的信息存储方法可参阅图1,图1是本技术实施例提供的一种信息存储方法的流程示意图。该信息存储方法可以包括以下步骤101-102:
41.101、在检测到第一数据采集指令的情况下,读取存储在flash存储器中的第i条信息,上述第一数据采集指令携带第一增量数据。
42.具体的,本技术实施例中的信息存储方法可以应用于flash存储器,也可以应用于包括flash存储器的能源设备,需要说明的是,为了描述方便,以包括flash存储器的能源设备为例进行讲解。第一数据采集指令可以指能源设备检测到的本次能源消耗后(如有水流
过或者用电消耗),根据本次能源消耗的增量数据(第一增量数据),将存储在flash存储器中的累计信息作为基准值,与本次消耗的增量数据进行累加,得到新的累计信息并再次存储在该能源设备的flash存储器中的指令。进一步地,新的累计信息存储在flash存储器中以便下一次能源设备检测到数据采集指令时使用,每一次检测到数据采集指令时都是如此。
43.可以理解的是,在能源设备的flash存储器中存储的信息是累计信息,也是最新的累计信息,表示已经消耗的能源数据。示例性的,能源设备可以是水表,则水表的flash存储器中存储的是累计的用水信息,增量数据为本次检测到有水流过时的用水信息,例如可以是用水量。再一示例性的,能源设备还可以是电表,则电表的flash存储器中存储的是累计的用电信息,增量数据为本次检测到用电消耗时的用电信息,例如可以是用电量等。本技术对能源设备的具体形态不做限定,可具体根据业务场景所确定。
44.请一并参阅图2,图2是本技术实施例提供的一种信息存储方法的能源计量时序示意图,能源设备在每一次进行能源计量(即进行累加)的流程可以如图2所示,在检测到数据采集指令(第一数据采集指令)时,能源设备被唤醒,读取存储在flash存储器中的第i条信息,该第i条累计信息可以包括上一次检测到数据采集指令进行累加得到的累计信息,进而能源设备可以根据第i条信息和第一数据采集指令所携带的第一增量数据确定第i 1条信息,并将第i 1条信息写入在该flash存储器中,进一步地,该能源设备进入休眠,以节省资源,则一次累计的过程结束。其中,i可以为正整数。可选地,能源设备还可以在再次检测到数据采集指令(例如携带第二增量数据的第二数据采集指令)的情况下被唤醒,读取存储在flash存储器中的第i 1条信息,根据第二增量数据和第i 1条数据确定第i 2条信息,并将确定的第i 2条信息存储在该flash存储器中,并进入休眠,由此往复。
45.具体的,对于能源设备中的flash存储器来说,是一种非易失性存储器,存储信息具有较高的可靠性。在flash存储器中写入信息,即对flash存储器进行编程的原理是将数据(比特)从1变为0,而不能从0变为1,若flash存储器中的数据为1,则想再次在该flash存储器中写入信息,则无需擦除可以直接写入。若该flash存储器中已经写入数据,即部分或全部数据为0,需要先对该flash存储器进行擦除处理,所谓对flash存储器进行擦除处理是指把所有数据(比特)变为1,擦除后所有字节变为0xff。而flash存储器具有一定的擦写次数限制,即该擦写次数为该flash存储器的寿命,例如,nor flash存储器的擦写次数为10万次,该nor flash存储器的寿命为10万次擦写寿命。其中,在对flash存储器进行擦除的过程中,可以以扇区(sector)为单位进行擦除,还可以以数据块(块)(block)为单位进行擦除,本技术对此不做限定,具体可以根据使用的业务场景以及flash存储器的型号所确定。其中,所谓扇区(sector)是指flash存储器中最小的操作单位,所谓数据块(块)(block)是指包括多个相邻的扇区的部分,以便方便整体进行读写。
46.在一种可能的实现方式中,由于flash存储器存在一定擦写次数限制,为了提高flash存储器的寿命,上述能源设备中的flash存储器可以包括用于存储信息的第一数据块(block),该第一数据块可以包括头部和块身两个部分,其中,头部可以包括块状态信息,n个索引,块身可以包括每个索引对应的信息域,即n个信息域,每个信息域可以用于存储信息。其中,头部中的状态信息可以包括两种状态,即0和非0状态,分别标志当前数据块是否正在使用,例如0表示正在使用,非0表示没有正在使用。n个索引具有初始值,也可以叫做默
认值,n个索引的初始值为1,当某一个索引所对应的信息域中写入了信息后,该索引的值从初始值修改为预设值,预设值可以为0,即从1修改为0,则该索引用于标志该索引对应的信息域中已经写入了信息。由此看来,以数据块为擦写单位的话,flash存储器从上述写入一次信息擦写一次的频次降低到写满第一数据块中的n个信息域再擦写一次,即flash存储器的擦写寿命从10万次,变为了n个10万次,提高了flash存储器的寿命,也使得flash存储器可扩展。
47.示例性的,第一数据块的存储结构可以如表1所示,其中,以第一数据块包括4096字节为例进行讲解,还可以是其他存储结构,本技术对此不做限定。如表1所示,该第一数据块的块头部分包括的1字节的块状态,以及504个索引(n=504),每个索引占1个比特,即504个索引共占63字节(504/8=63),块身部分包括504个索引一一对应的504个信息域,如表1所示,可以每个信息域可以用于存储信息,即存储信息1-信息504,以擦写寿命为10万次为例,则以表1所示的存储结构进行存储可以将使用寿命扩大至504倍,即写如504次数据后再进行擦除。由此,通过增加存储容量,提高了flash存储器的使用寿命,也能更好的支持频繁读写的能源计量场景。
[0048][0049]
表1
[0050]
可选地,每个信息域可以包括8字节的信息,每个信息的存储结构可以如表2所示,每个信息可以包括时间戳和取值,该取值可以是上述每一次消耗后存储的累计信息,还可以包括其他信息,本技术对此不做限定。
[0051]
时间戳(4字节)取值(4字节)
[0052]
表2
[0053]
具体的,所谓读取存储在flash存储器中的第i条信息可以是当前flash存储器中的第一数据块和第二数据块中第1个索引-第i个索引对应的信息域均已写入了信息,此次需读取第i个索引对应的信息域中写入的第i个信息,即最新的一条信息(最后的一次累计信息),并根据第i个信息和第一增量数据确定第i 1个信息,将第i 1个信息写入第一数据块中。其中,i为大于或等于1且i小于或等于n的数据。其中,读取存储在第一数据块中的第i条信息,可以是从第一数据块的第i个索引对应的信息域中读取到的,即读取的是第i个索引对应的信息域中的信息。具体的,读取的过程可以是先读取块头部分的n个索引,在读取到第i个索引的索引值是n个索引中索引值等于预设值的最后一个索引时,将该第i个索引对应的信息域中存储的信息确定为本次要读取的信息,进而读取块身部分中该第i个索引对应的信息域中的信息。
[0054]
示例性的,例如第一数据块以上述表1的结构所示,以i=5为例,先读取块头部分
的504个索引,确定索引的初始值为1,预设值为0,则若读取到第5个索引的值为最后一个0的情况下,例如,504个索引分别是000001111

111(共504个),从左到右的顺序第5个0为最后一个0,则确定要读取的信息为从左到右的第5个索引对应的信息域中的信息。即从左到右的第5个0对应的信息域中存储的信息。
[0055]
其中,上述以504个索引是从左到右的顺序为例进行讲解的,504个索引还可以是从右到左的顺序。示例性的,504个索引分别是1111

11100000(共504个),从右到左的第5个0为504个索引中的最后一个0,则确定要读取的信息为从右到左的第5个索引对应的信息域中的信息,同理,即从右到左的第5个0对应的信息域中存储的信息。
[0056]
在一种可能的实现方式中,为了保证读取数据的准确性,flash存储器中除了包括第一数据块还可以包括与第一数据块存储结构相同的第二数据块,即第二数据块也包括n个索引和每个索引对应的信息域,n个信息域可以用于存储信息。第二数据块可以与第一数据块保持完全一致的擦写操作,即第二数据块中的数据可以与第一数据块的数据保持一致,相当于第二数据块是第一数据块的备份。可以理解的是,第一数据块和第二数据块所对应的地址不同,标识不同,能源设备可以根据不同的地址或者不同的标识确定是第一数据块或第二数据块。
[0057]
请一并参阅图3,图3是本技术实施例提供的一种从flash存储器中读取数据的流程示意图,包括但不限于步骤101a~101b。
[0058]
101a、从第一数据块的第i个索引对应的信息域中读取第i条信息。
[0059]
具体的,能源设备在读取第i条信息时,是需要先知道第i条信息存储的位置,即确定是哪一个索引对应的信息域中存储的信息为需要读取的第i条信息,则能源设备可以先读取第一数据块的块头部分的n个索引,在读取到第i个索引的索引值是n个索引中索引值等于预设值的最后一个索引时,将该第i个索引对应的信息域中存储的信息确定为本次要读取的信息,进而读取块身部分中该第i个索引对应的信息域中的信息。这是因为在写入信息时,依次在某一个索引对应的信息域中写入信息后,会对应修改索引的值,因此可以先通过读取索引的值来确定读取信息的位置。其中,修改该索引的值是从初始值修改为预设值,因此,在n个索引的序列中值为预设值的最后一个索引对应的信息域中存储的信息即为本次需要读取的信息。
[0060]
101b、在从上述第一数据块的第i个索引对应的信息域中读取信息失败的情况下,从第二数据块的第i个索引对应的信息域中读取第i条信息。
[0061]
其中,第一数据块可能会发生读取错误,即第一数据块无法返回读取的第i条信息中的取值,可能会直接返回错误。此时则表示从第一数据块的第i个索引对应的信息域中读取信息失败,则从第二数据块的第i个索引对应的信息域中读取第i条信息。因此,第二数据块可以在一定程度上保证读取信息是正确的,即可以进行容错,即可以解决预防读取错误的问题。
[0062]
可选地,在第二数据块读取信息时,可以是已知i的值,例如上述i的值为5,由于第二数据块的存储结构与第一数据块相同,且第二数据块的读写操作与第一数据块的读写操作相同,即数据可以保持一致性,则可以直接根据第一数据块确定的第i个索引(第5个索引)从第二数据块中进行读取第5个索引对应的信息域中的第5条信息。可选地,在第二数据块读取信息也可以是先读取第二数据块的块头信息中的n个索引,读取到第i个索引为上述
第一数据块的上述n个索引中索引值为上述预设值的最后一个索引时,读取第i个索引对应的信息域中的信息,即第i条信息,即可以重新再读取一次第二数据块中的块头部分,确定读取的是具体的某一个信息域中的信息。
[0063]
进一步地,根据第一采集指令所携带的第一增量数据以及第i条信息中包括的取值,该取值为上一次的能源消耗的累计信息,以及时间戳确定第i 1条信息,即本次能源消耗的累计信息,并在上述第一数据块和第二数据块中写入该第i 1条信息,例如上述第6条信息。
[0064]
102、在上述flash存储器中写入第i 1条信息,上述第i 1条信息是根据上述第i条信息和上述第一增量数据确定的。
[0065]
具体的,以每条信息的结构如表2所示为例,根据第i条信息和第一增量数据确定第i 1个取值,并根据当前时间信息确定时间戳,从而得到第i 1条信息,进而可以将第i 1条信息写入第一数据块和第二数据块。其中,第i 1条信息中的第i 1个取值可以是第i条信息中的取值与第一增量数据的累加结果,例如用水量的累计,用电量的累计。
[0066]
请一并参阅图4,图4是本技术实施例提供的一种从flash存储器中写入数据的流程示意图,包括但不限于步骤102a~102d。
[0067]
102a、在第一数据块和第二数据块的第i 1个索引对应的信息域中写入第i 1条信息。
[0068]
其中,在上述表1所示的存储结构中第i条信息的按照写入时间顺序的下一个信息域中写入第i 1条信息,即将包括当前的时间戳和取值的第i 1条信息写入第一数据块和第二数据块中第i 1个索引对应的信息域中。
[0069]
102b、在上述第一数据块和上述第二数据块的第i 1个索引对应的信息域中成功写入上述第i 1条信息的情况下,将上述第一数据块和上述第二数据块的第i 1个索引的值均从上述初始值修改为预设值。
[0070]
其中,每一个索引对应标识一个信息域是否写入信息,若写入信息,则将索引的值从初始值(如初始值为1)修改为预设值(如预设值为0),以便后续进行读取。
[0071]
在一种可能的实现方式中,对于flash存储器来说,除了存在使用寿命,即擦写次数限制,还存在不能容错的问题,即写入数据发生错误,则无法进行修改,只能再次擦除后重新写入。在本技术实施例中,为了使得flash存储器具有容错的性能,该flash存储器中还可以包括第三数据块,第三数据块的存储结构可以与第一数据块和第二数据块的存储结构相同,第三数据块具有与第一数据块和第二数据块不同的标识以及地址,以便标识该第三数据块以及后续的写入。其中,第三数据块不必与第一数据块保持完全一致的擦写操作,第三数据块可以是一个空白的数据块,该第三数据块仅用于容错保护。即仅在第一数据块写入发生错误的情况下,在第三数据块中对应的位置写入信息。
[0072]
102c、在上述第一数据块中写入上述第i 1条信息失败的情况下,在上述第三数据块的第i 1个索引对应的信息域中写入第i 1条信息。
[0073]
示例性的,仍以上述i为5为例进行讲解,则第i 1条信息为第6条信息,在第一数据块中写入第6条信息失败的情况下,在第三数据块的第6索引对应的信息域中写入第6条信息。需要说明的是,在第一数据块中,由于第i条信息写入失败,则无需修改第一数据块中的第i个索引的值,即该第一数据块中第i个索引的值仍为初始值(例如初始值为1)。可选地,
虽然第一数据块写入失败了,但是第二数据块仍写入第i 1条信息,第二数据块中的第i 1个索引的值仍可以从初始值修改为预设值。
[0074]
102d、在上述第三数据块的第i 1个索引对应的信息域中成功写入第i 1条信息的情况下,将上述第三数据块中第i 1个索引的值从上述初始值修改为上述预设值。
[0075]
同理,第三数据块中的第i 1条信息可以用于标识该第i 1个索引对应的信息域已经写入信息。可选地,还可以将第三数据块中的n个索引中在第i 1个索引之前的i个索引的值均从上述初始值修改为上述预设值。示例性的,以i为5为例,在第一数据块中写入第6条信息失败的情况下,此时以第三数据块为空白数据块为例,则第三数据块的504个索引的值均为初始值(例如初始值为1),111111

111(共504个)。此时,在第三数据块的第6个索引对应的信息域中写入上述确定的第6条信息,则前6个索引值可以是111110,即仅是将第6个索引的值从初始值(例如初始值为1)修改为预设值(例如预设值为0)。进一步地,可以将前5个索引的值也从初始值修改为预设值,从而得到第三数据块当前的索引000000,这里省略了第7个索引-第504个索引,可以理解的是第7个索引-第504个索引的值均为1。需要说明的是,这里的示例也是按照n个索引是从左到右的顺序进行举例的,本技术对n个索引的顺序不做限定,实际可以是从右到左的顺序,例如上述在第三数据块的第6个索引对应的信息域中写入上述确定的第6条信息,则前6个索引值可以是011111,进一步将前5个索引的值从初始值修改为预设值,从而得到索引000000。
[0076]
请一并参阅图5,图5是本技术实施例提供的一种从flash存储器中写入数据的的又一流程示意图,包括但不限于步骤102e~102f。
[0077]
102e、在检测到第二数据采集指令的情况下,读取存储在第三数据块中的第i 1个索引对应的信息域中的第i 1条信息,上述第二数据采集指令携带第二增量数据。
[0078]
需要说明的是,由于本次第一数据块中第i 1条信息写入失败,则在下一次读取数据时,不能从第一数据块的第i 1个索引对应的信息域中读取该第i 1条信息,则下一次读取数据时,能源设备可以直接从flash存储器中的第三数据块的第i 1个索引对应的信息域中读取该第i 1条信息。
[0079]
102f、在第一数据块和第二数据块的第i 2个索引对应的信息域中写入第i 2条信息。
[0080]
其中,在下一次检测到数据采集指令的情况下,该数据采集指令携带第二增量数据,该第二数据采集指令可以是能源设备再次检测到有水流过或者用电后触发的,则能源设备根据第二增量数据和第i 1条信息确定第i 2条信息,进而在第一数据块和第二数据块中写入第i 2条信息,由此往复。由此看来,第三数据块可以预防在flash存储器中写入数据发生写错误,从而实现容错保护机制,提高了flash存储器的容错率。
[0081]
在一种可能的实现方式中,能源设备可以作为一种窄带物联网(narrow band internet of things,nb-iot)的设备,可以通过窄带(narrow band,nb)模组进行通信,例如可以接收配置指令,该配置指令用于配置flash存储器中包括的数据块的个数和数据块的信息,例如每条信息的字节数等。对于累计能源消耗的部分可以通过能源设备中的微控制单元(microcontroller unit,mcu)来实现,即将nb模组挂载在mcu上,并受mcu的控制,nb模组仅负责通信的业务,例如上述接收配置指令。其中,能源设备也可以采用开放式中央处理器的方式(open central processing unit,open-cpu)。所谓open-cpu是指以模块作为
主处理器的应用方式,将nb模组作为一种模块,这种方式既处理应用层业务同时也处理通信相关业务,这种方式能够有利于减小产品尺寸、降低产品开发周期。
[0082]
本技术以open-cpu的方式为例进行讲解,可以分为处理应用层业务的open-cpu状态以及处理通信相关业务的通信状态。能源设备可以通过物理按键、虚拟按键、滚轮、应用界面中操作等方式对能源设备进行操作,切换上述两种状态。能源设备在上电后,可以通过接收携带配置信息的配置指令,例如,at(attention)通信指令,该配置指令可以用于配置flash存储器中数据块的个数和数据块的具体配置,并将该配置信息保存起来,例如保存在flash存储器中的特定位置,以便下一次上电时,切换至open-cpu状态读取存储的配置信息并具体对各个数据块进行配置,并在open-cpu状态进行休眠、读取存储在数据块中的信息以及写入信息的业务。
[0083]
其中,需要说明的是,flash存储器的存储空间和划分区域是有限的,一般来说,划分的数据块的个数越多,则可靠性越高,flash存储器的寿命也越长,但是存储空间越紧张,因此,在对数据块进行配置的过程中需要在flash存储器的可靠性、寿命与flash的容量之间进行折中选择。进一步需要说明的是,本技术以3个数据块,即第一数据块、第二数据块以及第三数据块为例进行讲解,为了保证读取的数据正确,还可以配置第四数据块也与第一数据块保持相同的擦写操作,在第一数据块和第二数据块均读数据失败的情况下进行数据读取,同理,还可以配置第五数据块用于在第一数据块、第三数据块均写入数据失败的情况下进行写入。可以理解的是,每增加一个数据块,同时写入数据错误的可能性越小,从而提高了容错性。
[0084]
在本技术实施例中,通过在检测到携带增量数据的数据采集指令的情况下读取存储在flash存储器中存储的第i条信息,并根据第i条信息和增量数据确定第i 1条信息,进而将第i 1条信息写入flash存储器中。由此看来,此方案无需额外移植文件系统存储累计信息,避免了额外的资源开销,提高了存储效率,降低了频繁唤醒读写场景下的功耗,同时引入一种容错机制,增加了数据存储的可靠性,能够应用于低端嵌入式设备从休眠频繁唤醒进行读写的低功耗能源计量场景。
[0085]
请参阅图6,图6是本技术实施例提供的一种信息存储装置的结构示意图。该信息存储装置60包括:
[0086]
读取单元601,用于在检测到第一数据采集指令的情况下,读取存储在上述flash存储器中的第i条信息,上述第一数据采集指令携带第一增量数据;
[0087]
写入单元602,用于在上述flash存储器中写入第i 1条信息,上述第i 1条信息是根据上述第i条信息和上述第一增量数据确定的。
[0088]
在一种实现方式中,上述flash存储器包括第一数据块、第二数据块,每个上述数据块包括n个索引和每个上述索引对应的信息域。
[0089]
在一种实现方式中,上述n个索引具有初始值;上述写入单元602在上述flash存储器中写入第i 1条信息,具体用于:
[0090]
在上述第一数据块和上述第二数据块的第i 1个索引对应的信息域中写入上述第i 1条信息;1《=i《=n,i和n均为整数;
[0091]
在上述第一数据块和上述第二数据块的第i 1个索引对应的信息域中成功写入上述第i 1条信息的情况下,将上述第一数据块和上述第二数据块的第i 1个索引的值均从上
述初始值修改为预设值。
[0092]
在一种实现方式中,上述flash存储器还包括第三数据块,上述第三数据块包括n个索引和每个上述索引对应的信息域;上述写入单元602还用于在上述第一数据块中写入上述第i 1条信息失败的情况下,在上述第三数据块的第i 1个索引对应的信息域中写入第i 1条信息;
[0093]
修改单元603,用于在上述第三数据块的第i 1个索引对应的信息域中成功写入第i 1条信息的情况下,将上述第三数据块中第i 1个索引的值从上述初始值修改为上述预设值。
[0094]
在一种实现方式中,上述修改单元603,还用于将上述第三数据块中上述n个索引中上述第i 1个索引之前的i个索引的值均从上述初始值修改为上述预设值。
[0095]
在一种实现方式中,从上述flash存储器中读取的上述第i条信息是:从上述第一数据块的第i个索引对应的信息域中读取得到的,上述第一数据块的第i个索引是上述第一数据块的上述n个索引中索引值等于上述预设值的最后一个索引。
[0096]
在一种实现方式中,在从上述第一数据块的第i个索引对应的信息域中读取信息失败的情况下,从上述flash存储器中读取的上述第i条信息是:从上述第二数据块的第i个索引对应的信息域中读取得到的。
[0097]
在一种实现方式中,上述读取单元601还用于在检测到第二数据采集指令的情况下,读取存储在上述第三数据块中的第i 1个索引对应的信息域中的上述第i 1条信息,上述第二数据采集指令携带第二增量数据;
[0098]
写入单元602,还用于在上述第一数据块和上述第二数据块的第i 2个索引对应的信息域中写入第i 2条信息,上述第i 2条信息是根据上述第i 1条信息和上述第二增量数据确定的。
[0099]
根据本技术的一个实施例,图1所示的信息存储方法所涉及的部分步骤可由图6所示的信息存储装置中的各个单元来执行。例如,图1中所示的步骤101可由图6所示的读取单元601执行,步骤102可由图6所示的写入单元602执行。
[0100]
图6所示的信息存储装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本技术的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本技术的其它实施例中,信息存储装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
[0101]
根据本技术的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算装置上运行能够执行如图1中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图6中所示的信息存储装置,以及来实现本技术实施例的信息存储方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算装置中,并在其中运行。
[0102]
基于同一发明构思,本技术实施例中提供的信息存储装置解决问题的原理与有益效果与本技术方法实施例中信息存储装置解决问题的原理和有益效果相似,可以参见方法
的实施的原理和有益效果,为简洁描述,在这里不再赘述。
[0103]
请参阅图7,图7为本技术实施例提供的一种计算机设备的结构示意图,上述计算机设备至少包括处理器701、通信接口702和存储器703。其中,处理器701、通信接口702和存储器703可通过总线或其他方式连接,本技术实施例以通过总线连接为例。其中,处理器701(或称中央处理器(central processing unit,cpu))是计算机设备的计算核心以及控制核心,其可以解析终端设备内的各类指令以及处理终端设备的各类数据,例如:cpu可以用于解析用户向终端设备所发送的开关机指令,并控制终端设备进行开关机操作;再如:cpu可以在终端设备内部结构之间传输各类交互数据,等等。通信接口702可选的可以包括标准的有线接口、无线接口(如wi-fi、移动通信接口等),受处理器701的控制可以用于收发数据;通信接口702还可以用于终端设备内部数据的传输以及交互。存储器703(memory)是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器703既可以包括终端设备的内置存储器,当然也可以包括终端设备所支持的扩展存储器。存储器703提供存储空间,该存储空间存储了终端设备的操作系统,可包括但不限于:android系统、ios系统、windows phone系统等等,本技术对此并不作限定。
[0104]
在一个实施例中,该计算机设备可以为能源设备,该计算机设备可以包括flash存储器,该计算机设备也可以为flash存储器。在此情况下,处理器701通过运行存储器703中的可执行程序代码,执行如下操作:
[0105]
在检测到第一数据采集指令的情况下,读取存储在上述flash存储器中的第i条信息,上述第一数据采集指令携带第一增量数据;
[0106]
在上述flash存储器中写入第i 1条信息,上述第i 1条信息是根据上述第i条信息和上述第一增量数据确定的。
[0107]
在一种实现方式中,上述flash存储器包括第一数据块、第二数据块,每个上述数据块包括n个索引和每个上述索引对应的信息域。
[0108]
在一种实现方式中,上述n个索引具有初始值;上述处理器701通过运行存储器703中的可执行程序代码在上述flash存储器中写入第i 1条信息,具体用于执行如下操作:
[0109]
在上述第一数据块和上述第二数据块的第i 1个索引对应的信息域中写入上述第i 1条信息;1《=i《=n,i和n均为整数;
[0110]
在上述第一数据块和上述第二数据块的第i 1个索引对应的信息域中成功写入上述第i 1条信息的情况下,将上述第一数据块和上述第二数据块的第i 1个索引的值均从上述初始值修改为预设值。
[0111]
在一个实现方式中,上述flash存储器还包括第三数据块,上述第三数据块包括n个索引和每个上述索引对应的信息域;上述处理器701通过运行存储器703中的可执行程序代码还用于执行如下操作:
[0112]
在上述第一数据块中写入上述第i 1条信息失败的情况下,在上述第三数据块的第i 1个索引对应的信息域中写入第i 1条信息;
[0113]
在上述第三数据块的第i 1个索引对应的信息域中成功写入第i 1条信息的情况下,将上述第三数据块中第i 1个索引的值从上述初始值修改为上述预设值。
[0114]
在一个实现方式中,上述处理器701通过运行存储器703中的可执行程序代码还用于执行如下操作:
[0115]
将上述第三数据块中上述n个索引中上述第i 1个索引之前的i个索引的值均从上述初始值修改为上述预设值。
[0116]
在一个实现方式中,从上述flash存储器中读取的上述第i条信息是:从上述第一数据块的第i个索引对应的信息域中读取得到的,上述第一数据块的第i个索引是上述第一数据块的上述n个索引中索引值等于上述预设值的最后一个索引。
[0117]
在一个实现方式中,在从上述第一数据块的第i个索引对应的信息域中读取信息失败的情况下,从上述flash存储器中读取的上述第i条信息是:从上述第二数据块的第i个索引对应的信息域中读取得到的。
[0118]
在一个实现方式中,上述处理器701通过运行存储器703中的可执行程序代码还用于执行如下操作:
[0119]
在检测到第二数据采集指令的情况下,读取存储在上述第三数据块中的第i 1个索引对应的信息域中的上述第i 1条信息,上述第二数据采集指令携带第二增量数据;
[0120]
在上述第一数据块和上述第二数据块的第i 2个索引对应的信息域中写入第i 2条信息,上述第i 2条信息是根据上述第i 1条信息和上述第二增量数据确定的。
[0121]
基于同一发明构思,本技术实施例中提供的计算机设备解决问题的原理与有益效果与本技术方法实施例中信息存储方法解决问题的原理和有益效果相似,可以参见方法的实施的原理和有益效果,为简洁描述,在这里不再赘述。
[0122]
本技术实施例还提供一种计算机可读存储介质,上述计算机可读存储介质中存储有一条或多条程序指令,上述一条或多条程序指令适于由处理器加载并执行上述方法实施例上述的信息存储方法。
[0123]
本技术实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法实施例上述的信息存储方法。
[0124]
本技术实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述信息存储方法。
[0125]
本技术实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0126]
本技术实施例装置中的模块可以根据实际需要进行合并、划分和删减。
[0127]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,可读存储介质可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
[0128]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0129]
本发明的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于
覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0130]
以上所揭露的仅为本技术一种较佳实施例而已,当然不能以此来限定本技术之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本技术权利要求所作的等同变化,仍属于本发明所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献