一种固件差分升级的控制方法、装置及存储介质制造方法及图纸

技术编号:37395853 阅读:11 留言:0更新日期:2023-04-27 07:33
本发明专利技术涉及一种固件差分升级的控制方法、装置及存储介质。本发明专利技术改进传统的差分升级方案,减少了维护固件包的数量,降低了在实际应用中维护及使用的复杂度,提升了升级处理效率。本发明专利技术将固件的固件数据划分为固定大小的数据块,利用数据块化的所述固件数据构建支持多个版本固件升级的固件差分包,所述固件差分包内包含按顺序存放差分信息的差分信息列表,所述差分信息包含位图,所述位图表示相邻的前项版本固件和后项版本固件之间数据块差异;利用所述固件差分包中位图计算设备当前版本固件和待更新的新版本固件之间的差异,按照所述差异进行固件差分升级,将当前版本固件升级到新版本固件。新版本固件。新版本固件。

【技术实现步骤摘要】
一种固件差分升级的控制方法、装置及存储介质


[0001]本专利技术涉及固件升级
,尤其涉及一种固件差分升级的控制方法、装置及存储介质。

技术介绍

[0002]对于嵌入式产品,固件升级功能可以帮助我们实现产品新功能的更新、修复漏洞、解决BUG。传统的升级方法有两种:全量升级和差分升级。
[0003]全量升级需提供新版本,升级时全部刷入目标机器,进行完整替换。优点:稳定可靠、流程简单。支持版本降级:可从新版本升级到旧版本。缺点:升级文件较大,下载传输及固件写入耗时较长,即使两个版本间只有微小差异,也会重复擦写相同的数据块。
[0004]参阅图1所示,差分升级需将最新版本与历史各版本比对生成差分升级包,升级时根据目标机器当前运行的版本来下载对应的差分升级包进行升级,当获取到差分包后,解析差分包得到差分信息,如图2所示,通常差分信息中会至少包括:当前版本的校验值和数据块映射表,当前版本的校验值用于防止将差分包应用到错误的版本上,数据块映射表用于记录差分包中的数据块与目标版本中数据块的映射关系。按照映射关系,将差分包中的块依次写入,映射表为[0,2,

,M],所以差分包中的数据块0会覆盖写入目标机器的数据块0,差分包中的数据块1会覆盖写入目标机器的数据块2,依次类推。由于差分包中仅保存了存在差异的数据块,所以体积较小,只需写入存在差异的数据块即可完成升级。优点:升级文件较小(仅包含差异的部分),下载传输及固件写入耗时短,效率高。缺点:一般不支持版本降级,需要维护新版本和每个历史版本的差分包,需要获取目标机器当前运行版本来选择不同的差分包(通常需要提供一个服务端来实现),同一个版本存在多个升级用的差分包,维护工作复杂,不适用于缺乏服务器维护的场景。

技术实现思路

[0005]为了解决上述技术问题或者至少部分地解决上述技术问题,本专利技术提供一种固件差分升级的控制方法、装置及存储介质。
[0006]第一方面,本专利技术提供一种固件差分升级的控制方法,包括:
[0007]将固件的固件数据划分为固定大小的数据块,利用数据块化的所述固件数据构建支持多个版本固件升级的固件差分包,所述固件差分包内包含按顺序存放差分信息的差分信息列表,所述差分信息包含位图,所述位图表示相邻的前项版本固件和后项版本固件之间数据块差异;利用所述固件差分包中位图计算设备当前版本固件和待更新的新版本固件之间的差异,按照所述差异进行固件差分升级,将当前版本固件升级到新版本固件。
[0008]更进一步地,所述固件差分包包括:差分包头和差分包体;所述差分包头中的内容包括:固件数据所属的固件版本号、固件差分包的哈希值、差分信息列表偏置、差分信息列表大小、固件数据偏置和固件数据的大小;所述差分包体融合了差分信息列表和数据块化的固件数据。
[0009]更进一步地,每个所述差分信息包括:前项固件的版本号、前项固件包的哈希值和表示前项版本固件和后项版本固件之间数据块差异的位图,其中,前项版本与后向版本为相邻的版本,前项版本在前;所述位图中的每个比特位表示前项版本固件和后项版本固件之间相应数据块是否存在差异。
[0010]更进一步地,利用数据块化的所述固件数据构建支持多个版本固件升级的固件差分包包括:
[0011]利用位图、新版本固件的前项版本固件的版本号和固件哈希值按照差分信息的数据格式构造出差分信息;
[0012]利用差分信息生成新版本固件的差分信息列表;
[0013]拼接新版本固件的差分信息列表和新版本固件的固件数据得到差分包体;
[0014]利用新版本固件的固件数据、差分信息列表的大小和偏移量,新版本固件的固件哈希值和新版本固件的版本号来构造新版本固件的差分包头;
[0015]拼接所述差分包头和所述差分包体得到新版本固件的固件差分包。
[0016]更进一步地,利用差分信息生成新版本固件的差分信息列表时,检测前项固件版本的差分固件包是否存在;存在,则提取前项固件版本的差分固件包的差分信息列表,并将构造出的所述差分信息添加到前项固件版本的差分信息列表中得到新版本固件的差分信息列表;不存在,则创建新版本固件的空差分信息列表,并将构造出的所述差分信息添加到空的新版本固件的差分信息列表中。
[0017]更进一步地,利用所述固件差分包中位图计算设备当前版本固件和待更新的新版本固件之间的差异,按照所述差异进行固件差分升级包括:
[0018]解析升级用到的所述固件差分包,获取固件版本号和固件差分包的哈希值;
[0019]利用固件差分包的哈希值校验所述固件差分包的完整性通过时,提取所述固件差分包中的差分信息列表和固件数据;
[0020]检测差分信息列表中是否存在与设备当前固件的版本号对应的目标差分信息,存在,则将差分信息列表中,从当前版本固件对应的目标差分信息到所述新版本固件对应的差分信息间全部的差分信息的位图进行或运算得到目标位图,按照所述目标位图将固件数据的数据块写入设备。
[0021]更进一步地,计算得到目标位图前,检测设备当前版本固件的哈希值是否与所述目标差分信息中的目标哈希值一致,一致后再进行目标位图计算,否则进行全量升级,将新版本固件的固件数据依次写入设备。
[0022]更进一步地,利用固件差分包的哈希值校验所述固件差分包的完整性未通过或检测设备当前版本固件的哈希值与所述目标差分信息中的目标哈希值不一致时,进行全量升级,将新版本固件的固件数据依次写入设备。
[0023]第二方面,本专利技术提供一种固件差分升级的控制装置,实现所述的固件差分升级的控制方法,包括:
[0024]分块模块,所述分块模块用于将固件的固件数据划分为固定大小的数据块;
[0025]固件差分包构建模块,所述固件差分包构建模块利用数据块化的所述固件数据构建支持多个版本固件升级的固件差分包,所述固件差分包内包含按顺序存放差分信息的差分信息列表,所述差分信息包含位图,所述位图表示相邻的前项版本固件和后项版本固件
之间数据块差异;
[0026]升级模块,所述升级模块利用所述固件差分包中位图计算设备当前版本固件和待更新的新版本固件之间的差异,按照所述差异进行固件差分升级,将当前版本固件升级到新版本固件。
[0027]第三方面,本专利技术提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序被处理单元执行时实现所述的固件差分升级的控制方法。
[0028]本专利技术实施例提供的上述技术方案与现有技术相比具有如下优点:
[0029]应用本专利技术后,针对任意一个版本的固件仅需要维护一个包含多个差分信息的固件差分包,不需要将该版本固件与每个历史版本固件比较构建差分包。构建所述固件差分包的过程中,仅需计算固件当前版本与迁移版本之间的差分信息,并增量式的补入固件差分包中的差分信息列表即可,方式简单。相比传统差分升级时必须针对每个版本构建差分包的技术手段,本专利技术大大减少了维护固件包的数量,降低维护成本,从而适用于无服本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种固件差分升级的控制方法,其特征在于,包括:将固件的固件数据划分为固定大小的数据块,利用数据块化的所述固件数据构建支持多个版本固件升级的固件差分包,所述固件差分包内包含按顺序存放差分信息的差分信息列表,所述差分信息包含位图,所述位图表示相邻的前项版本固件和后项版本固件之间数据块差异;利用所述固件差分包中位图计算设备当前版本固件和待更新的新版本固件之间的差异,按照所述差异进行固件差分升级,将当前版本固件升级到新版本固件。2.根据权利要求1所述的固件差分升级的控制方法,其特征在于,所述固件差分包包括:差分包头和差分包体;所述差分包头中的内容包括:固件数据所属的固件版本号、固件差分包的哈希值、差分信息列表偏置、差分信息列表大小、固件数据偏置和固件数据的大小;所述差分包体融合了差分信息列表和数据块化的固件数据。3.根据权利要求1所述的固件差分升级的控制方法,其特征在于,每个所述差分信息包括:前项固件的版本号、前项固件包的哈希值和表示前项版本固件和后项版本固件之间数据块差异的位图,其中,前项版本与后向版本为相邻的版本,前项版本在前;所述位图中的每个比特位表示前项版本固件和后项版本固件之间相应数据块是否存在差异。4.根据权利要求1所述的固件差分升级的控制方法,其特征在于,利用数据块化的所述固件数据构建支持多个版本固件升级的固件差分包包括:利用位图、新版本固件的前项版本固件的版本号和固件哈希值按照差分信息的数据格式构造出差分信息;利用差分信息生成新版本固件的差分信息列表;拼接新版本固件的差分信息列表和新版本固件的固件数据得到差分包体;利用新版本固件的固件数据、差分信息列表的大小和偏移量,新版本固件的固件哈希值和新版本固件的版本号来构造新版本固件的差分包头;拼接所述差分包头和所述差分包体得到新版本固件的固件差分包。5.根据权利要求4所述的固件差分升级的控制方法,其特征在于,利用差分信息生成新版本固件的差分信息列表时,检测前项固件版本的差分固件包是否存在;存在,则提取前项固件版本的差分固件包的差分信息列表,并将构造出的所述差分信息添加到前项固件版本的差分信息列表中得到新版本固件的差分信息列表;不存在,则创建新版本固件的空差分信息列表,并将构造出的所述差分信息添加到空...

【专利技术属性】
技术研发人员:郭卫斌
申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司
类型:发明
国别省市:

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

1