大纲:
|网络通信专题总结之OTA专题
|OTA简介
|OTA模式以及分类
|用户个性化定制更新业务流程讲述
|具体是怎样实现:
|APP
|嵌入式端
获取url.md5.版本号
请求服务器
下载与存放固件
引导系统分区启动新固件
上报升级状态
|强制升级重大更新业务流程讲述
#OTA简介
OTA的是Over The Air的缩写,中文译以为空中下载技术。OTA最早应用在手机的软件更新上,手机厂商有了这项技术后,可以避免智能手机因为软件故障导致手机召回的风险。同样,在物联网产品中,OTA也是必不可少的。OTA 本质上是客户端/服务器模式。服务器为运营商的后台系统(里面存储嵌入式端更新的固件),客户端为嵌入式端。
#OTA模式以及分类
基于客户端/服务器模式,从OTA发起方式看,有两种。一种是服务器主动向嵌入式端发送升级申请。另一种是嵌入式端向服务器发送升级申请。就第一种而言,对服务器的性能(如并发性)要求比较高,对于第二种而言,对嵌入式端性能有一定要求。从OTA功能性来看,分有两种。一种是用户个性化定制更新,另一种是强制升级重大更新。
本文就嵌入式端向服务器发送升级申请的方式对OTA的两种功能的实现进行论述。
#用户个性化定制更新
用户个性化定制更新的业务流程:用户在手机APP查看到嵌入式端有更新通知,点击升级,嵌入式端在几分钟内完成升级的任务后,APP向用户反馈升级结果。具体的实现我们以问答的形式展开叙述。
APP是怎样知道嵌入式端有更新通知的呢?
前面谈到嵌入式端的固件存储服务器。APP作为客户端定时向服务器查询固件状态信息。如果查询到有更新的固件,就把固件的信息传递给嵌入式端;如果查询到固件没有更新,就不理会。
APP是怎么知道服务器的固件有更新的?
知道固件有更新必然有一个比较的过程,那用什么来比较呢?对于软件来说,最重要的一个标识符就是软件版本号。通过比对嵌入式端当前固件的软件版本号与服务器固件的软件版本号,根据版本号的
新与旧,决定升级。要获取嵌入式端当前的软件版本号,APP可以通过查询或者等待获取的方式获得。
APP是怎样知道嵌入式端固件的升级结果的?
与获取嵌入式端的软件版本号类似,APP可以通过查询或者等待获取的方式获得。嵌入式端到底是怎样升级固件的?
这个过程分为5大步:#获取url.md5.版本号
在嵌入式端收到APP的固件升级通知信息后,解析出通知信息中包含的固件请求链接(url),md5(校验
码),需要升级固件的软件版本号。
#请求服务器
解析出以上信息后,通过HTTP请求的方式向服务器请求下载固件。
#下载与存放固件
收到服务器的许可后,可以陆陆续续把固件下载下来,存到嵌入式端的flash分区。
#引导系统分区启动新固件
改变嵌入式端的boot启动分区,加载新下载的固件,启动。
#上报升级状态
把升级后的软件版本号以及升级结果告知APP。
#强制升级重大更新
强制升级重大更新(别名:静默升级)的业务流程:对于一定要进行升级的软件,如果用户没有及时在APP上手动升级,有可能会影响系统的运行。嵌入式端会定期向服务器端查询是否有紧急升级的软件版本。如果有,则主动下载更新;如果没有,则不更新。升级的过程类似用户个性化定制更新,只是获取url.md5.版本号、请求服务器这两步合二为一了。