空中升级(Over The Air,OTA)的本质是通过网络方式来进行本地固件升级的方法。OTA是物联网设备的刚性需求,过去的设备不能联网,因此对固件升级的需求小。现在物联网设备几乎都可联网,具备了通过网络来升级的条件,OTA组件就是物联网设备的一个硬性指标。
通过OTA组件,物联网可以快速响应市场端的上线需求、满足设备部署多样性的需求,确保设备安全性和完整性。 liteOS支持物联网开放平台的远程固件升级,且具备断点续传、固件包完整性保护等特性。
boot loader 设备升级需要将程序分成两个部分,一个是boot loader,另一个是App。App是真正处理任务的任务程序;boot loader的任务是加载引导App,或者是加载引导升级程序,然后是设备进行升级。系统开机时先执行boot loader,由boot loader判断是否满足升级条件,从而执行升级或者加载App的操作。LiteOS官方提供的OTA固件升级流程如图1所示。 升级镜像 通知升级结果 执行升级跳转到新镜像 更新镜像 Iot Server 端云互通组件 应用程序 bootloader Flash ota OTA组件存放了OTA升级相关的功能和协议,通过移动通信(GSM、NB-IoT等)的空中接口对通信模组和应用进行远程管理。
OTA组件包括SOTA升级和FOTA升级。SOTA指的是空中下载技术(Sotfware Over The Air),通过华为自研的平台升级协议,加上内置的lwM2M协议的NB-Iot模组,实现对第三方MCU升级。FOTA指的是空中升级技术(Fireware Over The Air),通过NB-IoT模组内置的LwM2M协议的5号对象,实现对通信模组本身的升级。
OTA升级需要以本地设备与云端服务器对接为基础,这要求设备端与云端要共同开发,以下图示为OTA设备端和云端协同开发流程图。
设备端 OTA云端 是 否 上报升级进度 上报升级结果 上报当前版本 开始 通过协议根据URL下载固件 下载完成后进行固件升级 升级成功 是否存在升级需求? 云控制台添加升级固件 对设备发送固件升级请求 下发固件URL给设备 不做升级处理 云端显示已在下载升级中 云端显示升级成功 结束 upgrate_patch upgrate_patch升级组件补丁。 OTA升级有两种模式,可用手机App升级类比。手机App有两种更新方法,一种方法是全量更新,在服务器上部署完整的软件更新包,然后通过网络推送到各个App用户;用户必须把整个安装包下载下来,在本地重新安装以替换旧的软件程序,全量更新的优点是实现简单,缺点是浪费流量,需要稳定的网络环境。 另一种方法是差分升级,这种方法考虑到现实生活中新旧程序的差异不大,只要将新旧版的差异的部分的代码打包成不定(patch),添加版本差异的描述。升级时只需要下载安装补丁包,即可完成设备升级。差分升级的的坏处是需要一套算法来提供支持,但它的好处是提供流量。