非易失性存储器的数据块的更新方法及更新装置与流程

文档序号:26586947发布日期:2021-09-10 19:37阅读:73来源:国知局
非易失性存储器的数据块的更新方法及更新装置与流程

1.本发明涉及电力系统领域,特别是一种非易失性存储器的数据块的更新方法及更新装置。


背景技术:

2.随着工业化以及电力物联网的飞速发展,越来越多的嵌入式设备应用其中,例如充电桩或各传感器等设备。由于成本的限制,这些嵌入式设备中会选择容量较小的非易失性存储器(non

volatile memory,nvm),非易失性存储器能够保证其中的数据不会因为嵌入式设备掉电而丢失,非易失性存储器例如为flash或eeprom。非易失性存储器中具有多个数据块(data block),各数据块按顺序连续排列在一起。
3.实际应用中,该嵌入式设备的固件要进行更新,例如从一个旧版本升级为一个新版本,非易失性存储器的数据块要进行相应的调整。因此,如何有效地进行版本的更新成为亟需解决的问题。


技术实现要素:

4.有鉴于此,本发明提出了一种非易失性存储器的数据块的更新方法,所述更新方法应用于一个嵌入式设备,所述嵌入式设备具有非易失性存储器,该非易失性存储器中各数据块连续排列,所述更新方法包括:
5.在一个嵌入式设备的固件从旧版本更新为一个新版本之后,获取新版本中各数据块的默认索引,所述新版本中的每个数据块具有唯一的默认索引,所述旧版本中每个数据块具有唯一的原始索引,至少有一个所述默认索引与所述原始索引的值不同,或者至少有一个索引值相同的的数据块在所述旧版本中与新版本中大小不同;
6.若识别出原始索引与默认索引的索引值相同,则将该原始索引对应的数据块的数据迁移至该默认索引对应的数据块中。
7.根据如上所述的更新方法,可选地,所述新版本中的数据块的总数与所述旧版本中的数据块的总数不同。
8.根据如上所述的更新方法,可选地,所述新版中的数据块的总数大于所述旧版本中数据块的总数,且新版中多出的数据块位于最后一个数据块之前。
9.根据如上所述的更新方法,可选地,将该原始索引对应的数据块的数据迁移至该默认索引对应的的数据块中包括:
10.将该原始索引对应的数据块中的数据依次迁移至该默认索引对应的数据块中,直至将该原始索引对应的数据块中的数据完全迁移至该默认索引对应的数据块中,或者直至将该默认索引对应的数据块填满,停止迁移操作。
11.根据如上所述的更新方法,可选地,获取新版本中各数据块的默认索引包括:
12.在一个结构体中获取新版中各数据块的默认索引,所述结构体位于第1个数据块的前面,所述结构体中包括各数据块的默认索引、偏移量以及大小信息。
13.本发明提供另一种非易失性存储器的数据块的更新装置,所述更新装置应用于一个嵌入式设备,所述嵌入式设备具有非易失性存储器,该非易失性存储器中各数据块连续排列,所述更新装置包括:
14.一个获取单元,用于在一个嵌入式设备的固件从旧版本更新为一个新版本之后,获取新版本中各数据块的默认索引,所述新版本中的每个数据块具有唯一的默认索引,所述旧版本中每个数据块具有唯一的原始索引,至少有一个所述默认索引与所述原始索引的值不同,或者至少有一个索引值相同的的数据块在所述旧版本中与新版本中大小不同;
15.一个迁移单元,用于若识别出原始索引与默认索引的索引值相同,则将该原始索引对应的数据块的数据迁移至该默认索引对应的数据块中。
16.根据如上所述的更新装置,可选地,所述新版本中的数据块的总数与所述旧版本中的数据块的总数不同。
17.根据如上所述的更新装置,可选地,所述新版中的数据块的总数大于所述旧版本中数据块的总数,且新版中多出的数据块位于最后一个数据块之前。
18.根据如上所述的更新装置,可选地,所述迁移单元具体用于:
19.将该原始索引对应的数据块中的数据依次迁移至该默认索引对应的数据块中,直至将该原始索引对应的数据块中的数据完全迁移至该默认索引对应的数据块中,或者直至将该默认索引对应的数据块填满,停止迁移操作。
20.根据如上所述的更新装置,可选地,所述获取单元具体用于:
21.在一个结构体中获取新版中各数据块的默认索引,所述结构体位于第1个数据块的前面,所述结构体中包括各数据块的默认索引、偏移量以及大小信息。
22.本发明提供再提供了一种非易失性存储器的数据块的更新装置,所述更新装置应用于一个嵌入式设备,所述嵌入式设备具有非易失性存储器,该非易失性存储器中各数据块连续排列,包括:
23.至少一个存储器,其用于存储指令;
24.至少一个处理器,其用于根据所述存储器存储的指令执行根据如上任一项所述的非易失性存储器的数据块的更新方法。
25.本发明又提供了一种可读存储介质,所述可读存储介质中存储有机器可读指令,所述机器可读指令当被一个机器执行时,所述机器执行根据如上任一项所述的非易失性存储器的数据块的更新方法。
26.从上述方案中可以看出,由于本发明迁移数据时的参照物是新版本中数据块的索引以及旧版本中数据块的索引,与数据块本身的顺序无关,因此新版本中若扩充数据块可以添加在任何位置,还能够保证数据的连续性。此外,还能够通过索引来删除数据块,节省了非易失性存储器中的存储资源。再者,该更新方法由于获取的是旧版本中的数据,对于这部分数据无需处理兼容性问题,能够极大降低后期维护的工作量。
附图说明
27.下面将通过参照附图详细描述本发明的优选实施例,使本领域的普通技术人员更清楚本发明的上述及其它特征和优点,附图中:
28.图1为根据本发明一实施例的非易失性存储器的数据块的更新方法的流程示意
图。
29.图2a为根据本发明一实施例的非易失性存储器的版本升级的结构示意图。
30.图2b为根据本发明一实施例的具有结构体的非易失性存储器的结构示意图。
31.图3为根据本发明一实施例的非易失性存储器的数据块的更新装置的结构示意图。
具体实施方式
32.为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
33.实施例一
34.本实施例提供一种非易失性存储器的数据块的更新方法,该更新方法的执行主体为非易失性存储器的数据块的更新装置,该更新装置可以集成在嵌入式设备中。步骤101,在一个嵌入式设备的固件从旧版本更新为一个新版本之后,获取新版本中各数据块的默认索引。
35.其中,新版本中和旧版中的每个数据块均具有唯一索引,为了便于区分,将新版中的索引称为默认索引,将旧版本中的索引称为原始索引。本实施例中,新版本中至少有一个默认索引与原始索引的值不同,或者至少有一个索引值相同的的数据块在旧版本中与新版本中大小不同。具体地,新版中的数据块的总数可以与旧版中数据块的总数不同,例如,新版中的数据块的总数大于旧版中的数据块的总数。
36.嵌入式设备是能够独立进行运作的器件,相比于一般的计算机处理系统而言,嵌入式设备存在较大的差异性,因为它不能实现大容量的存储功能。为了使数据在断电后不丢失,本实施例的嵌入式设备具有非易失性存储器,该非易失性存储器中各数据块连续排列。
37.本实施例中,固件(firmware)是指设备内部保存的设备的驱动程序,固件使用的数据存储在各数据块中。随着技术的进步,固件往往面临着更新的情况,即从旧版本更新到新版本。新版本中,通常是数据块的总数与旧版本的不同或者某个索引值相同的数据块与旧版本中的数据块的大小不同。
38.本实施例中,为两个版本中的每个数据块分配匹配唯一的索引。对于新版本,其固件中需要哪些数据以及需要在哪里扩充数据块已经预先设定好。即,在步骤101之前,可以为新版中所有的数据块配置默认索引和默认值。
39.作为一个示例性说明,为新版本中的一个数据块配置默认索引,且该默认索引的值与各原始索引的值均不相同。这样,新版本中至少有一个数据块由于默认索引与在旧版本中找不到匹配的原始索引,不会被迁移旧版本中的数据,相当于实现了数据块的扩充,且该新增的数据块所在的位置可以根据实际需要任意选择,例如位于最后一个数据块之前,相当于实现了将该数据块插入到最后一个数据块之前的任何位置,即本实施例除了能够在最后一个数据块之后增加新的数据块,还可以在其它任何位置增加数据块,非常方便。
40.作为另一个示例性说明,新版本中一个数据块的默认索引与旧版中的一个数据块的原始索引的值相同,但是两个数据块的大小不同,新版本中的数据块可以大于或者小于旧版本中的数据块。例如,对于索引值相同的数据块,当新版本中的数据块大的时候,可以
将旧版本中的所有数据迁移过来,数据块中剩余的字节被预先设置为默认值;当新版本中的数据块小的时候,可以将旧版本中前部分数据迁移至新版本中,旧版本中剩余的数据被删除,这样就实现了空间的回收。此外,索引值相同的新版本中的数据块与旧版本中的数据块的顺序可以相同也可以不同,例如旧版本中的数据块的顺序为第4个,新版本中的数据块的顺序为第3个。由于各个数据块是连续排列的,每个数据块都有自己的顺序,例如是第1个还是第2个数据块,因此相同顺序就是指连续排列后所在的相同的序号,相同顺序的两个数据块的起始位置可以相同也可以不同。
41.这里的索引可以采用任意的形式,例如数字、字母或者数据和字母的组合,还可以是采用特殊符号,具体可以根据实际需要设定,在此不再限定。
42.步骤102,若识别出原始索引的值与默认索引的值相同,则将该原始索引对应的数据块的数据迁移至该默认索引对应的的数据块中。
43.更新装置对比两个版本的数据块的索引,如果值相等,则将原始索引对应的数据块中的数据迁移至值相同的默认索引对应的数据块中。举例来说,原始索引为1a,默认索引也为1a,则可以将1a对应的旧版本中的数据块中的数据迁移至新版本中索引同样为1a的数据块中。具体如何从旧版本中迁移数据至新版本中属于现有技术,在此不再赘述。
44.更为具体地,更新装置可以遍历新版本中的各数据块的默认索引,每识别一个就去旧版本中看看有没有值相同的原始索引,如果有,就进行数据的迁移,如果没有就识别下一个数据块的默认索引。
45.可选地,第1个数据块的前面可以具有一个结构体,该结构体中包括各数据块的默认索引、偏移量以及大小信息,这样,更新装置可以不用遍历各数据块,在该结构体中就可以获取到所有数据块的相关信息,并确定是否有原始索引的值与默认索引的值相同,如果相同,就将旧版本中的数据块的数据迁移值新版中对应的数据块中。采用结构体存储各数据块的相关信息,使得在寻找默认索引时非常便利,时间花费较少,处理速度快。对于旧版本同样可以具有一个类似的结构体,该旧版本中的结构体与新版本中的结构体在非易失性存储器存储位置可以相同,该结构体在更新前存储的旧版本索引和数据,在更新完成后,新版本的固件先将旧版本的默认索引和数据读出,并做数据迁移,数据迁移完成后,将新版本的默认索引和数据写回非易失性存储器存储的相应位置。
46.该步骤102具体可以包括:将该原始索引对应的数据块中的数据依次迁移至该默认索引对应的数据块中,直至将该原始索引对应的数据块中的数据完全迁移至该默认索引对应的数据块中,或者直至将该默认索引对应的数据块填满,停止迁移操作。如果新版本中的数据块大于旧版本中相同索引值的数据块,旧版本中的数据就能够完全迁移到新版本中,如果新版本中的数据块小于旧版本中的数据块,那么旧版中的数据块的前部分内容够被迁移到新版本中,剩余的内容在新版本中被删除。
47.根据本实施例的非易失性存储器的数据块的更新方法,由于迁移数据时的参照物是新版本中数据块的索引以及旧版本中数据块的索引,与数据块本身的顺序无关,因此新版本中若扩充数据块可以添加在任何位置,还能够保证数据的连续性。此外,还能够通过索引来删除数据块,节省了非易失性存储器中的存储资源。再者,该更新方法由于获取的是旧版本中的数据,对于这部分数据无需处理兼容性问题,能够极大降低后期维护的工作量。
48.实施例二
49.本实施例对实施例一的非易失性存储器的数据块的更新方法做具体举例说明。
50.如图2a所示,嵌入式设备中的固件从旧版本v1.0升级到新版本v2.0。图2示出了最终升级的结果。两个版本中示出了两个模块,分别为模块1和模块2。v1.0中的模块1具有3个数据块,分别是数据块1a、数据块1b以及数据块1c,其中1a、1b、1c就是前述的原始索引;模块2具有2个数据块,分别是数据块2a和2b,其中2a和2b就是前述的原始索引。在v2.0中,模块1中具有4个数据块,分别是数据块1a、数据块1b、数据块1c以及数据块1c,其中,1a、1b、1c和1d就是前述的默认索引,这是根据实际需要预先设定好的;模块2具有1个数据块,为数据块2a,2a为默认索引,即在v2.0中有一个属于模块1的新数据块1d,并且需要废弃v1.0中的数据块2b。其中旧版本中数据块1c的大小为56个字节,新版本中数据块1c的大小为60个字节。
51.首先,在嵌入式设备的固件升级完成后,启动嵌入式设备,将v2.0中数据块恢复为默认值。然后遍历v2.0中的数据块的默认索引,若v1.0中也有值相同的原始索引,则将该原始索引对应的数据迁移到v2.0中。如图2a的箭头所示,v1.0中的数据块1a、数据块1b、数据块1c以及2a的数据均迁移至v2.0,并且识别出数据块1d在v1.0中没有索引相同的数据块,跳过该数据块1d。其中v1.0中的数据块1c的56个字节的数据均迁移至v2.0的数据块1c中,v2.0中的数据块1c的后4个字节在更新完成后启动嵌入式设备时已经恢复成默认值,后续也可以根据实际需要写入数据。v1.0中的数据块2b中的数据被删除。由于数据块都是连续的,相当于v1.0中的数据块2b的位置被其他数据块替代,可以供其他数据块使用,避免空间的浪费。
52.如图2b所示,可以在旧版本和新版本中的第1个数据块之前增加一个结构体201,该结构体定义了每个数据块的顺序、偏移量以及大小,这样便于识别数据块。该结构体201可以是在固件升级之前预先配置后的,在固件升级完成后存在于非易失性存储器中。
53.实施例三
54.本实施例提供一种非易失性存储器的数据块的更新装置,该更新装置应用于一个嵌入式设备,例如位于嵌入式设备中,嵌入式设备具有非易失性存储器,该非易失性存储器中各数据块连续排列。该更新装置能够执行前述实施例的非易失性存储器的数据块的更新方法。
55.如图3所示,为根据本实施例的非易失性存储器的数据块的更新装置。该更新装置包括一个获取单元301和一个迁移单元302,其中获取单元301用于在一个嵌入式设备的固件从旧版本更新为一个新版本之后,获取新版本中各数据块的默认索引,新版本中的每个数据块具有唯一的默认索引,旧版本中每个数据块具有唯一的原始索引,至少有一个默认索引与原始索引的值不同,或者至少有一个索引值相同的的数据块在旧版本中与新版本中大小不同;迁移单元302用于若识别出原始索引与默认索引的索引值相同,则将该原始索引对应的数据块的数据迁移至该默认索引对应的数据块中。
56.可选地,新版本中的数据块的总数与旧版本中的数据块的总数不同。
57.可选地,新版中的数据块的总数大于旧版本中数据块的总数,且新版中多出的数据块位于最后一个数据块之前。
58.可选地,迁移单元302具体用于将该原始索引对应的数据块中的数据依次迁移至该默认索引对应的数据块中,直至将该原始索引对应的数据块中的数据完全迁移至该默认
索引对应的数据块中,或者直至将该默认索引对应的数据块填满,停止迁移操作。
59.可选地,获取单元301具体用于:
60.在一个结构体中获取新版中各数据块的默认索引,结构体位于第1个数据块的前面,结构体中包括各数据块的默认索引、偏移量以及大小信息。
61.本实施例的各个单元的工作方法与前述实施例相同,在此不再赘述。
62.根据本实施例的非易失性存储器的数据块的更新装置,由于迁移数据时的参照物是新版本中数据块的索引以及旧版本中数据块的索引,与数据块本身的顺序无关,因此新版本中若扩充数据块可以添加在任何位置,还能够保证数据的连续性。此外,还能够通过索引来删除数据块,节省了非易失性存储器中的存储资源。再者,该更新方法由于获取的是旧版本中的数据,对于这部分数据无需处理兼容性问题,能够极大降低后期维护的工作量。
63.本实发明还提供一种非易失性存储器的数据块的更新装置,更新装置应用于一个嵌入式设备,嵌入式设备具有非易失性存储器,该非易失性存储器中各数据块连续排列,其中更新装置包括至少一个存储器和至少一个处理器。其中,存储器用于存储指令。处理器用于根据存储器存储的指令执行前述任意实施例所描述的非易失性存储器的数据块的更新方法。
64.本发明的实施例还提供一种可读存储介质。该可读存储介质中存储有机器可读指令,机器可读指令当被一个机器执行时,机器执行前述任意实施例所描述的非易失性存储器的数据块的更新方法。
65.该可读介质上存储有机器可读指令,该机器可读指令在被处理器执行时,使处理器执行前述的任一种方法。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的机器可读指令。
66.在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
67.可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd

rom、cd

r、cd

rw、dvd

rom、dvd

ram、dvd

rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
68.本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
69.需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
70.以上各实施例中,硬件单元可以通过机械方式或电气方式实现。例如,一个硬件单元或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,fpga或asic)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永
久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
71.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1