有效
一种用于物联网设备的空中固件升级方法及系统
刘波、陈积明、史治国、贺诗波、李传武
浙江大学
摘要
本发明公开了一种用于物联网设备的空中固件升级方法及系统,物联网设备终端通过中继联网单元与升级服务器进行网络通信,升级服务器用于实现对大规模物联网设备终端的接入控制管理以及固件包的生成与下发,私有云数据库用于实现多版本固件包存储。本发明可以实现物联网设备的快速迭代升级与维护,设备固件版本的统一化管理,可以有效解决物联网设备固件升级过程中的流量与资源占用问题,实现具有多种升级方式、断点续传、固件版本回滚的升级解决方案,提高了升级成功率,改善了用户使用体验。
1.一种用于物联网设备的空中固件升级方法,其特征在于,该方法包括以下步骤:步骤1,研发人员修改软件代码后生成新版本固件,通过网络将该新版本固件上传至升级服务器,升级服务器为当前新版本固件设定唯一版本号码,并将该固件存储于私有云数据库;步骤2,升级服务器确定针对物联网设备终端采用的固件升级方式,包括整包升级方式以及差分升级方式;所述升级服务器利用设备固件更新资源评价方法确定针对物联网设备终端采用的固件升级方式,具体为:综合设备端与固件升级过程中涉及到的各项参数,计算当前物联网设备终端的固件更新资源参数θ:式中:r表示当前物联网设备终端具有的空闲RAM资源、f表示当前物联网设备终端具有的FLASH存储资源、c表示当前网络信号强度、k表示当前网络通信速度,n表示新版本固件大小,o表示旧版本固件大小,t表示当前物联网设备升级最大时间限制,d表示新旧固件差分包大小;由上述公式首先计算出差分压缩效率P,如果差分压缩效率P小于系统预定压缩比P 1 ,则采用整包升级方式,否则计算固件网络传输时间T,固件网络传输时间T为新固件包传输的时间与升级最大时间限制比值,如果该值大于1,则采用差分升级方式,否则根据固件更新资源参数θ进行选择,如果θ大于系统预定参数θ 1 ,则采用差分升级方式,否则,采用整包升级方式;步骤3,物联网设备终端连接升级服务器,获取固件升级包,并进行固件升级包的完整性与唯一性校验,校验通过后,利用步骤2中确定的固件升级方法对物联网设备终端软件进行固件升级,将软件版本由旧固件版本升级到目标版本;步骤4,物联网设备终端升级完成后,向升级服务器发送升级完成通知,升级服务器将升级日志存储至私有云数据库。
2.根据权利要求1所述的一种用于物联网设备的空中固件升级方法,其特征在于,所述整包升级方式通过将完整新版本固件包下发到物联网设备端完成固件升级操作,具体步骤流程如下:(1)升级服务器按照设备端资源限制将新版本固件包统一划分为N个数据包,所有数据包大小及格式均相同,同时为每个数据包计算MD5值,用于进行数据完整性校验,并启动升级流程,将每个数据包的MD5值下发到物联网设备端;(2)物联网设备端下载第i数据包,1≤i≤N,并通过计算当前数据包的MD5值与升级服务器下发MD5值比对;(3)如果MD5值相同,说明数据包完整,转到步骤(2)获取下一个数据包,并将当前已经获取的数据包编号存储至FLASH;如果MD5值不同,说明数据传输出现错误,转到步骤(2)重新获取当前数据包;(4)如果已经获得第N个数据包,说明新版本固件包获取完成,将该新版本固件包安装到备份存储区域,并设置新版本固件包安装完成标记,然后进行设备重启操作;(5)设备重启后首先判断固件安装完成标记是否设置,如果没有设置,则读取FLASH中已获得的固件编号,并转到步骤(2)中继续获取下一个固件数据包;如果固件安装完成标记已经设置,则通过引导加载程序跳转到备份存储区域并进行新版本固件功能测试;(6)如果功能测试成功,设备将备份存储区域设置为当前活动分区,并上报升级成功信息;如果功能测试失败,则重新跳转回原当前活动分区,即原版本固件代码所在存储区域,并上报升级失败信息。
3.根据权利要求1所述的一种用于物联网设备的空中固件升级方法,其特征在于,所述差分升级方式利用新旧版本固件之间的相似性产生固件差分包,并在设备端利用差分还原技术完成固件升级操作,差分升级方法具体步骤流程如下:(1)升级服务器请求物联网设备端当前固件版本,并根据固件版本号码从私有云数据库中获取到对应固件数据;(2)通过分析可重定位elf文件链接前后的信息,并生成一个链接命令,达到将固件链接为一个更加相似版本的目的,改善新旧版本固件间的相似性,从而减小最终产生的差分包大小;(3)针对旧版本文件的所有后缀按字典进行排序,得到后缀排序数组;(4)利用旧版本文件的后缀数组以及二分查找算法,在新版本文件中查找出与旧版本文件近似匹配的区域,将新版本文件中除近似匹配区域外的数据作为完全不匹配区域;(5)针对所有近似匹配区域执行相减操作,记录下近似匹配区域的所有差值以及新版本文件中的完全不匹配区域,并利用LZMA算法对以上数据进行有效压缩;(6)将压缩后的数据打包为差分文件,将该差分文件下发到物联网设备端;(7)物联网设备端接收到差分文件后,利用本地还原更新方法完成设备端固件升级操作。
4.根据权利要求3所述的一种用于物联网设备的空中固件升级方法,其特征在于,所述物联网设备端利用差分升级本地还原更新方式用于减小差分还原过程中对于设备空间资源的需求,具体步骤流程如下:(1)物联网设备端接收到差分文件后,将该差分文件解压缩到指定空闲区域;(2)首先完成旧版本文件近似匹配区域的相加操作,然后利用有向图配合拓扑排序的方式对近似匹配区域的复制操作次序进行重新排序;对所有复制操作建立一张有向图H=(V,I),其中,顶点集V=(C 1 ,C 2 ,C 3 ...C n ),I=(I 1 ,I 2 ,I 3 ...I n ),式中:C i 表示执行过相加操作的数据块,I i 表示执行过插入操作的数据块;(3)如果新版本文件内的近似匹配区域C i 与旧版本文件内的C j 相交(i≠j),且系统在对C j 执行复制操作以前,对C i 执行了复制操作,则建立一条边 对以上所有顶点进行轮询操作,从而建立对应的有向图;(4)得到有向图后,系统利用拓扑排序方式得到一条线性路径,并根据该路径产生无读写冲突的复制操作顺序;(5)旧版本文件完成相加以及复制操作后,将对应的完全不匹配区域插入到指定位置,最终完成物联网设备端的本地还原固件更新操作。
5.一种实现权利要求1-4任一项所述的用于物联网设备的空中固件升级方法的系统,其特征在于,该系统由物联网设备终端、中继联网单元、升级服务器、私有云数据库共同组成;所述物联网设备终端通过中继联网单元与升级服务器进行网络通信,获取固件升级包,并进行固件升级包的完整性与唯一性校验,校验通过后,利用升级服务器确定的固件升级方法对物联网设备终端软件进行固件升级,并在升级完成后向升级服务器发送升级完成通知;所述升级服务器用于接收研发人员生成的新版本固件,为当前新版本固件设定唯一版本号码,并将固件存储于私有云数据库;确定针对物联网设备终端采用的固件升级方式,包括整包升级方式以及差分升级方式;在物联网设备终端升级完成后,将升级日志存储至私有云数据库;所述私有云数据库用于实现多版本固件包及升级日志的存储。
6.根据权利要求5所述的一种用于物联网设备的空中固件升级系统,其特征在于,所述升级服务器,包括:固件升级包版本管理模块:包括物联网设备固件版本管理以及差分包版本管理;固件升级包生成模块:用于产生各版本的固件更新整包、固件差分包以及新旧版本文件的存储、上传和增删改查;升级过程控制模块:用于固件升级包的分发、物联网设备端的发现与认证、下载并发访问控制、数据传输安全性与完整性验证、物联网设备固件升级日志记录与保存;权限管理模块:包括用户注册登陆、用户隔离、用户分级权限管理。






