固件更新方法及装置、固件更新包构建方法及装置制造方法及图纸

技术编号:38084305 阅读:12 留言:0更新日期:2023-07-06 08:51
本发明专利技术实施例提供了一种固件更新方法及装置、固件更新包构建方法及装置,涉及嵌入式设备领域。其中,固件更新包构建方法,包括:获取源数据块和目标数据块,所述源数据块为所述固件更新前的数据集合,所述目标数据块为所述固件更新后的数据集合;将所述目标数据块分割为多个目标数据子块;将各个所述目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块;将全部的所述更新数据块组合形成所述更新包。与现有技术相比,本发明专利技术实施例所提供的固件更新方法及装置、固件更新包构建方法及装置具有,能够降低更新固件的过程中对设备存储空间大小的要求的优点。求的优点。求的优点。

【技术实现步骤摘要】
固件更新方法及装置、固件更新包构建方法及装置


[0001]本专利技术涉及嵌入式设备领域,具体而言,涉及一种固件更新方法及装置、固件更新包构建方法及装置。

技术介绍

[0002]当嵌入式设备生产商完成产品开发后,如果发现存在软件问题,或者需要增加、优化功能等,均需要对嵌入式设备的固件进行远程升级。升级方案一般分为全量升级和差分升级,全量升级只需要将新的目标固件的数据全部下载到嵌入式设备内部进行替换升级即可。但由于完整的固件的数据较大,而嵌入式设备内部的资源有限,一般嵌入式设备内部是没有足够的存储空间能够存放整个目标固件的数据的,如果增加外部存储器件,则又会增加硬件成本。所以,通常需要对目标固件的数据和源固件的数据进行差分计算,再对差分数据进行压缩,得到一个较小的差分包,然后将这个差分包下载到嵌入式设备内部存储起来。在需要升级时,再对存储的差分包进行解压缩得到差分数据,然后利用嵌入式设备内部的源固件的数据和差分数据进行还原计算,就可以生成目标固件的数据了。所以最终得到的差分包相对于传统的全量升级来说,就会小很多。而在嵌入式设备端进行还原计算时,嵌入式设备端的程序就可以利用差分数据,在嵌入式设备当前的源固件的数据中查找那些和目标固件的数据相同的数据段,把这些数据段取出来和差分数据中提供的新增数据进行重新组合,最终就可以生成目标固件的数据了。
[0003]然而,如现有技术中直接将嵌入式设备的目标固件的数据和源固件的数据进行差分计算得到差分包,那么在嵌入式设备利用差分包还原生成目标固件的数据时,嵌入式设备就需要开辟一段能够临时存放目标固件的数据的随机存取存储器(Random Access Memory,RAM)空间,但是在很多嵌入式设备中,固件的数据的大小是远远大于可用的RAM空间的。另外,还要考虑升级过程中如果发生断电,重启后要保证设备能够继续升级,这种情况下还需要额外的存储空间能够将还原生成的目标固件的数据先单独保存后,再一次性将目标固件的数据写入到源固件的数据的存储空间中,但是在很多嵌入式设备中也没有足够的只读存储器(Read

Only Memory,ROM)空间还能够单独再保存一份目标固件的数据。所以,现有技术中的差分包无法在这样资源受限的嵌入式设备上使用。

技术实现思路

[0004]本专利技术的目的在于提供一种固件更新方法及装置、固件更新包构建方法及装置,能够降低更新固件的过程中对设备存储空间大小的要求。
[0005]第一方面,本专利技术实施例提供了一种固件更新包构建方法,包括:获取源数据块和目标数据块,所述源数据块为所述固件更新前的数据集合,所述目标数据块为所述固件更新后的数据集合;将所述目标数据块分割为多个目标数据子块;将各个所述目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块;将全部的所述更新数据块组合形成所述更新包。
[0006]在可选的实施例中,所述将各个所述目标数据子块与所述源数据块进行差分运算前,所述方法还包括:将所述源数据块分割为多个源数据子块;所述将各个所述目标数据子块与所述源数据块进行差分运算,包括:对于任一所述目标数据子块,使用第一预设方法或第二预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算。
[0007]在可选的实施例中,所述将各个所述目标数据子块与所述源数据块进行差分运算前,所述方法还包括:将所述源数据块分割为多个源数据子块;所述将各个所述目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块,包括:对于任一所述目标数据子块,使用第一预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块作为第一更新数据块;对于任一所述目标数据子块,使用第二预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块作为第二更新数据块;所述将全部的所述更新数据块组合形成所述更新包,包括:将全部的所述第一更新数据块组合形成第一更新包;将全部的所述第二更新数据块组合形成第二更新包;将所述第一更新包和所述第二更新包中文件大小较小的一者作为所述更新包。
[0008]在可选的实施例中,所述将所述第一更新包和所述第二更新包中文件大小较小的一者作为所述更新包后,所述方法还包括:对所述更新包进行标注,所述标注为第一预设方法或第二预设方法。
[0009]在可选的实施例中,所述第一预设方法包括:判断所述多个源数据子块中是否存在与所述目标数据子块存储地址相同的源数据子块;若所述多个源数据子块中不存在与所述目标数据子块存储地址相同的源数据子块,将位于最后一位的所述源数据子块作为所述运算源数据子块;若所述多个源数据子块中存在与所述目标数据子块存储地址相同的源数据子块,获取与所述目标数据子块存储地址相同的源数据子块作为目的源数据子块,将所述目的源数据子块、以及位于所述目的源数据子块后方的源数据子块作为所述运算源数据子块。
[0010]在可选的实施例中,所述第二预设方法包括:判断所述多个源数据子块中是否存在与所述目标数据子块存储地址相同的源数据子块;若所述多个源数据子块中不存在与所述目标数据子块存储地址相同的源数据子块,将全部所述源数据子块作为所述运算源数据子块;若所述多个源数据子块中存在与所述目标数据子块存储地址相同的源数据子块,获取与所述目标数据子块存储地址相同的源数据子块作为目的源数据子块,将所述目的源数据子块、以及位于所述目的源数据子块前方的源数据子块作为所述运算源数据子块。
[0011]第二方面,本专利技术实施例提供了一种固件更新方法,包括:获取源数据块,所述源数据块为所述固件更新前的数据集合;获取更新包,对所述更新包进行解析,得到若干更新数据块;将各个所述更新数据块与所述源数据块进行还原运算,得到与各个所述更新数据块一一对应的目标数据子块;使用所述目标数据子块对所述源数据块进行更新。
[0012]在可选的实施例中,所述将各个所述更新数据块与所述源数据块进行还原运算,包括:获取所述更新包的标注信息;若所述标注信息为第一预设方法,所述将各个所述更新
数据块与所述源数据块进行还原运算,包括:将所述源数据块分割为多个源数据子块;对于任一所述更新数据块,获取所述更新数据块中的目标数据子块的存储地址作为目标存储地址;将存储地址位于所述目标存储地址的所述源数据子块、以及存储地址位于所述目标存储地址之后的所述源数据子块作为运算源数据子块;将各个所述更新数据块与所述运算源数据子块进行还原运算。
[0013]在可选的实施例中,所述方法还包括:若所述标注信息为第二预设方法,所述将各个所述更新数据块与所述源数据块进行还原运算,包括:将所述源数据块分割为多个源数据子块;对于任一所述更新数据块,获取所述更新数据块中的目标数据子块的存储地址作为目标存储地址;将存储地本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种固件更新包构建方法,其特征在于,包括:获取源数据块和目标数据块,所述源数据块为所述固件更新前的数据集合,所述目标数据块为所述固件更新后的数据集合;将所述目标数据块分割为多个目标数据子块;将各个所述目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块;将全部的所述更新数据块组合形成所述更新包。2.根据权利要求1所述的方法,其特征在于,所述将各个所述目标数据子块与所述源数据块进行差分运算前,所述方法还包括:将所述源数据块分割为多个源数据子块;所述将各个所述目标数据子块与所述源数据块进行差分运算,包括:对于任一所述目标数据子块,使用第一预设方法或第二预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算。3.根据权利要求1所述的方法,其特征在于,所述将各个所述目标数据子块与所述源数据块进行差分运算前,所述方法还包括:将所述源数据块分割为多个源数据子块;所述将各个所述目标数据子块与所述源数据块进行差分运算,得到与各个所述目标数据子块一一对应的更新数据块,包括:对于任一所述目标数据子块,使用第一预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块作为第一更新数据块;对于任一所述目标数据子块,使用第二预设方法从所述多个源数据子块中选取若干运算源数据子块,将所述目标数据子块与所述若干运算源数据子块进行差分运算,得到与各个目标数据子块一一对应的更新数据块作为第二更新数据块;所述将全部的所述更新数据块组合形成所述更新包,包括:将全部的所述第一更新数据块组合形成第一更新包;将全部的所述第二更新数据块组合形成第二更新包;将所述第一更新包和所述第二更新包中文件大小较小的一者作为所述更新包。4.根据权利要求3所述的方法,其特征在于,所述将所述第一更新包和所述第二更新包中文件大小较小的一者作为所述更新包后,所述方法还包括:对所述更新包进行标注,所述标注为第一预设方法或第二预设方法。5.根据权利要求2或3所述的方法,其特征在于,所述第一预设方法包括:判断所述多个源数据子块中是否存在与所述目标数据子块存储地址相同的源数据子块;若所述多个源数据子块中不存在与所述目标数据子块存储地址相同的源数据子块,将位于最后一位的所述源数据子块作为所述运算源数据子块;若所述多个源数据子块中存在与所述目标数据子块存储地址相同的源数据子块,获取与所述目标数据子块存储地址相同的源数据子块作为目的源数据子块,将所述目的源数据
子块、以及位于所述目的源数据子块后方的源数据子块作为所述运算源数据子块。6.根据权利要求2或3所述的方法,其特征在于,所述第二预设方法包括:判断所述多个源数据子块中是否存在与所述目标数据子块存储地址相同的源数据子块;若所述多个源数据子块中不存在与所述目标数据子块存储地址相同的源数据子块,将全部所述源数据子块作为所述运算源数据子块;若所述多个源数据子块中存在与所述目标数据子块存储地址相同的源数据子块,获取与所述目标数据子块存储地址相同的源数据子块作为目的源数据子块,将所述目的源数据子块、以及位于所述目的源数据...

【专利技术属性】
技术研发人员:水恒兵顾根全蒋治国
申请(专利权)人:上海移远通信技术股份有限公司
类型:发明
国别省市:

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

1