差分包生成方法,差分包生成设备,及升级方法技术

技术编号:31086724 阅读:17 留言:0更新日期:2021-12-01 12:41
本申请提出一种差分包生成方法,差分包生成设备,及应用所述差分包的升级方法,应用于内存资源缺乏的嵌入式系统以分块的方式执行差分升级。差分包是在上位设备中生成。所述上位设备首先对原文件以及新文件进行差分比对,产生全局差分信息。接着根据所述全局差分信息,将所述新文件分割成多个子区块,并决定所有子区块的补丁参数。接着根据所述补丁参数,将每个子区块与所述原文件进行差分比对,生成对应每一子区块的差分块。最后,集成所述差分块,生成所述差分包。本申请亦提出差分包生成设备,即所述嵌入式系统的上位设备的实施例。即所述嵌入式系统的上位设备的实施例。即所述嵌入式系统的上位设备的实施例。

【技术实现步骤摘要】
差分包生成方法,差分包生成设备,及升级方法


[0001]本申请涉及嵌入式系统的固件升级方法,尤其涉及一种可供内存资源有限的嵌入式系统以分块方式进行升级的差分包。

技术介绍

[0002]传统嵌入式系统一般都是计算能力和内存资源受限的设备。当其中的固件需要升级时,可以采用整包升级法或差分升级法。整包升级法的好处是不需要旧的固件数据,直接以新档案覆盖。差分升级又称为增量升级(incremental upgrade),升级包中只携带了差异处的数据,至于与原文件相同处的数据,仍然仰赖固件提供,所以升级包的档案大小可以显着减少。差分包通常是由内存资源相对富裕的上位设备生成,再传送至嵌入式系统中进行还原组成。上位设备通常是指嵌入式系统的生产设备,也可以是云端服务器,或桌上型计算机。而嵌入式系统可以是低端的小型程控设备,例如网关,物联网装置,路由等。对于嵌入式系统而言,由于内存资源受限,差分包的还原组成过程较为困难。为了适应有限的内存容量,差分包可以切成多个小区块,分批写入。升级包以差分形式实作,目的在优化升级包大小。传统方式是以数据移动和数据删除的命令来减少必须携带的数据。然而,数据的添加是无法减除的。因此升级包的大小优化,主要受到数据添加的影响。当差分数据以多个小区块分批写入时,由于缺乏全局的信息判断,有概率导致固件中的原文件原本存在的有效信息被覆盖。为此,在生成差分包时,必须以数据添加的形式重复携带被覆盖的有效信息,使生成的差分包变大而失去优化的目的。
[0003]因此,一种适用于低端规格的嵌入式系统的优化差分包生成方法,是有待开发的。

技术实现思路

[0004]为了在嵌入式系统的固件中完整还原新文件,本申请的实施例在上位设备端生成差分包时,考虑了原文件和新文件之间的数据差异特性,以及嵌入式系统的容量特征,以最大化原文件中有效信息的再利用率,确保还原成功。
[0005]为了解决上述技术问题,本申请提出一种差分包生成方法,可使内存资源缺乏的嵌入式系统以分块的方式执行差分升级。差分包是在上位设备中生成。所述上位设备首先对原文件以及新文件进行差分比对,产生全局差分信息。所述全局差分信息包括所述新文件与所述原文件匹配部份的地址和长度。接着根据所述全局差分信息,将所述新文件分割成多个子区块,并决定所有子区块的补丁参数。接着根据所述补丁参数,将每个子区块与所述原文件进行差分比对,生成对应每一子区块的差分块。最后,集成所述差分块,生成所述差分包。
[0006]若所述新文件与原文件的大小不同,在将所述新文件分割之前,可将所述原文件及所述新文件中相对小的文件尾部补上固定数据,使所述原文件及所述新文件等长。
[0007]将每个子区块与所述原文件进行差分比对时,如果比对结果一致,则标记所述子区块为无需更新。相对地,如果比对结果不一致,则标记所述子区块为待更新区块。
[0008]更具体地,每个子区块的补丁参数可包括差分起始位置,处理次序,以及处理方向。
[0009]在决定所有子区块的补丁参数时,可根据原文件中需被新增、删除和保留的部份决定处理次序和处理方向。本申请实施例通过处理次序和处理方向的安排,可确保原文件中需被保留的部份不被覆盖。
[0010]在进一步实施例中,根据所述补丁参数,将每个子区块与所述原文件进行差分比对时,可根据所述子区块的所述处理次序和所述处理方向,生成从所述差分起始位置起算的所述差分块。
[0011]借此,在集成所述差分块,生成差分包时,可依照所述处理次序,将每个子区块对应生成的差分块压缩并合并,形成所述差分包。
[0012]更进一步地,从每个子区块生成对应的差分块时,可将所述子区块更新至所述原文件的对应位置。当所述原文件被更新至与所述新文件完全一致时,确定所述差分包生成完成。
[0013]在另一实施例中,每一差分块中可包括至少下列其中之一:删除数据的命令,或新增数据的命令,供所述嵌入式系统更新时执行。所述删除数据的命令还可包括欲删除数据的起始地址和长度。所述新增数据的命令还可包括欲新增的数据的起始地址和所述欲新增的数据。
[0014]每一差分块可进一步包括移动数据的命令,使所述嵌入式系统更新时移动固件中原有的数据。
[0015]本申请亦提出差分包生成设备,即所述嵌入式系统的上位设备的实施例。一种差分包生成设备,可用于生成优化的差分包,使嵌入式系统以分块的方式读取所述差分包,将所述嵌入式系统中的固件中的原文件升级为新文件。在所述差分包生成设备中,包括存储器,存有代码,可用于执行前述各种差分包生成方法的实施例。内存连接所述存储器,用于载入所述代码。处理器,连接所述内存和存储器,用于执行所述代码,以生成所述差分包。
[0016]本申请亦提出一种应用所述差分包的升级方法,用于使嵌入式系统升级固件。首先由待升级的嵌入式系统逐一加载所述差分包中的每一所述差分块。接着使所述固件以分块的方式依照对应的所述补丁参数而升级。本申请实施例的特点,就是在生成差分包的时候,以顺序和方向的安排调度,事先排除了分块执行差分更新时可能遇到的各种冲突,使内存有限的嵌入式系统可以在不需要升级硬件的前提下顺利地以分块的方式读取差分包,进行差分升级。不但保留了差分升级的效率,也降低了硬件需求成本。
附图说明
[0017]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0018]图1是本申请一实施例的差分包生成设备和嵌入式系统。
[0019]图2是原文件和新文件进行全局差分比对的实施例。
[0020]图3是本申请实施例的差分包生成方法的流程图。
[0021]图4是本申请新文件切块及决定补丁参数的实例说明。
[0022]图5a至5c是本申请的生成差分升级块的实例说明。
具体实施方式
[0023]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0024]图1是本申请一实施例的差分包生成设备100和嵌入式系统110。差分包生成设备100一般可以是生产线上的设备,或是用户自备的桌机,在此又可称为上位设备。升级包120是在差分包生成设备100中生成,再通过网络或各种存储介质传送给嵌入式系统110。差分包生成设备100中基本包括存储器106,用于储存代码108。所述代码108可被加载至内存104中,由处理器102执行后,依照本说明书实施例介绍的差分包生成方法,生成升级包120。嵌入式系统110可以是任何生活中常见的智能家电,例如物联网设备,路由或网关。基本包括闪存116,可储存固件118,使处理器112和内存114加载并执行固件118中的功能,实现嵌入式系统110的基本运作。由于闪存116通常是可重复读写本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种差分包生成方法,用于生成差分包,使嵌入式系统的固件升级,其特征在于,包括:在差分包生成设备中对原文件及新文件进行差分比对,产生全局差分信息,包括所述新文件与所述原文件匹配部份的地址和长度;根据所述全局差分信息,将所述新文件分割成多个子区块,并决定所有的所述多个子区块的补丁参数;根据所述补丁参数,将每个所述子区块与所述原文件进行差分比对,生成对应每一所述子区块的差分块;以及由所述差分包生成设备集成所述差分块,生成所述差分包,使所述嵌入式系统以分块的方式顺序读取所述差分包中的差分块,升级所述固件。2.如请求项1所述的差分包生成方法,其特征在于,进一步包括:若所述新文件与原文件的大小不同,在将所述新文件分割之前,将所述原文件及所述新文件中相对小的文件尾部补上固定数据,使所述原文件及所述新文件等长。3.如请求项1所述的差分包生成方法,其特征在于,进一步包括:将每个所述子区块与所述原文件进行差分比对时,如果比对结果一致,则标记所述子区块为无需更新;及如果比对结果不一致,则标记所述子区块为待更新区块。4.如请求项1所述的差分包生成方法,其特征在于,其中每个所述子区块的补丁参数包括差分起始位置,处理次序,以及处理方向。5.如请求项4所述的差分包生成方法,其特征在于,其中在决定所有所述子区块的补丁参数时,根据原文件中需被新增、删除和保留的部份决定处理次序和处理方向。6.如请求项4所...

【专利技术属性】
技术研发人员:许晓丹
申请(专利权)人:苏州磐联集成电路科技股份有限公司
类型:发明
国别省市:

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

1