发布信息

固件更新方法及装置、固件更新包构建方法及装置与流程 专利技术说明

作者:admin      2023-07-05 06:07:57     306



计算;推算;计数设备的制造及其应用技术1.本发明涉及嵌入式设备领域,具体而言,涉及一种固件更新方法及装置、固件更新包构建方法及装置。背景技术:2.当嵌入式设备生产商完成产品开发后,如果发现存在软件问题,或者需要增加、优化功能等,均需要对嵌入式设备的固件进行远程升级。升级方案一般分为全量升级和差分升级,全量升级只需要将新的目标固件的数据全部下载到嵌入式设备内部进行替换升级即可。但由于完整的固件的数据较大,而嵌入式设备内部的资源有限,一般嵌入式设备内部是没有足够的存储空间能够存放整个目标固件的数据的,如果增加外部存储器件,则又会增加硬件成本。所以,通常需要对目标固件的数据和源固件的数据进行差分计算,再对差分数据进行压缩,得到一个较小的差分包,然后将这个差分包下载到嵌入式设备内部存储起来。在需要升级时,再对存储的差分包进行解压缩得到差分数据,然后利用嵌入式设备内部的源固件的数据和差分数据进行还原计算,就可以生成目标固件的数据了。所以最终得到的差分包相对于传统的全量升级来说,就会小很多。而在嵌入式设备端进行还原计算时,嵌入式设备端的程序就可以利用差分数据,在嵌入式设备当前的源固件的数据中查找那些和目标固件的数据相同的数据段,把这些数据段取出来和差分数据中提供的新增数据进行重新组合,最终就可以生成目标固件的数据了。3.然而,如现有技术中直接将嵌入式设备的目标固件的数据和源固件的数据进行差分计算得到差分包,那么在嵌入式设备利用差分包还原生成目标固件的数据时,嵌入式设备就需要开辟一段能够临时存放目标固件的数据的随机存取存储器(random access memory,ram)空间,但是在很多嵌入式设备中,固件的数据的大小是远远大于可用的ram空间的。另外,还要考虑升级过程中如果发生断电,重启后要保证设备能够继续升级,这种情况下还需要额外的存储空间能够将还原生成的目标固件的数据先单独保存后,再一次性将目标固件的数据写入到源固件的数据的存储空间中,但是在很多嵌入式设备中也没有足够的只读存储器(read-only memory,rom)空间还能够单独再保存一份目标固件的数据。所以,现有技术中的差分包无法在这样资源受限的嵌入式设备上使用。技术实现要素:4.本发明的目的在于提供一种固件更新方法及装置、固件更新包构建方法及装置,能够降低更新固件的过程中对设备存储空间大小的要求。5.第一方面,本发明实施例提供了一种固件更新包构建方法,包括:获取源数据块和目标数据块,所述源数据块为所述固件更新前的数据集合,所述目标数据块为所述固件更新后的数据集合;将所述目标数据块分割为多个目标数据子块;将各个所述目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块;将全部的所述更新数据块组合形成所述更新包。6.在可选的实施例中,所述将各个所述目标数据子块与所述源数据块进行差分运算前,所述方法还包括:将所述源数据块分割为多个源数据子块;所述将各个所述目标数据子块与所述源数据块进行差分运算,包括:对于任一所述目标数据子块,使用第一预设方法或第二预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算。7.在可选的实施例中,所述将各个所述目标数据子块与所述源数据块进行差分运算前,所述方法还包括:将所述源数据块分割为多个源数据子块;所述将各个所述目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块,包括:对于任一所述目标数据子块,使用第一预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块作为第一更新数据块;对于任一所述目标数据子块,使用第二预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块作为第二更新数据块;所述将全部的所述更新数据块组合形成所述更新包,包括:将全部的所述第一更新数据块组合形成第一更新包;将全部的所述第二更新数据块组合形成第二更新包;将所述第一更新包和所述第二更新包中文件大小较小的一者作为所述更新包。8.在可选的实施例中,所述将所述第一更新包和所述第二更新包中文件大小较小的一者作为所述更新包后,所述方法还包括:对所述更新包进行标注,所述标注为第一预设方法或第二预设方法。9.在可选的实施例中,所述第一预设方法包括:判断所述多个源数据子块中是否存在与所述目标数据子块存储地址相同的源数据子块;若所述多个源数据子块中不存在与所述目标数据子块存储地址相同的源数据子块,将位于最后一位的所述源数据子块作为所述运算源数据子块;若所述多个源数据子块中存在与所述目标数据子块存储地址相同的源数据子块,获取与所述目标数据子块存储地址相同的源数据子块作为目的源数据子块,将所述目的源数据子块、以及位于所述目的源数据子块后方的源数据子块作为所述运算源数据子块。10.在可选的实施例中,所述第二预设方法包括:判断所述多个源数据子块中是否存在与所述目标数据子块存储地址相同的源数据子块;若所述多个源数据子块中不存在与所述目标数据子块存储地址相同的源数据子块,将全部所述源数据子块作为所述运算源数据子块;若所述多个源数据子块中存在与所述目标数据子块存储地址相同的源数据子块,获取与所述目标数据子块存储地址相同的源数据子块作为目的源数据子块,将所述目的源数据子块、以及位于所述目的源数据子块前方的源数据子块作为所述运算源数据子块。11.第二方面,本发明实施例提供了一种固件更新方法,包括:获取源数据块,所述源数据块为所述固件更新前的数据集合;获取更新包,对所述更新包进行解析,得到若干更新数据块;将各个所述更新数据块与所述源数据块进行还原运算,得到与各个所述更新数据块一一对应的目标数据子块;使用所述目标数据子块对所述源数据块进行更新。12.在可选的实施例中,所述将各个所述更新数据块与所述源数据块进行还原运算,包括:获取所述更新包的标注信息;若所述标注信息为第一预设方法,所述将各个所述更新数据块与所述源数据块进行还原运算,包括:将所述源数据块分割为多个源数据子块;对于任一所述更新数据块,获取所述更新数据块中的目标数据子块的存储地址作为目标存储地址;将存储地址位于所述目标存储地址的所述源数据子块、以及存储地址位于所述目标存储地址之后的所述源数据子块作为运算源数据子块;将各个所述更新数据块与所述运算源数据子块进行还原运算。13.在可选的实施例中,所述方法还包括:若所述标注信息为第二预设方法,所述将各个所述更新数据块与所述源数据块进行还原运算,包括:将所述源数据块分割为多个源数据子块;对于任一所述更新数据块,获取所述更新数据块中的目标数据子块的存储地址作为目标存储地址;将存储地址位于所述目标存储地址的所述源数据子块、以及存储地址位于所述目标存储地址之前的所述源数据子块作为运算源数据子块;将各个所述更新数据块与所述运算源数据子块进行还原运算。14.第三方面,本发明实施例提供了一种固件更新包构建装置,包括:数据获取模块,所述数据获取模块用于获取源数据块和目标数据块,所述源数据块为所述固件更新前的数据集合,所述目标数据块为所述固件更新后的数据集合;数据分割模块,所述数据分割模块用于将所述目标数据块分割为多个目标数据子块;差分运算模块,所述差分运算模块用于将各个所述目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块;数据组合模块,所述数据组合模块用于将全部的所述更新数据块组合形成所述更新包。15.第四方面,本发明实施例提供了一种固件更新装置,包括:数据获取模块,所述数据获取模块用于获取源数据块,所述源数据块为所述固件更新前的数据集合;更新包获取模块,所述更新包获取模块用于获取更新包,并对所述更新包进行解析,得到若干更新数据块;还原运算模块,所述还原运算模块用于将各个所述更新数据块与所述源数据块进行还原运算,得到与各个所述更新数据块一一对应的目标数据子块;数据更新模块,所述数据更新模块用于使用所述目标数据子块对所述源数据块进行更新。16.第五方面,本发明实施例提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如前述的固件更新包构建方法或执行如前述的固件更新方法。17.第六方面,本发明实施例提供了一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行实现如前述的固件更新包构建方法或执行如前述的固件更新方法。18.与现有技术相比,在本发明实施例所提供的固件更新方法及装置、固件更新包构建方法及装置、电子设备及存储介质中,将目标固件的数据作为目标数据块分割为多个目标数据子块,每个目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块,最后将全部的更新数据块组成形成更新包,固件在使用更新包进行更新时,可以每次读取更新包中的一个更新数据块,使用更新数据块读取得到目标数据子块,使用目标数据子块完成对源数据块的部分更新,由于目标数据子块仅为目标数据块中的一部分数据,因此目标数据子块对源数据块进行更新时需要占用的设备存储空间较小,从而达到降低更新固件的过程中对设备存储空间大小要求的技术效果。附图说明19.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。20.图1为本发明实施例一所提供的固件更新包构建方法的流程示意图;21.图2为本发明实施例一所提供的固件更新包构建方法中目标数据块的示意图;22.图3为本发明实施例一所提供的固件更新包构建方法中差分运算的示意图;23.图4为本发明实施例一所提供的固件更新方法的流程示意图;24.图5为本发明实施例一所提供的固件更新方法中还原运算的示意图;25.图6为本发明实施例二所提供的固件更新包构建方法的流程示意图;26.图7、8、9为本发明实施例二所提供的固件更新包构建方法中源数据块和目标数据块的示意图;27.图10为本发明实施例二所提供的固件更新包构建方法中第一预设方法的示意图;28.图11为本发明实施例二所提供的固件更新包构建方法中第二预设方法的示意图;29.图12为本发明实施例二所提供的固件更新方法的流程示意图;30.图13、14为本发明实施例二所提供的固件更新方法中获取运算源数据子块的示意图;31.图15为本发明实施例三所提供的固件更新包构建装置的结构示意图;32.图16为本发明实施例三所提供的固件更新装置的结构示意图;33.图17为本发明实施例四所提供的电子设备的结构示意图。具体实施方式34.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。35.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。36.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。37.在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。38.此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。39.需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。40.本发明实施例一提供了一种固件更新包构建方法,如图1所示,包括以下步骤:41.步骤s101:获取源数据块和目标数据块。42.具体的,在本步骤中,源数据块为固件更新前的数据集合,目标数据块为固件更新后的数据集合,固件的更新过程即为将挂件的源数据块更新为目标数据块的过程。43.步骤s102:将目标数据块分割为多个目标数据子块。44.具体的,在本步骤中,在本发明的一些实施例中,可以将目标数据块按照数据块的大小分割为多个目标数据子块,例如图2所示,在本发明的一些实施例中,可以将目标数据块分割为若干64k大小的目标数据子块。可以理解的是,前述如图2所示将目标数据块分割为若干64k大小的目标数据子块仅为本发明的一些实施例中的举例说明,并不构成限定,在本发明的一些其它的实施例中,也可以是将目标数据块分割为128k、256k等其它大小的目标数据子块,或者是根据所实现的不同功能将目标数据块分割为目标数据子块,即将用于实现同一功能的数据集合作为一个目标数据子块等其它分割方法,具体可以根据实际需要对目标数据块进行分割。45.步骤s103:将各个目标数据子块与源数据块进行差分运算,得到与各个目标数据子块一一对应的更新数据块。46.具体的,在本步骤中,如图3所示,将各个目标数据子块分别与源数据块进行差分运算,得到目标数据子块与源数据块之间的差别数据,将各个目标数据子块与源数据块之间的差别数据作为与各个目标数据子块一一对应的更新数据块。47.步骤s104:将全部的更新数据块组合形成更新包。48.进一步的,将更新数据块合并存储形成更新包,更新包即用于在固件端对固件进行更新。49.在本发明的一些实施例中,固件端应用更新包对固件进行更新的过程如图4所示,包括以下步骤:50.步骤s201:获取源数据块。51.具体的,在本步骤中,源数据块为固件更新前的数据集合,也就是固件当前正在运行的程序的数据集合,包括固件当前运行程序的代码数据和运行参数等数据。52.步骤s202:获取更新包,对更新包进行解析,得到若干更新数据块。53.具体的,在本步骤中,更新包为步骤s104中将更新数据块合并存储形成更新包,对更新包进行解析的过程即为获取更新包中的更新数据块的过程,具体的例如在对更新包进行传输前通常包括对更新包的加密过程,在本步骤中对更新包进行解析的过程即为对更新包进行解密的过程。54.步骤s203:将各个更新数据块与源数据块进行还原运算,得到与各个更新数据块一一对应的目标数据子块。55.具体的,在本步骤中,如图5所示,将各个更新数据块与源数据块分别进行还原运算,得到与各个更新数据块一一对应的目标数据子块。具体的,在步骤s103中构建更新数据块时将各个目标数据子块分别与源数据块进行还原运算,得到目标数据子块与源数据块之间的差别数据作为更新数据块,本步骤中进行的还原运算即为使用更新数据块和源数据块恢复目标数据子块的过程。56.进一步的,每个更新数据块和源数据块进行还原运算的过程可以独立进行,即可以每次仅使用一个更新数据块和源数据块恢复一个目标数据子块。由于目标数据子块的数据块大小更小,如图5所示,每个目标数据块可以为仅64k大小,每次仅恢复一个目标数据子块可以仅使用64k大小的ram,从而降低嵌入式设备对固件进行更新的过程中对ram的大小需求。57.步骤s204:使用目标数据子块对源数据块进行更新。58.具体的,在本步骤中,使用目标数据子块对源数据块进行更新的过程即为使用目标数据子块覆盖源数据块的过程,在本发明的一些实施例中,可以将全部的目标数据子块恢复完成后,一次性完成对源数据块的覆盖和替换过程。59.与现有技术相比,本发明实施例一所提供的固件更新包构建方法中,将目标固件的数据作为目标数据块分割为多个目标数据子块,每个目标数据子块与源数据块进行差分运算,得到与各个目标数据子块一一对应的更新数据块,最后将全部的更新数据块组成形成更新包,固件在使用此方法构建的更新包进行更新时,可以每次读取更新包中的一个更新数据块,使用更新数据块读取得到目标数据子块,使用目标数据子块完成对源数据块的部分更新,由于目标数据子块仅为目标数据块中的一部分数据,因此目标数据子块对源数据块进行更新时需要占用的设备存储空间较小,从而达到降低更新固件的过程中对设备存储空间大小要求的技术效果。60.本发明实施例二提供了一种固件更新包构建方法,如图6所示,包括以下步骤:61.步骤s301:获取源数据块和目标数据块。62.步骤s302:将目标数据块分割为多个目标数据子块。63.具体的,本实施例中的步骤s301和步骤s302与实施例一中的步骤s101和步骤s102大致相同,具体可以参照前述实施例中的具体说明,在此不再赘述。64.步骤s303:将源数据块分割为多个源数据子块。65.具体的,在本发明的一些实施例中,可以将源数据块按照数据块的大小分割为多个源数据子块,例如在本发明的一些实施例中,可以将源数据块分割为与目标数据子块大小相同的若干64k大小的源数据子块。可以理解的是,前述将源数据块分割为若干64k大小的源数据子块仅为本发明的一些实施例中的举例说明,并不构成限定,在本发明的一些其它的实施例中,也可以是将源数据块分割为与目标数据子块大小相同的128k、256k等其它大小的源数据子块,或者是根据所实现的不同功能将源数据块分割为源数据子块,即将用于实现同一功能的数据集合作为一个源数据子块等其它分割方法,具体可以根据实际需要对源数据块进行分割。66.步骤s304:对于任一目标数据子块,使用第一预设方法或第二预设方法从多个源数据子块中选取若干运算源数据子块。67.具体的,在固件的更新过程中,目标数据块和源数据块之间的代码差异通常来源于代码的增删改过程,其中,当代码发生增减后,经过编译器编译后的目标数据块和源数据块之间,原本相对应的代码数据之间会存在地址偏移的问题。如图7所示为部分代码被删除时的源数据块和目标数据块之间的示意图,其中,源数据块中的o3、o4两个源数据子块被删除得到了目标数据块,此时目标数据块的o5、o6、o7三个目标数据子块相对于源数据块来说则是地址向前偏移了。如图8所示为部分代码被新增时的源数据块和目标数据块之间的示意图,其中,源数据块中新增n1、n2两个数据子块得到了目标数据块,此时目标数据块的o3、o4、o5三个目标数据子块相对于源数据块来说则是地址向后偏移了。如图9所示为既存在数据块删除、又存在数据块新增时的源数据块和目标数据块之间的示意图,即目标数据块在源数据块的基础上,删除了一段数据子块o2,但新增了两段数据子块n1、n2,也就是新增的代码数据比删除的代码数据多的情况下,此时目标数据块中的o3、o4、o5目标数据子块相对于源数据块来说仍是地址向后偏移的。68.基于上述三种情况,在本步骤中,以图9为例,第一预设方法包括:判断多个源数据子块o1、o2、o3、o4、o5中是否存在与目标数据子块o1、n1、n2、o3、o4、o5存储地址相同的源数据子块;若多个源数据子块中不存在与目标数据子块存储地址相同的源数据子块,将位于最后一位的源数据子块作为运算源数据子块,例如图9中的目标数据子块o5,在多个源数据子块o1、o2、o3、o4、o5中不存在与目标数据子块o5存储地址相同的源数据子块,此时将位于最后一位的源数据子块o5作为运算源数据子块;若多个源数据子块中存在与目标数据子块存储地址相同的源数据子块,例如图9中的目标数据子块o1,在多个源数据子块o1、o2、o3、o4、o5中存在与目标数据子块o1存储地址相同的源数据子块o1,对于图9中的目标数据子块n1,在多个源数据子块o1、o2、o3、o4、o5中存在与目标数据子块n1存储地址相同的源数据子块o2……,此时获取与目标数据子块存储地址相同的源数据子块作为目的源数据子块,例如目标数据子块n1对应的目的源数据子块即为源数据子块o2,将目的源数据子块、以及位于目的源数据子块后方的源数据子块,即源数据子块o2、o3、o4、o5作为运算源数据子块。69.在本步骤中,以图9为例,第二预设方法包括:判断多个源数据子块o1、o2、o3、o4、o5中是否存在与目标数据子块o1、n1、n2、o3、o4、o5存储地址相同的源数据子块;若多个源数据子块中不存在与目标数据子块存储地址相同的源数据子块,将全部源数据子块作为运算源数据子块,例如图9中的目标数据子块o5,在多个源数据子块o1、o2、o3、o4、o5中不存在与目标数据子块o5存储地址相同的源数据子块,此时将全部的源数据子块作为运算源数据子块;若多个源数据子块中存在与目标数据子块存储地址相同的源数据子块,例如图9中的目标数据子块o1,在多个源数据子块o1、o2、o3、o4、o5中存在与目标数据子块o1存储地址相同的源数据子块o1,对于图9中的目标数据子块n1,在多个源数据子块o1、o2、o3、o4、o5中存在与目标数据子块n1存储地址相同的源数据子块o2,……,此时获取与目标数据子块存储地址相同的源数据子块作为目的源数据子块,例如目标数据子块n1对应的目的源数据子块即为源数据子块o2,将目的源数据子块、以及位于目的源数据子块前方的源数据子块,即源数据子块o1、o2作为运算源数据子块。70.步骤s305:将目标数据子块与若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块。71.具体的,在本发明的一些实施例中,如图10所示,以图9中的目标数据子块n1为例,以第一预设方法获取的运算源数据子块为源数据子块o2、o3、o4、o5,此时即将目标数据子块n1和运算源数据子块o2、o3、o4、o5进行差分运算,得到与目标数据子块n1对应的更新数据块。72.在本发明的另一些实施例中,如图11所示,以图9中的目标数据子块n1为例,以第二预设方法获取的运算源数据子块为源数据子块o1、o2,此时即将目标数据子块n1和运算源数据子块o1、o2进行差分运算,得到与目标数据子块n1对应的更新数据块。73.步骤s306:将全部的更新数据块组合形成更新包。74.具体的,在本发明的一些实施例中,可以仅使用第一预设方法获取得到全部的更新数据块,将全部的更新数据块组合形成更新包。或者是在本发明的另一些实施例中,也可以是仅使用第二预设方法获取得到全部的更新数据块,将全部的更新数据块组合形成更新包。75.此外,在本发明的一些其它的实施例中,也可以是使用第一预设方法从多个源数据子块中选取若干运算源数据子块,将目标数据子块与若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块作为第一更新数据块,将全部的第一更新数据块组合形成第一更新包。同时,使用第二预设方法从多个源数据子块中选取若干运算源数据子块,将目标数据子块与若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块作为第二更新数据块,将全部的第二更新数据块组合形成第二更新包。将第一更新包和第二更新包中文件大小较小的一者作为更新包。76.进一步的,在同时使用第一预设方法和第二预设方法获取更新包的实施例中,将第一更新包和第二更新包中文件大小较小的一者作为更新包后,还需要对更新包进行标注,标注为第一预设方法或第二预设方法。通过对更新包进行标注,使得固件端可以根据不同的更新包构建方法采用不同的固件更新方法,从而更好的实现对固件的更新。77.在本发明的一些实施例中,固件端应用更新包对固件进行更新的过程如图12所示,包括以下步骤:78.步骤s401:获取源数据块。79.步骤s402:获取更新包,对更新包进行解析,得到若干更新数据块。80.可以理解的是,本实施例中的步骤s401至步骤s402与实施例一中的步骤s201至步骤s202大致相同,具体可以参照前述实施例中的具体说明,在此不再赘述。81.步骤s403:将源数据块分割为多个源数据子块。82.具体的,在步骤中对源数据块进行分割的过程与步骤s303中构建更新包时对源数据块进行分割的步骤相同,具体可以参照前述步骤s303中的具体说明。可以理解的是,本步骤中的多个源数据子块与步骤s303中的多个源数据子块相同。83.步骤s404:获取运算源数据子块。84.具体的,在本步骤中,首先需要获取更新数据块的构建方法为第一预设方法还是第二预设方法,在本发明的不同实施例中可以根据不同的方法获取更新数据块的构建方法,例如可以根据更新包构建装置和固件更新装置之间的约定获取更新数据块的构建方法,或者是获取更新包的标注信息,更新包的标注信息为第一预设方法,则更新数据块的构建方法为第一预设方法,反之更新包的标注信息为第二预设方法,则更新数据块的构建方法为第二预设方法。85.在更新数据块的构建方法为第一预设方法时,对于任一更新数据块,获取更新数据块中的目标数据子块的存储地址作为目标存储地址;将存储地址位于目标存储地址的源数据子块、以及存储地址位于目标存储地址之后的源数据子块作为运算源数据子块。如图13所示,以图9中的目标数据子块n1为例,更新数据块中的目标数据子块n1的存储地址即为源数据子块o2的存储地址,此时将存储地址位于目标存储地址的源数据子块o2、以及存储地址位于目标存储地址之后的源数据子块o3、o4、o5作为运算源数据子块。86.在更新数据块的构建方法为第二预设方法时,对于任一更新数据块,获取更新数据块中的目标数据子块的存储地址作为目标存储地址;将存储地址位于目标存储地址的源数据子块、以及存储地址位于目标存储地址之前的源数据子块作为运算源数据子块。如图14所示,以图9中的目标数据子块n1为例,更新数据块中的目标数据子块n1的存储地址即为源数据子块o2的存储地址,此时将存储地址位于目标存储地址的源数据子块o2、以及存储地址位于目标存储地址之前的源数据子块o1作为运算源数据子块。87.步骤s405:将各个更新数据块与运算源数据子块进行还原运算,得到与各个更新数据块一一对应的目标数据子块。88.具体的,如图13、14所示,将各个更新数据块与运算源数据子块进行还原运算,得到与各个更新数据块一一对应的目标数据子块。89.步骤s406:使用目标数据子块对源数据块进行更新。90.具体的,在本步骤中,每次计算得到一个目标数据子块,即使用目标数据子块填充目标存储地址,若目标存储地址中存在源数据子块,则直接对源数据子块进行覆盖,若目标存储地址中不存在源数据子块,则直接在目标存储地址填充目标数据子块。91.与现有技术相比,本发明实施例所提供的固件更新包构建方法和相对应的固件更新方法中,通过对源数据块的分割,使得每次计算得到一个目标数据子块,即使用目标数据子块填充目标存储地址,无需将全部的目标数据子块存储在rom中,从而降低固件更新过程中对于rom大小的需求,进一步的降低固件更新过程中对设备存储空间大小的要求。92.本发明实施例三提供了一种固件更新包构建装置,如图15所示,包括:数据获取模块501,数据获取模块501用于获取源数据块和目标数据块,源数据块为固件更新前的数据集合,目标数据块为固件更新后的数据集合;数据分割模块502,数据分割模块502用于将目标数据块分割为多个目标数据子块;差分运算模块503,差分运算模块503用于将各个目标数据子块与源数据块进行差分运算,得到与各个目标数据子块一一对应的更新数据块;数据组合模块504,数据组合模块504用于将全部的更新数据块组合形成更新包。93.与之相对应的本发明实施例三还提供了一种固件更新装置,如图16所示,包括:数据获取模块601,数据获取模块601用于获取源数据块,源数据块为固件更新前的数据集合;更新包获取模块602,更新包获取模块602用于获取更新包,并对更新包进行解析,得到若干更新数据块;还原运算模块603,还原运算模块603用于将各个更新数据块与源数据块进行还原运算,得到与各个更新数据块一一对应的目标数据子块;数据更新模块604,数据更新模块604用于使用目标数据子块对源数据块进行更新。94.与现有技术相比,在本发明实施例三所提供的固件更新装置及固件更新包构建装置中,固件更新包构建装置将目标固件的数据作为目标数据块分割为多个目标数据子块,每个目标数据子块与源数据块进行差分运算,得到与各个目标数据子块一一对应的更新数据块,最后将全部的更新数据块组成形成更新包,固件更新装置在对固件使用更新包进行更新时,可以每次读取更新包中的一个更新数据块,使用更新数据块读取得到目标数据子块,使用目标数据子块完成对源数据块的部分更新,由于目标数据子块仅为目标数据块中的一部分数据,因此目标数据子块对源数据块进行更新时需要占用的设备存储空间较小,从而达到降低更新固件的过程中对设备存储空间大小要求的技术效果。95.本发明实施例四涉及一种电子设备,如图17所示,包括:至少一个处理器100;以及,与至少一个处理器100通信连接的存储器200;其中,存储器200存储有可被至少一个处理器100执行的指令,指令被至少一个处理器100执行,以使至少一个处理器100能够执行上述各实施例中的固件更新包构建方法或固件更新方法。96.其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。97.处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。98.本发明实施例五涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。99.即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。100.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部