【技术干货】一文搞懂IoT设备在线OTA
一、概述
OTA的全称是Over-The-Air,泛指对某个嵌入式系统的软件在线升级。
OTA功能可以让我们的产品完成基本功能后快速上市,并在产品上市后通过功能迭代,问题修复等方式优化产品功能和体验,增强产品竞争力,已经成为IoT产品一个必不可少的功能。
接入涂鸦云的产品均可实现在线OTA:
1、通过TuyaOS接入涂鸦云的产品全部默认支持OTA;
2、通过MCU-SDK接入涂鸦云的产品,在模组端默认支持OTA,更新模组端固件无须MCU参与;
3、通过MCU-SDK接入涂鸦云的产品,在MCU端也支持OTA更新MCU固件,但会对MCU的RAM和Flash有一定的要求;
本文将对比不同OTA实现方式,详细介绍不同OTA方式的优缺点。
二、OTA实现方式对比
目前在嵌入式IoT产品上应用较多的OTA方式有:乒乓升级、搬移升级、压缩升级等,下面依次介绍这几种不同OTA方式的异同。
1、乒乓升级:在APP1和APP2这2个固件区域中来回切换运行
如当前运行在APP1区,将需要更新的固件下载至APP2区;反正当前运行在APP2区,则将更新的固件下载至APP1区;下载完成并经过完整性校验通过后,写固件更新标记至Flash,重启即可完成MCU固件OTA。
优点:
1)固件下载完成后,只需要完成完整性校验即可快速切换至新固件运行,OTA时间较其他方式更短。
2)MCU和BootLoader逻辑处理简单,可靠性及升级体验更佳
3)Bootloader中功能简单,代码空间小
不足:
1)由于存在APP1和APP2两个不同的程序,对于某些无法进行中断向量动态设置的芯片,需要同时生成APP1和APP2新版本固件,并进行文件合并后上传,并在MCU接收升级固件时做出判断,增加逻辑复杂度。支持中断向量动态设置芯片则不存在此问题。
2)APP1和APP2存储空间大小一样,会要求芯片的Flash空间至少为APP区域大小的2倍以上。
3)需要1个额外的Flash存储区域,保存当前Flash运行在哪个区,在下载OTA升级文件完成后更新该数据。
2、搬移升级:将新的固件下载到固件的OTA存储区,下载完成后在BootLoader中将OTA Storage中的文件复制至APP区,成功后跳转至APP区域运行新固件。
优点:
1)可优化乒乓升级方案中的不足点1,无论是否支持中断向量动态设置,搬移方案生成/上传的固件均可只只生产一份。
2)可优化乒乓升级方案中的不足点3,无须额外存储区域。搬移升级方案Copy升级文件成功后可擦除OTA存储区,并切换APP正常运行。
不足:
1)由于需要在BootLoader中做1次数据copy,OTA时间较乒乓升级方案变长。
2)对MCU的Flash空间要求与乒乓一样,为APP区大小的2倍以上。
3、压缩升级:该方案与搬移方案类似,但较搬移升级方案可缩小对MCU的Flash空间的要求。
将新的固件在编译成功后进行压缩生产OTA升级文件并上传至涂鸦云,在升级过程中下载到固件的OTA存储区,下载完成后在BootLoader中将OTA Storage中的文件解压至APP区,解压成功后跳转至APP区域运行新固件。
优点:
1)集成了搬移方案优点
2)升级文件为压缩后的文件,文件大小较搬移方案的升级文件有一定幅度减小。减少比率根据不同的压缩算法不同,可在25%40%左右。这样在MCU同等Flash空间的情况下,可对应提升APP区空间大小。
不足:
1)需要在BootLoader中做对升级文件做解压缩,OTA时间较搬移升级方案变长。
2)需要在BootLoader中集成解压缩算法,对MCU的Flash、RAM、运算速度提出了更高的要求。