一种用于物联网设备的空中固件升级方法及系统与流程

文档序号:20917632发布日期:2020-05-29 13:44阅读:165来源:国知局
一种用于物联网设备的空中固件升级方法及系统与流程

本发明涉及物联网领域,具体涉及一种用于物联网设备的空中固件升级方法及系统。



背景技术:

随着物联网技术的快速发展,物联网设备也在不断地增多,一般而言,一台物联网设备在投入市场使用以前,需要经历尽可能多的检测来保障其功能稳定可靠。然而,随着物联网技术的迭代进步、用户需求的不断变化,物联网设备的上线时间以及测试周期都被大幅度缩减,因此如何确保已经投入市场的物联网设备具有持续可更新性成为一个亟待解决的问题。

空中固件升级技术是一种利用特定的网络通信协议下载远程固件更新包,从而实现对已经部署的物联网设备进行固件更新的技术。综上所述,本发明基于空中固件升级技术,提出一种用于物联网设备的空中固件升级方法及系统,对当前物联网设备的空中固件升级方式进行优化,并自适应的选择适合本设备的升级方式。



技术实现要素:

本发明的目的在于针对现有技术的不足,提出一种用于物联网设备的空中固件升级方法及系统;本发明可以实现物联网设备的快速迭代升级与维护,设备固件版本的统一化管理,可以有效解决物联网设备固件升级过程中的流量与资源占用问题,实现具有断点续传、固件版本回滚的升级解决方案,提高了升级成功率,改善了用户使用体验。本发明采用的技术方案如下:

本发明提出一种用于物联网设备的空中固件升级方法,包括以下步骤:

步骤1,研发人员修改软件代码后生成新版本固件,通过网络将该新版本固件上传至升级服务器,升级服务器为当前新版本固件设定唯一版本号码,并将该固件存储于私有云数据库;

步骤2,升级服务器确定针对物联网设备终端采用的固件升级方式,包括整包升级方式以及差分升级方式;

步骤3,物联网设备终端连接升级服务器,获取固件升级包,并进行固件升级包的完整性与唯一性校验,校验通过后,利用步骤2中确定的固件升级方法对物联网设备终端软件进行固件升级,将软件版本由旧固件版本升级到目标版本;

步骤4,物联网设备终端升级完成后,向升级服务器发送升级完成通知,升级服务器将升级日志存储至私有云数据库。

进一步地,所述物联网设备端固件更新资源评价方法综合设备端与固件升级过程中涉及到的各项参数,计算当前物联网设备终端的固件更新资源参数θ:

式中:r表示当前物联网设备终端具有的空闲ram资源、f表示当前物联网设备终端具有的flash存储资源、c表示当前网络信号强度、k表示当前网络通信速度,n表示新版本固件大小,o表示旧版本固件大小,t表示当前物联网设备升级最大时间限制,d表示新旧固件差分包大小;

由上述公式首先计算出差分压缩效率p,如果差分压缩效率p小于系统预定压缩比p1,则采用整包升级方式,否则计算固件网络传输时间t,固件网络传输时间t为新固件包传输的时间与升级最大时间限制比值,如果该值大于1,则采用差分升级方式,否则根据固件更新资源参数θ进行选择,如果θ大于系统预定参数θ1,则采用差分升级方式,否则,采用整包升级方式。

进一步地,所述整包升级方式通过将完整新版本固件包下发到物联网设备端完成固件升级操作,具体步骤流程如下:

(1)升级服务器按照设备端资源限制将新版本固件包统一划分为n个数据包,所有数据包大小及格式均相同,同时为每个数据包计算md5值,用于进行数据完整性校验,并启动升级流程,将每个数据包的md5值下发到物联网设备端;

(2)物联网设备端下载第i(1≤i≤n)数据包,并通过计算当前数据包的md5值与升级服务器下发md5值比对;

(3)如果md5值相同,说明数据包完整,转到步骤(2)获取下一个数据包,并将当前已经获取的数据包编号存储至flash;如果md5值不同,说明数据传输出现错误,转到步骤(2)重新获取当前数据包;

(4)如果已经获得第n个数据包,说明新版本固件包获取完成,将该新版本固件包安装到备份存储区域,并设置新版本固件包安装完成标记,然后进行设备重启操作;

(5)设备重启后首先判断固件安装完成标记是否设置,如果没有设置,则读取flash中已获得的固件编号,并转到步骤(2)中继续获取下一个固件数据包;如果固件安装完成标记已经设置,则通过引导加载程序跳转到备份存储区域并进行新版本固件功能测试;

(6)如果功能测试成功,设备将备份存储区域设置为当前活动分区,并上报升级成功信息;如果功能测试失败,则重新跳转回原当前活动分区(原版本固件代码所在存储区域)并上报升级失败信息。

进一步地,所述差分升级方式利用新旧版本固件之间的相似性产生固件差分包,并在设备端利用差分还原技术完成固件升级操作,差分升级方法具体步骤流程如下:

(1)升级服务器请求物联网设备端当前固件版本,并根据固件版本号码从私有云数据库中获取到对应固件数据;

(2)通过分析可重定位elf文件链接前后的信息,并生成一个链接命令,达到将固件链接为一个更加相似版本的目的,改善新旧版本固件间的相似性,从而减小最终产生的差分包大小;

(3)针对旧版本文件的所有后缀按字典进行排序,得到后缀排序数组;

(4)利用旧版本文件的后缀数组以及二分查找算法,在新版本文件中查找出与旧版本文件近似匹配的区域,将新版本文件中除近似匹配区域外的数据作为完全不匹配区域;

(5)针对所有近似匹配区域执行相减操作,记录下近似匹配区域的所有差值以及新版本文件中的完全不匹配区域,并利用lzma算法对以上数据进行有效压缩;

(6)将压缩后的数据打包为差分文件,将该差分文件下发到物联网设备端;

(7)物联网设备端接收到差分文件后,利用本地还原更新方法完成设备端固件升级操作。

进一步地,所述物联网设备端利用差分升级本地还原更新方式用于减小差分还原过程中对于设备空间资源的需求,具体步骤流程如下:

(1)物联网设备端接收到差分文件后,将该差分文件解压缩到指定空闲区域;

(2)首先完成旧版本文件近似匹配区域的相加操作,然后利用有向图配合拓扑排序的方式对近似匹配区域的复制操作次序进行重新排序;对所有复制操作建立一张有向图h=(v,i),其中,顶点集v=(c1,c2,c3…cn),i=(i1,i2,i3…in),式中:ci表示执行过相加操作的数据块,ii表示执行过插入操作的数据块;

(3)如果新版本文件内的近似匹配区域ci与旧版本文件内的cj相交(i≠j),且系统在对cj执行复制操作以前,对ci执行了复制操作,则建立一条边对以上所有顶点进行轮询操作,从而建立对应的有向图;

(4)得到有向图后,系统利用拓扑排序方式得到一条线性路径,并根据该路径产生无读写冲突的复制操作顺序;

(5)旧版本文件完成相加以及复制操作后,将对应的完全不匹配区域插入到指定位置,最终完成物联网设备端的本地还原固件更新操作。

本发明还提出一种用于物联网设备的空中固件升级系统,该系统由物联网设备终端、中继联网单元、升级服务器、私有云数据库共同组成;

所述物联网设备终端通过中继联网单元与升级服务器进行网络通信,获取固件升级包,并进行固件升级包的完整性与唯一性校验,校验通过后,利用升级服务器确定的固件升级方法对物联网设备终端软件进行固件升级,并在升级完成后向升级服务器发送升级完成通知;

所述升级服务器用于接收研发人员生成的新版本固件,为当前新版本固件设定唯一版本号码,并将固件存储于私有云数据库;确定针对物联网设备终端采用的固件升级方式,包括整包升级方式以及差分升级方式;在物联网设备终端升级完成后,将升级日志存储至私有云数据库;

所述私有云数据库用于实现多版本固件包及升级日志的存储。

进一步地,所述升级服务器,包括:

固件升级包版本管理模块:包括物联网设备固件版本管理以及差分包版本管理;

固件升级包生成模块:用于产生各版本的固件更新整包、固件差分包以及新旧版本文件的存储、上传和增删改查;

升级过程控制模块:用于固件升级包的分发、物联网设备端的发现与认证、下载并发访问控制、数据传输安全性与完整性验证、物联网设备固件升级日志记录与保存;

权限管理模块:包括用户注册登陆、用户隔离、用户分级权限管理。

由上述内容可知,本发明存在以下有益效果:本发明设计了一种用于物联网设备的空中固件升级方法及系统,可以实现对资源受限物联网设备节点的可靠、高效固件升级,该系统同时支持整包升级以及差分升级方法,并提出了设备固件更新资源评价方法用于实现对不同物联网设备的差异化升级;本发明提供断点续传、固件版本回滚等多种防止设备失效的升级保护措施;本发明通过优化差分升级流程,并结合本地还原更新方式改善差分升级的流量与资源占用问题;本发明涉及的空中固件升级方法及系统,适用于资源受限的物联网设备节点,实用性强,提高了升级速度和成功率,改善了用户体验。

附图说明

图1是本发明的空中固件升级系统架构;

图2是本发明的空中固件升级方法流程图;

图3是升级服务器与设备端内部模块图;

图4是本发明整包升级方法流程图;

图5是本发明差分升级方法流程图;

图6是新旧固件近似匹配区域对比图;

图7是差分文件格式;

图8是差分升级本地还原更新流程图;

图9是差分升级新版本固件恢复过程图;

图10中,(a)是具有读写冲突的新版本固件恢复过程实例,(b)是针对(a)中恢复过程的拓扑排序图。

具体实施方式

下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。

如图1所示,本发明具体实施给出的一种用于物联网设备的空中固件升级系统,主要由物联网设备终端100、中继联网单元101、升级服务器102、私有云数据库103共同组成,物联网设备终端通过中继联网单元与升级服务器进行网络通信,升级服务器用于实现对大规模物联网设备终端的接入控制管理以及固件包的生成与下发,私有云数据库用于实现多版本固件包存储。

如图2所示,本发明具体实施给出的一种用于物联网设备的空中固件升级方法,该方法包括以下步骤:

步骤201,研发人员修改软件代码后生成新版本固件,通过网络将该新版本固件上传至升级服务器;上传新版本固件时需要同时上传新增版本信息,包括新固件名称、固件作者、固件简要说明等信息;

步骤202,所述升级服务器为当前新版本固件生成唯一版本号码,并将该固件存储于私有云数据库;

步骤203,所述升级服务器主动请求物联网设备端资源参数信息,具体包括设备终端空闲ram资源、flash存储资源、网络信号强度等信息;

步骤204,所述升级服务器利用设备固件更新资源评价方法确定针对物联网设备终端采用的固件升级方式,包括整包升级方式以及差分升级方式。

步骤205,所述物联网设备终端通过中继联网单元连接升级服务器,获取固件升级包,并进行固件升级包的完整性与唯一性校验,校验通过后,利用步骤204中确定的固件升级方法对物联网设备终端软件进行固件升级,将软件版本由旧固件版本升级到目标版本。

步骤207,所述物联网设备终端升级完成后,通过中继联网单元向升级服务器发送升级完成通知,并将升级日志存储至私有云数据库。

如图3所示,本发明所述升级服务器,包括:

固件升级包版本管理模块,用于物联网设备固件版本管理以及差分包版本管理模块;固件升级包生成模块,用于产生各版本的固件更新整包、固件差分包以及新旧版本文件的存储、上传和增删改查;升级过程控制模块,用于固件升级包的分发,物联网设备端的发现与认证,下载并发访问控制,数据传输安全性与完整性,物联网设备固件升级日志记录与保存;权限管理模块,包括用户注册登陆、用户隔离、用户分级权限管理。

物联网设备终端通过中继联网单元与升级服务器进行通信,设备端将flash存储单元划分为五个独立区域,永久数据存储区用于存放一些固化数据,不可更改的数据;配置数据存储区用于存放系统运行时需要用到的特殊配置信息;用户程序存储区1(当前活动分区)代表当前设备所运行固件的存储区域;用户程序存储区2(备份存储区域)用于存储设备升级时下载的固件数据;bootloader区域(引导加载程序)用于接收新版本固件,并完成固件的安装与替换,在固件升级成功后,可以主动跳转到新版本固件运行;以上存储区域划分方式,可以更有效的利用设备端存储资源,一方面可以将不同属性的数据分开存储,减少flash存储单元的擦写次数,从而延长flash存储区域的寿命;另一方面,通过划分两块独立区域存储固件数据,可以实现固件版本回滚,作为物联网设备端的安全措施保障。

参考图2系统运行步骤,在研发人员上传新版本固件后,所述升级服务器将主动请求当前物联网设备端资源参数信息,并结合固件升级过程中涉及到的其它各项参数,利用固件更新资源评价方法确定适合于当前物联网设备的升级方式,固件升级方式主要划分为整包升级方式以及差分升级方式,此处所使用固件升级方式均是经过具体优化之后,使其能够适用于资源受限物联网设备端。具体采用如下公式计算当前物联网设备终端的固件更新资源参数θ:

式中:r表示物联网设备终端具有的空闲ram资源、f表示物联网设备终端具有的flash存储资源、c表示当前网络信号强度、k表示网络通信速度,n表示新版本固件大小,o表示旧版本固件大小,t表示物联网设备升级最大时间限制,d表示新旧固件差分包大小。

由上述公式首先计算出差分压缩效率p,如果差分压缩效率p小于系统预定压缩比p1,则采用整包升级方式,否则计算固件网络传输时间t,固件网络传输时间t为新固件包传输的时间与升级最大时间限制比值,如果该值大于1,则采用差分升级方式,否则根据固件更新资源参数θ进行选择,如果θ大于系统预定参数θ1,则采用差分升级方式,否则,采用整包升级方式。其中,差分压缩效率p代表差分升级包占新固件大小的比例,差分压缩效率越高,说明文件差分算法的差分性能越好,因此在进行系统预定压缩比p1的设置时,可以采用如下方法,首先按照源码变动的不同程度,多次修改源代码用于产生新版本固件,并计算出新旧版本固件间的差分升级包;在相同网络条件下,对目标设备进行循环整包升级以及差分包升级测试,且差分测试时需要满足如下条件,差分升级包传输的时间加上设备端进行固件还原的时间要小于完整新版本固件包传输时间的1/3;利用测试过程中的新旧版本固件以及整包升级和差分升级时间数据,对上述数据进行拟合,得到满足差分测试条件的差分升级包大小平均值以及完整新版本固件升级包平均值,并将两个平均值的比值作为系统预定压缩比p1。系统预定参数θ1是决定设备是否适合使用差分固件升级方法的重要参数,其本质在于判断设备端是否具有足够的存储空间资源用于差分升级,一般可通过测试经验值进行设置。因为差分还原升级时,设备端需要临时存储旧版本固件、差分升级包以及还原后的新版本固件,通常情况下,只需物联网设备终端具有的空闲ram资源加上flash存储资源是新旧版本固件包之和的1.5倍以上即可,具体值可根据设备端资源情况进行微调。

可选地,测试使用物联网设备端芯片为stm32f405rg,该芯片ram资源大小为192k,falsh资源为1m,网络信号强度c为28,物联网设备端通过spi总线与中继联网单元通信,此处中继联网单元可选为4g网络模块,其中spi总线通信速率可设置为1mbps,则网络通信速度k为1mbps,物联网设备升级最大时间限制t设置为60s,可选地,测试使用旧版本固件大小为200k,修改后新版本固件大小为232k,利用差分升级方法得到新固件与旧固件差分升级包大小为26k,因此,计算得出差分压缩效率p=0.89,高于系统预定压缩比p1=30%;计算得出固件网络传输时间t小于1,可以直接由固件更新资源参数θ决定使用何种升级方式,θ=2.81,满足系统预定参数1.5,所以系统可使用差分升级方式进行固件升级。

如图4所示,所述整包升级方式通过将完整新版本固件包下发到物联网设备端完成固件升级操作,具体步骤流程如下:

步骤401,升级服务器按照设备端资源限制将新版本固件包统一划分为n个数据包,同时为每个数据包计算md5值,用于进行数据完整性校验,并启动升级流程;可选地,新版本固件包大小为232k,因此可以按照50k每个数据包大小为标准,划分为n=5个数据包,并为每个数据包计算md5参数值;

步骤402,物联网设备端通过中继联网单元下载第i(1≤i≤n)数据包,并通过计算当前数据包的md5值与服务器下发md5值比对;

步骤403,如果md5值相同,说明数据包完整,转到步骤402获取下一个数据包,并将当前已经获取的数据包编号存储至flash;如果md5值不同,说明数据传输出现错误,转到步骤402重新获取当前数据包;

步骤404,如果已经获得第n(n=5)个数据包,说明新版本固件包获取完成,将该新版本固件包安装到备份存储区域,并设置新版本固件包安装完成标记,然后进行设备重启操作;

步骤407,设备重启后首先判断固件安装完成标记是否设置,如果没有设置,则读取flash中已获得的固件编号,并转到步骤402中继续获取下一个固件数据包;如果固件安装完成标记已经设置,则转到步骤409通过引导区域代码跳转到备份存储区域并进行新版本固件功能测试;

步骤410,如果功能测试成功,转到步骤411,设备将备份存储区域设置为当前活动分区,并上报升级成功信息;

步骤412,如果功能测试失败,则重新跳转回上一版本区域代码,并上报升级失败信息。

如图5所示,该空中固件升级系统除支持整包升级方式外,同样支持差分升级措施,所述差分升级方式利用新旧版本固件之间的相似性产生固件差分包,并在设备端利用差分还原技术完成固件升级操作,具体采用何种升级措施由升级服务器通过设备固件更新资源评价方法自适应选择,该差分升级措施采用了本地还原更新优化方法来降低差分还原算法对于物联网设备端资源占用情况,差分升级方法具体步骤流程如下:

步骤501,升级服务器请求物联网设备端当前固件版本,并根据固件版本号码从私有云数据库中获取到对应固件数据;

步骤502,通过分析可重定位elf文件链接前后的信息,并生成一个链接命令,达到将固件链接为一个更加相似版本的目的,改善新旧版本固件间的相似性,从而减小最终产生的差分包大小;其基本思路如下:通常情况下,一个设备固件由源代码经过预处理、编译、链接得到,在此过程中,将会产生可重定位elf文件,elf文件中包含大量的可重定位条目,在物联网领域,源代码少量更改导致固件大幅度变化的原因在于固件中代码倾向于成块的移动,因此导致新旧版本固件间相似度不高;因此,通过对可重定位文件中的每个段计算新的物理地址,并为其设置部分冗余空间,这样修改该段对应源码时,其地址不会发生变化,从而改善新旧版本固件之间的相似性,最终达到减小差分包大小的目的;

步骤503,针对旧版本文件的所有后缀按字典进行排序,得到后缀排序数组;

步骤504,利用旧文件的后缀数组以及二分查找算法,在新版本文件中查找出与旧版本文件近似匹配的区域,将新版本文件中除近似匹配区域外的数据作为完全不匹配区域;匹配后的结果见参考图6,近似匹配区域的查找遵循以下原则:利用上述后缀排序数组,遍历新固件找到与旧固件的完全匹配区域,根据新旧固件之间的相似程度,将完全匹配区域向两边扩展。完全匹配区域扩展的方向为固件所在区域的前向区域与后向区域,通过相同代码的百分比以及不同代码的长度来评估新旧固件特定区域的相似程度,在本系统中,这些参数分别设置为50%以及8个字节。即最终找到近似匹配区域中的完全匹配区域至少有8个字节与前一近似匹配区域的前向拓展不匹配,且近似匹配区域的前向与后向拓展必须满足一半以上的后缀不匹配条件。如果新固件中有一段代码与旧固件中任何区域都不匹配,那么将其作为完全不匹配区域,之后存入差分包。

步骤505,针对所有近似匹配区域执行相减操作,记录下近似匹配区域的所有差值以及新版本文件中的完全不匹配区域,并利用lzma算法对以上数据进行有效压缩;

步骤506,将压缩后的数据打包为差分文件,差分文件具体打包格式见图7,将该差分文件下发到物联网设备端;差分文件内部头部区域包含目标文件大小,控制信息长度,以及extera完全不匹配信息;控制区域包含近似匹配区域大小、数量以及偏移地址等;diff区域存储近似匹配区域的差值数据,extera区域存储完全不匹配数据信息;

步骤507,物联网设备端接收到差分文件后,利用本地还原更新方法完成设备端固件升级操作,方法具体措施参考图8。

在介绍本地还原更新措施以前,首先需要对差分还原措施有所了解。差分还原本质上是差分措施的逆向运算,设备端在进行固件还原时主要执行两个步骤。第一,进行加法与复制运算,即将差分升级包中diff区域与旧版本固件中的近似匹配相加生成的数据块写入到新文件中;第二,进行插入运算,将extract区域中的数据块插入到指定区域。具体的恢复过程如图9所示。

如图8所示,在步骤507中所述差分升级本地还原更新方式用于减小差分还原过程中对于设备空间资源的需求,使用本地还原更新方式设备端无需申请空间用于存储新版本固件,只需要在旧版本固件基础上完成固件更新操作即可,但是固件更新过程中,因为操作的是同一份固件地址,所以在近似匹配区域相加与复制过程中可能会涉及到近似匹配区域之间的读写冲突问题。因此,在应用该方法时,需要首先为近似匹配区域之间的复制操作设计一个无读写冲突的线性路径,具体步骤流程如下:

步骤5071,物联网设备端接收到差分文件后,将该差分文件解压缩到指定空闲区域;

步骤5072,首先完成旧版本文件近似匹配区域的相加操作,然后利用有向图配合拓扑排序的方式对近似匹配区域的复制操作次序进行重新排序;对所有复制操作建立一张有向图h=(v,i),其中,顶点集v=(c1,c2,c3…cn),i=(i1,i2,i3…in),式中:ci表示执行过相加操作的数据块,ii表示执行过插入操作的数据块;

步骤5073,如果新版本文件内的近似匹配区域ci与旧版本文件内的cj相交(i≠j),且系统在对cj执行复制操作以前,对ci执行了复制操作,则建立一条边对以上所有顶点进行轮询操作,从而建立对应的有向图;将有向图各顶点按照顺序打开即产生一条路径,该路径为无读写冲突的路径;

步骤5074,得到有向图后,系统利用拓扑排序方式得到一条线性路径,并根据该路径产生无读写冲突的复制操作顺序;

具体本地还原更新操作可参考如下更新实例,如图10中(a)所示,ci表示在第i次操作过程中近似匹配区域之间的相加与复制操作,si表示旧版本可执行文件中被跳过的存储空间,即新版本可执行程序相对于旧版本来说删除的部分,ii代表新版本可执行文件中插入部分的数据。通过分析比较新旧版本更新时的操作顺序,本地还原更新算法会产生如图10中(b)所示的写冲突图,节点旁的编号代表反向拓扑排序,以这种反向拓扑排序的方式(c2,c3,c2,i1,c4,i3,c5,i5,c6)执行复制与插入操作不会发生读写冲突。但是应当注意的是,c5,c6的复制和修改操作必须执行正向复制顺序,而c2,c3,c4的复制和修改操作则必须执行反向复制顺序。对于c1来说,无论执行正向或者反正复制,都可以安全的执行c1的复制和修改操作。

步骤5075,旧版本文件完成相加以及复制操作后,将对应的完全不匹配区域插入到指定位置,最终完成物联网设备端的本地还原固件更新操作,完成固件更新操作后,将对应差分文件包删除,并向升级服务器发送升级完成通知。

应当理解的是,本公开并不局限于上面已经描述并在附图中体现的精确结构,并且可以在不脱离其范围进行各种修改。本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1