专栏首页嵌入式iot物联网中常用的ota升级方案

物联网中常用的ota升级方案

物联网中常用的ota升级方案

说明

在进行物联网开发的过程中,免不了进行ota升级,那么如何做好ota升级又是非常值得思考的问题。

下面从实际应用案例中,剖析一下ota升级的方案。

方案1

最简单的OTA升级,flash布局如下:

其升级的方案是,每个APP的尾部都会记录如下的相关信息,可以作为跳转的标志。

所以可以这样理解,APP0作为运行分区,APP1作为升级分区,当升级分区的标志置位时,将升级分区的代码放到运行分区中执行。

每次都只会跳转到APP0去执行代码。

优点:

该方案设计比较简单,资源占用小。

缺点:

如果升级的过程中出现错误,而校验又没有检测到,则会导致程序起不来。需要加强校验机制,也需要确保下载代码完全的准确性。

也可能在升级之后,出现联网模块不能使用,导致需要去现场解决,这种问题发生后非常严重。

方案2

方案1会存在可能起不来的风险,这时需要去现场进行程序烧录,成本很大。所以第二种是差分升级。

当APP0运行时,将升级的程序放到APP1中,下次BOOT跳转从APP1地址去运行程序。

当APP1运行时,将升级的程序放到APP0中,下次BOOT跳转从APP0地址去运行程序。

这样可以解决一个问题,当模块升级后连接不了网络的问题。如果连接网络失败,可以将失败的原因放到备份SRAM中,多次连接不上,BOOT检测到这个现象,可以跳转到另外一个可以运行的程序进行降级运行。因为两个可以运行的程序没有被破坏。

但是这个问题解决不了由于程序传输错误导致的程序启动不了的问题。

方案3

我曾经也在实际项目中用到过另外OTA方案,如下设计:

该设计的核心在于BOOT中集成联网模块功能,当BOOT下载时,首先会置位相关的标志位。

其设计上采用BOOT主要用于下载功能,当程序运行APP时,需要升级时,会首先将config的标志位置位,然后跳转到BOOT中进行升级,将代码永远放到APP_BAK中,升级完成后,可以校验通过后,将APP_BAK的代码拷贝到APP中,然后再运行APP区代码。

最后一切功能没问题后,再将config设置成正常状态,否则每次boot启动后都会进行OTA请求。

优点:

程序功能可靠有保障,减少可能起不来的风险

缺点:

由于BOOT中集成了比较多的功能,比较复杂,当替换联网模块时,BOOT和APP的代码需要同步修改。

方案4

rt-thread官网上有一种OTA的方案,具体实现如下:

分区名

起始地址

分区大小

分区位置

介绍

app

自定义

自定义

片内 Flash

存储 app 固件

download

自定义

自定义

片内 Flash 或者片外 SPI Flash

存储待升级固件

factory

自定义

自定义

片内 Flash 或者片外 SPI Flash

存储出厂固件

boot

--

--

--

boot固件

流程图如下:

解释一下factory分区的实际应用场景。

由于差分升级或者普通的BOOT升级方案都会存在系统启动不了的可能性,所以增加了一个一定可以启动的固件。具体的使用是需要boot中检测一个硬件IO,当该IO被长时间按下后,会进入出厂程序设置。这样减少了设备出问题后,技术人员需要现场升级的烦恼,即使不懂技术的人也能够按下按键进行复位。

优点:

消除设备启动不了的问题,减少程序下载失败的风险

缺点:

资源消耗太大,三个固件起码需要外挂SPI flash才能设计的比较好,完全利用内部flash,资源有点紧张。

本文分享自微信公众号 - 嵌入式IoT(Embeded_IoT),作者:bigmagic

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-03-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 艾拉比芮亚楠:当OTA普及,我们将在物联网和车联网看到三个变化 | 镁客请讲

    镁客网
  • 响铃:微盟携向蜜岛推出“智慧酒店”,酒店真的能摆脱OTA吗?

    OTA与酒店的恩恩怨怨由来已久,借用这个恩怨制造商业模式博市场的产品也层出不穷,其中以酒店直销解决方案最为典型,一度成为互联网创业热点领域。

    曾响铃
  • 又一个操作系统开源!腾讯开源TencentOS tiny,最小体积 1.8KB!

    整编自:https://github.com/Tencent/TencentOS-tiny

    良月柒
  • ESP32 开发之:亚马逊 AWS 平台 OTA 升级过程完全梳理

    在最近的两篇文章中,我们从概念和流程上梳理了: 一个终端设备如何把一个固件,安全无误的从服务器上,下载到本地。

    IOT物联网小镇
  • 物联网软件开发和交付策略

    当你进入汽车时,车会识别出你。它知道现在是星期五的下午6点。在咨询了您的智能手机日历之后,汽车知道在星期五您总是去旧金山市中心的Hotel Nikko游泳。然后...

    轻吻晴雯
  • 携程为何“记住上一次”?只因OTA的未来是个性化服务引擎

    最近打开携程App预定机票,选中机票进入订单确认页面后,发现部分附加增值产品,如接送机优惠券被勾选,虽然在下方的费用明细栏有清晰的说明,但还是让人意外。在去年国...

    罗超频道
  • OYO与OTA相爱还是相杀?

    携程和美团不约而同地与OYO握手言和,体现出的趋势是,OYO不是OTA的对手,两者合作的空间远远大于未来竞争的可能。

    罗超频道
  • 移动网络运营商:利用SIM的力量克服物联网挑战

    物联网(IoT)的扩张对于物联网的垂直行业和移动网络运营商(MNO)来说是一个巨大的发展机遇,但是机遇与挑战并存。在最近的一次针对正在路上行驶的吉普车的黑客攻击...

    PekQ
  • 零代码玩转OTA升级

    前言: 前边讲过stm32通用bootloader的实现方法,没有看过的,可以参考这一篇文章:STM32通用Bootloader——FOTA,这次将在上篇boo...

    AIoT-KK

扫码关注云+社区

领取腾讯云代金券