【技术实现步骤摘要】
一种安全的嵌入式系统固件分块差分升级方法及系统
[0001]本申请涉及系统固件升级领域,具体涉及一种安全的嵌入式系统固件分块差分升级方法及系统。
技术介绍
[0002]由于差分效果好、差分升级包小,差分升级方法已经成为最流行的固件升级方式,尤其是嵌入式设备的固件升级。
[0003]对于普通文件升级,差分升级算法都是一次性把老文件加载内存、读入差分包、执行升级,再写入。但是,由于常见嵌入式系统的运行内存都是小于固件大小,固件升级就需要分块执行,逐块把老固件升级为新版本。
[0004]分块的固件升级一旦遇到中断,比如遇到掉电或其他不可抗力,就可能会出现部分升级的情况:老固件前面有部分的块已经升级为新版本。处于这种中间状态设备一般是不可用的,俗称“变砖”。升级程序必须能够有效的识别这种状态,再次执行时可以准确找到中断的地方恢复升级,确保升级的完整性。
技术实现思路
[0005]本申请结合底层的具体升级算法,只需要额外每个分块新老固件的普通校验码(放在差分升级包的头部),就可以准确识别升级中断点继续升 ...
【技术保护点】
【技术特征摘要】
1.一种安全的嵌入式系统固件分块差分升级方法,其特征在于,步骤包括:S1.确定目标系统在升级中断时的中断位置;S2.基于所述中断位置,在恢复升级时,继续完成升级。2.根据权利要求1所述的安全的嵌入式系统固件分块差分升级方法,其特征在于,支持嵌入式系统固件分块差分升级方法的差分包包括:底层的升级差分数据和顶层数据;所述顶层数据包括:固件进行分块差分升级时的分块大小、分块数量和每个分块的新老固件的校验码。3.根据权利要求2所述的安全的嵌入式系统固件分块差分升级方法,其特征在于,所述S1中确定所述中断位置的方法包括:S301.设固件一共n个分块,从i=1开始,依次计算第i个分块的校验码;S302.如果第i个分块为老固件,则依次检查剩下的分块,必须全部为老固件,此时框架执行结束,返回i,否则报错退出;S303.如果第i个分块为新固件,跳回S301;S304.如果第i个分块既不是老固件也不是新固件,则检查备份块是否为老固件,剩下的分块也必须都是老固件,如果是老固件,则将备份块拷贝回第i个分块,框架执行结束,返回i,否则报错退出;S305.当老固件所有分块都扫描完成并且都已升级为新固件,则执行本步骤;如果新固件的分块数比老固件多,则返回n+1。4.根据权利要求3所述的安全的嵌入式系统固件分块差分升级方法,其特征在于,在继续完成时,需要确定所述分块的大小,步骤包括:S401.根据设备的运行内存和存储空间约束,计算出最大容许的分块大小,并对设备物理块大小下取整;S402.判定所述固件之间有无冲突发生;S403.如果有冲突发生,所述分块的大小减小一个物理块大小,重复S402;如果没有冲突发生,则运行结束。5.一种安全的嵌入式系统固件分块差分升级系统,其特征在于,包括:监测模块和恢复...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。