【分享】OTA分类 & OTA升级方式(乒乓、压缩、差分)

一、OTA介绍

1.1 什么是OTA?

空中下载技术,Over-The-Air,简称OTA。
字面理解,空中、无接触、远程的方式进行升级。
可以通过服务器、移动通信网络等网络连接,来实现终端数据和产品的更新。

1.2 为什么要OTA?

(1)迭代
(2)修复
(3)进化

二、OTA类型

2.1 检查升级

进入面板,这里不会主动提示用户需要升级新的固件,只有用户点到设备详情中的检查固件升级,才会弹框提醒。

2.2 提醒升级

进入面板,app主动检测一次升级,若有新版本固件,则弹窗提示升级,用户可以选择升级,也可以点取消关闭弹框正常通过面板操作设备。

2.3 强制升级

进入面板,app主动检测一次升级,若当前设备固件有新版本则弹框覆盖,点击确定进入升级,若点取消则会返回,即不升级无法在当前面板操作此设备。

2.4 静默升级

不通过app,设备(正常情况下本身与云端保持长连接)会轮循检查是否有新的设备强制升级的固件。如果有设备强制升级的固件,设备就会直接去升级,这里不需要app端。

三、OTA升级方式

首先介绍下芯片的flash分区。
如图,起始地址一般存放bootload,其它空间有的存储业务数据,有的存储系统数据等,我们的固件存放在APP应用区。
在这里插入图片描述

3.1 乒乓升级

两个大小相同的分区APP1、APP2,如果当前在APP1分区执行代码,升级时就把固件下载到APP2分区。升级成功后设备重启,模组切换到APP2分区执行;下次再升级就切换到APP1分区,一直这样轮询。
在这里插入图片描述

3.2 拷贝升级

两个大小相同的分区APP、OTA。APP分区存放要执行的固件,当OTA升级时会先把OTA数据包写入OTA分区,然后再将OTA数据搬移到APP数据区,最后从APP数据区启动执行。
在这里插入图片描述

3.3 压缩升级

两个大小相同的分区APP、OTA。 APP分区存放要执行的固件,OTA分区存放OTA数据的压缩包,bootload启动时会先将OTA压缩包解压,再搬移到APP分区。
其中,APP分区会比OTA分区要大,可以大大节省空间。
在这里插入图片描述

3.4 差分升级

差分升级又叫增量更新,是将旧版本与新版本的数据文件做差分,得到升级部分的补丁即差分包;用户下载了差分包之后,将旧版本数据与差分包进行组合,以得到新版本的数据文件,多数采用BSDiff差分算法。

可以这么理解,差分升级并不是重新安装新的更新包,而是根据新旧版本差异,生成一个补丁包,客户端可以下载补丁包,完成更新。

那么,BSDiff差分算法是什么?
BSDiff 是一个差量更新算法,它在服务器端运行BSDiff 算法产生 patch 包,在客户端运行 BSPatch 算法,将旧文件和 patch 包合成新文件。

BSDiff基本步骤:
(1)对 old 文件中所有子字符串形成一个字典。
(2)对比 old 文件和 new 文件,产生 diff string 和extra string。
(3)将 diff string 和 extra string 以及相应的控制字用zip压缩成一个 patch 包。
在这里插入图片描述
BSPatch基本步骤:
客户端合成patch的基本步骤
(1)接收patch包;
(2)解压patch包。
(3)还原new文件。

3.5 升级方式比较

OTA升级方式 优点 缺点
乒乓升级 上电在对应APP分区直接执行就可以,启动速度快。 两个APP分区切换,代码维护不便,且易出错;
占用内存空间大。
拷贝升级 固件只需在一个APP分区执行,方便,不易出错。 bootload启动时需要先进行拷贝,速度慢;
占用内存空间大。
压缩升级 由于OTA分区占用小,所以APP分区内存比较大。 bootload启动时需要先解压再拷贝,速度慢。
差分升级 当新旧版本相同的部分比较多时,OTA数据包比较小,下载方便快速。 当新旧版本差异很大的话,OTA数据包可能会存在比new文件还大的情况;
补丁包需要跟old文件的版本对应,当更新的产品存在多种不同版本的情况时,就比较麻烦,且必须由云端生成。

四、MCU OTA升级流程

详见MCU OTA升级流程

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>