发明内容
本申请的一个目的在于提出一种无线升级***,能够降低***中终端的整体功耗。
根据本申请实施例的一方面,公开了一种无线升级***,所述***包括主站以及待升级其中固件的终端,所述主站配置为:
与所述终端约定升级时间,并在所述升级时间内,向定时开窗的所述终端广播升级包;
每当升级包广播完毕后,接收所述终端上报的包状态,并基于所述包状态确定所述终端接收到的升级包;
若所述终端接收到的升级包存在缺失,则再与所述终端约定升级时间,并在所述升级时间内,基于所述包状态向定时开窗的所述终端广播缺失的升级包,直到所述终端接收到的升级包均完整,终止广播升级包。
根据本申请实施例的一方面,公开了一种无线升级***,所述***包括主站以及待升级其中固件的终端,所述终端配置为:
与所述主站约定升级时间,并在所述升级时间内,定时开窗接收所述主站广播的升级包;
每当升级包广播完毕后,基于接收到的升级包生成包状态,并将所述包状态上报至所述主站;
若接收到的升级包存在缺失,则再与所述主站约定升级时间,并在所述升级时间内,定时开窗接收所述主站广播的升级包,直到接收到的升级包完整,通过解压接收到的升级包升级固件。
在本申请的一示例性实施例中,所述主站配置为:
基于所述包状态确定各个缺失的升级包对应的终端总数;
基于所述终端总数计算各个缺失的升级包对应的优先度;
按照所述优先度向定时开窗的所述终端顺序广播所述缺失的升级包。
在本申请的一示例性实施例中,所述主站配置为:
基于所述包状态确定各个缺失的升级包所对应终端的缺包总数;
基于所述终端总数与同一缺失的升级包所对应终端的缺包总数之间的比值,得到各个缺失的升级包对应的优先度。
在本申请的一示例性实施例中,所述主站还配置为:
基于差分算法对新固件与旧固件进行差分处理,得到差分数据;
将所述差分数据与预设的控制字段进行压缩,得到所述升级包。
在本申请的一示例性实施例中,所述预设的控制字段包括:密文校验和,明文校验和,其中,所述密文校验和用于描述升级包的校验信息,所述明文检验和用于描述所述升级包解压后所得到数据的预设区域的校验信息。
在本申请的一示例性实施例中,所述预设的控制字段包括:升级标志字段,升级固件签名,其中,所述升级标志字段用于描述符合升级条件的终端的状态,所述升级固件签名用于描述所升级固件的标识的签名。
在本申请的一示例性实施例中,所述预设的控制字段包括:新固件标识字段,其中,所述新固件标识字段用于描述所述新固件的版本。
在本申请的一示例性实施例中,所述终端配置为:
若当前待解压的升级包的数目大于预设数目阈值,则解压所述数目阈值个升级包,并继续解压升级包;
若当前待解压的升级包的数目小于或等于所述数目阈值,则解压剩余所有待解压的升级包,并对已解压的升级包进行完整性检验;
若完整性检验未通过,则解压失败,若完整性检验通过,则解压成功。
在本申请的一示例性实施例中,所述终端配置为:
解压接收到的升级包,得到所述主站基于差分算法对新固件与旧固件进行差分处理所得到的差分数据,以及所述主站预设的控制字段;
基于所述控制字段将所述差分数据与所述旧固件进行合并,得到并运行所述新固件,完成固件升级。
本申请所提供的无线升级***中,在约定的升级时间内,主站向终端广播升级包,终端定时开窗接收升级包。并且广播完毕后终端将生成的包状态上报至主站,使得主站能够根据包状态确定终端接收到的升级包是否存在缺失。若终端接收到的升级包存在缺失,主站广播缺失的升级包。对于升级包存在缺失的终端,继续开窗接收主站广播的升级包;对于升级包完整的终端,则不再开窗,并通过解压接收到的升级包升级固件。通过这种方法,本申请实施例以查包补包的交互机制降低了***中终端的整体开窗时间,从而降低了***中终端的整体功耗。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些示例实施方式使得本申请的描述将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本申请的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多示例实施方式中。在下面的描述中,提供许多具体细节从而给出对本申请的示例实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、步骤等。在其它情况下,不详细示出或描述公知结构、方法、实现或者操作以避免喧宾夺主而使得本申请的各方面变得模糊。
附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本申请提供了一种无线升级***,主要用于以无线方式对该***中终端的固件进行升级。本申请所提供的无线升级***能够降低无线升级过程中终端的功耗,从而尤其适用于低功耗终端的无线升级。
本申请所提供的无线升级***主要由两部分组成:主站以及待升级其中固件的终端。终端通常分布式地部署于多个物理地点,并可与主站建立无线通信,进而共同组成物联网的一部分。
本申请实施例中,主站配置为:与终端约定升级时间,并在升级时间内,向定时开窗的终端广播升级包。每当升级包广播完毕后,接收终端上报的包状态,并基于包状态确定终端接收到的升级包。若终端接收到的升级包存在缺失,则再与终端约定升级时间,并在升级时间内,基于包状态向定时开窗的终端广播缺失的升级包,直到终端接收到的升级包均完整,终止广播升级包。
具体的,本申请实施例中,无线升级***中的主站在无线升级的过程中,在与终端约定好的升级时间内,向定时开窗以在开窗期间接收升级包的终端广播升级包。每当升级包广播完毕后,主站接收终端上报的包状态,进而基于包状态确定终端接收到了哪些升级包,缺失了哪些升级包。若终端接收到的升级包存在缺失,为使得缺失了升级包的终端能够升级固件,主站再次向终端广播升级包。不断循环,直到主站确定终端接收到的升级包均完整,终止广播升级包。主站第一次广播与其他次广播的区别在于,第一次广播的是终端进行固件升级所需的全部升级包,其他次广播的是前次广播后终端缺失的部分升级包。
本申请实施例中,终端配置为:与主站约定升级时间,并在升级时间内,定时开窗接收主站广播的升级包。每当升级包广播完毕后,基于接收到的升级包生成包状态,并将包状态上报至主站。若接收到的升级包存在缺失,则再与主站约定升级时间,并在升级时间内,定时开窗接收主站广播的升级包,直到接收到的升级包完整,通过解压接收到的升级包升级固件。
具体的,本申请实施例中,无线升级***中的终端在无线升级的过程中,在与主站约定好的升级时间内,定时开窗并在开窗期间接收主站广播的升级包。每当升级包广播完毕后,终端基于接收到的升级包生成包状态,并将包状态上报至主站。从而主站能够根据包状态确定终端接收到了哪些升级包,缺失了哪些升级包。若接收到的升级包存在缺失,为能够完成固件升级,终端再次定时开窗接收主站广播的升级包。不断循环,直到接收到的升级包完整,不再开窗,并通过解压接收到的升级包升级固件。
由此可见,本申请所提供的无线升级***中,在约定的升级时间内,主站向终端广播升级包,终端定时开窗接收升级包。并且广播完毕后终端将生成的包状态上报至主站,使得主站能够根据包状态确定终端接收到的升级包是否存在缺失。若终端接收到的升级包存在缺失,主站广播缺失的升级包。对于升级包存在缺失的终端,继续开窗接收主站广播的升级包;对于升级包完整的终端,则不再开窗,并通过解压接收到的升级包升级固件。通过这种方法,本申请实施例以查包补包的交互机制降低了***中终端的整体开窗时间,从而降低了***中终端的整体功耗。
在一实施例中,在无线升级开始之前,主站与终端约定并校验升级流程参数、固件版本参数、通信地址参数等。
图1示出了本申请一实施例的无线升级***在无线升级之前的初始化阶段流程的示意图。
参考图1所示,该实施例中,参与无线升级的主要有主站、物联网络、网关以及终端。
在初始化阶段的主流程中:
1、主站创建升级初始化任务,进而将升级初始化任务送至网关。
2、终端push数据给网关。响应于终端push数据,网关push数据给主站,并将缓存的升级初始化任务发送至终端。
3、终端接收到升级初始化任务后,执行初始化操作。初始化操作成功,终端更新升级状态,擦除块标记,并push升级初始化响应给主站,进而主站更新升级初始化任务状态为成功。
其中,终端push的数据中包含有时钟。主站接收到push的数据后,判断终端的时钟没有偏移后,生成并发送校时任务,以进入之后的升级阶段流程。
若终端执行初始化操作失败,则终端push升级初始化识别和错误码,进而主站更新升级初始化失败,流程结束。
若主站没有接收到终端push的升级初始化响应,则主站定期重试初始化任务,直到广播开始之前,停止重试,任务自动失败。
图2示出了本申请一实施例的在图1所示初始化阶段流程之后的升级阶段流程的示意图。
参考图2所示,该实施例中,在升级阶段的主流程中:
1、主站在约定的升级时间广播发包,终端在约定的升级时间自动开窗接收升级包。所有的升级包发送完成后,主站多次发送广播结束指令给终端。
2、终端接收到主站发送的广播结束指令后,开始检验包状态并push包状态给主站。主站根据接收到的包状态确定***中缺失的升级包,进而确定补包的顺序。
3、等到约定的下一轮升级时间开始时,主站按照补包的顺序再次广播发包。如此循环数轮,直到所有终端接收到的升级包均完整,或者达到指定的广播结束时间,主站停止广播。
4、升级包完整后,终端自动校验升级包。校验通过,则终端push升级任务状态给主站。
5、终端执行激活操作。激活操作成功,终端push激活成功给主站。主站接收到终端push的激活成功后,更新终端的升级任务状态为成功,并更新终端的档案中固件版本信息,用例结束。
其中,若终端始终没有收到主站下发的广播结束指令,则终端自动计算广播是否结束。并在确定广播结束后,自动检验包状态并push包状态给主站。
若终端校验得到的包状态指示其接收到的升级包不完整,主站确认终端缺失升级包后,再次与终端约定升级时间并再次广播发包。
若主站始终没有接收到终端push的包状态,则主站忽略到没有包状态的终端,针对其他终端进行补包。
若终端自动校验升级包不通过,则终端push升级失败和错误码给主站。主站接收到终端push的升级失败和错误码,更新终端的升级任务状态为失败,流程结束。
若终端执行激活操作失败,则主站超时失败。
在一实施例中,主站按照优先度顺序广播缺失的升级包。
该实施例中,主站基于包状态确定各个缺失的升级包对应的终端总数。基于终端总数计算各个缺失的升级包对应的优先度。按照优先度向定时开窗的终端顺序广播缺失的升级包。
具体的,终端总数用于描述缺失对应升级包的终端的数量。记缺失的升级包对应的终端总数为x,则说明有x个终端缺失对应升级包。进而基于终端总数x计算所缺失升级包对应的优先度p。进而按照优先度从高到低的顺序广播各个缺失的升级包。
该实施例的优点在于,以终端总数计算用于顺序发送缺失的升级包的优先度,使得缺失某一升级包的终端越多,该升级包越优先被发送,***中终端的整体开窗次数越小,从而越高效地实现补包。
在一实施例中,将终端总数与预设正常数的比值作为所缺失升级包对应的优先度。
具体的,记预设正常数为k。通过公式p=x/k计算得到各个缺失的升级包对应的优先度p。
例如:记缺失的升级包分别为包a,包b以及包c。预设正常数为1。
其中,缺失包a的终端共有5个,缺失包b的终端共有7个,缺失包c的终端共有3个。则包a的优先度为(5/1)=5,包b的优先度为(7/1)=7,包c的优先度为(3/1)=3。
在一实施例中,在终端总数的基础上,进一步结合终端的缺包总数计算得到缺失的升级包对应的优先度。
该实施例中,基于包状态确定各个缺失的升级包所对应终端的缺包总数。基于终端总数与同一缺失的升级包所对应终端的缺包总数之间的比值,得到各个缺失的升级包对应的优先度。
具体的,终端的缺包总数用于描述所对应终端缺失的升级包的总数。记缺失的升级包所对应终端的缺包总数为y。可通过公式p=x/y计算得到各个缺失的升级包对应的优先度p。
例如:终端A缺失的升级包有包a,包b以及包c;终端B缺失的升级包有包a以及包c;终端C缺失的升级包只有包b。
针对包a,缺失包a的有终端A以及终端B,则其对应的终端总数为2;并且,终端A缺失3个升级包,终端B缺失2个升级包,则其对应的终端的缺包总数为5。则包a的优先度为(2/5)=0.4。
同理,不再赘述其他包的优先度的计算过程。
该实施例的优点在于,通过这种方法,使得缺失某一升级包的终端越多,并且对应终端的总缺包数越小,该升级包越优先被发送,***中终端的整体开窗次数进一步减小,从而进一步高效地实现补包。
在一实施例中,两个升级包的优先度一致的情况下,判断当前仍存在缺失的剩余包数和剩余终端数。若剩余包数大于剩余终端数,则这两个升级包,哪个升级包对应的终端总数高,哪个升级包优先发送;若剩余包数小于剩余终端数,则这两个升级包,哪个对应的缺包总数小,哪个升级包优先发送。
图3示出了本申请一实施例的主站查包补包的流程图。
参考图3所示,该实施例中,在补发缺失的升级包的过程中,若缺失的升级包还没有全部发完,则主站按照优先度,从待发送的升级包中确定当前优先度最高的升级包的包序号。进而主站发送该优先度最高的升级包,并从待排序的列表中删除该包序号。如此循环,直到缺失的升级包全部发完,并打印包序号的发送顺序。
在一实施例中,该无线升级***基于BSDiff差分算法生成升级包以及升级固件。
该实施例中,主站基于差分算法对新固件与旧固件进行差分处理,得到差分数据。将差分数据与预设的控制字段进行压缩,得到升级包。
终端解压接收到的升级包,得到主站基于差分算法对新固件与旧固件进行差分处理所得到的差分数据,以及主站预设的控制字段。基于控制字段将差分数据与旧固件进行合并,得到并运行新固件,完成固件升级。
具体的,旧固件为终端在升级前所使用的固件,新固件为待升级以得到的固件。主站将二者之间的差分数据与预设的控制字段进行压缩得到升级包后,终端再将接收到的升级包进行解压,从而得到其中的差分数据以及控制字段。进而终端基于控制字段将差分数据与旧固件进行合并,从而完成固件升级。
在一实施例中,预设的控制字段包括:密文校验和,明文校验和,其中,密文校验和用于描述升级包的校验信息,明文检验和用于描述升级包解压后所得到数据的预设区域的校验信息。
该实施例的优点在于,通过密文校验和可以保证升级包传输时的完整性,通过明文校验和可以保证解压后的升级包的完整性。
在一实施例中,预设的控制字段包括:升级标志字段,升级固件签名,其中,升级标志字段用于描述符合升级条件的终端的状态,升级固件签名用于描述所升级固件的标识的签名。
该实施例的优点在于,通过升级标志字段可以判断终端当前的状态是否符合允许升级的条件,通过升级固件签名可以确定所升级固件与终端所支持的固件是否一致,从而防止终端误升级固件。
在一实施例中,预设的控制字段包括:新固件版本字段,其中,新固件版本字段用于描述新固件的版本。
该实施例的优点在于,通过新固件版本字段可以判断终端当前使用的旧固件的版本是否与差分数据的预期旧固件的版本一致。
在一实施例中,预设的控制字段包括:新固件大小字段,其中,新固件大小字段用于描述新固件的大小。
该实施例的优点在于,通过新固件大小字段可以保证终端解压过程中原有的旧固件数据大小无误,防止解压出错。
在一实施例中,预设的控制字段包括:升级包大小字段,升级包校验字段,其中,升级包大小字段由于描述解压前升级包的大小,升级包校验字段用于描述解压后升级包的校验信息。
该实施例的优点在于,通过升级包大小字段可以保证升级包在传输过程中的完整性,通过升级包校验字段可以保证升级包在解压过程中的完整性。
在一实施例中,控制字段的组成示例性地如下表1所示。
表1.控制字段的组成
在一实施例中,终端在解压升级包的过程中,若当前待解压的升级包的数目大于预设数目阈值,则解压数目阈值个升级包,并继续解压升级包。若当前待解压的升级包的数目小于或等于数目阈值,则解压剩余所有待解压的升级包,并对已解压的升级包进行完整性检验。若完整性检验未通过,则解压失败,若完整性检验通过,则解压成功。
该实施例的优点在于,通过这种方法,保证了终端在解压的同时还能够正确运行其他诸如数据采集、外设操作等功能。
图4示出了本申请一实施例的终端解压升级包的流程图。
参考图4所示,该实施例中,终端判断其接收到的升级包是否完整。
若接收到的升级包完整,则终端更新升级状态为解压初始化,进而记录解压文件的大小参数,校验参数,版本参数等。若接收到的升级包存在缺失,则不进行解压,即,解压失败。
若终端的当前升级状态为正在解压或者解压初始化,则判断当前待解压的升级包的数目。若数目大于预设的数目阈值n,则解压n个升级包,更新升级状态为正在解压;若数目小于或等于n,则解压剩余所有升级包,更新升级状态为解压完成。
若终端的当前升级状态为解压完成,则终端对解压后的数据进行完整性校验。若检验成功,则解压成功;若校验失败,则解压失败。
若终端的当前升级状态为错误,则不进行解压,即,解压失败。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求指出。