0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2021-03-09 09:48 次阅读

物联网中常用的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,资源有点紧张。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • sram
    +关注

    关注

    6

    文章

    742

    浏览量

    113940
  • 物联网
    +关注

    关注

    2871

    文章

    41712

    浏览量

    358982
  • OTA
    OTA
    +关注

    关注

    7

    文章

    532

    浏览量

    34634

原文标题:物联网中常用的ota升级方案

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问BlueNRG ota升级ota_sw_activation变量上电是随机值吗?

    最近在看BlueNRG ota升级代码时有一个疑惑,ota_sw_activation变量是一个未初始化的值,按照ram特性上电应该是一个随机值,那么在
    发表于 03-13 08:29

    ota升级是什么意思 ota升级有什么用

    OTA(Over-the-Air)升级是指通过无线网络,将软件、固件或系统的新版本传输到支持的设备上进行更新和安装的过程。这一技术广泛应用于手机、智能电视、汽车等各类智能设备中。本文将详细介绍OTA
    的头像 发表于 02-02 10:25 2867次阅读

    深入了解物联网设备的OTA升级机制

    OTA(Over-The-Air,空中下载技术)是一种无线传输技术,用于在物联网设备之间进行远程更新和配置。OTA指的是通过无线通信网络来远程更新或升级嵌入式系统中的软件或固件。
    发表于 01-21 10:03 509次阅读
    深入了解物<b class='flag-5'>联网</b>设备的<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>机制

    如何通过雅特力AT32WB415的蓝牙模块来进行OTA升级

    概述OTA(Over-The-AirTechnology)即空中下载技术,利用OTA技术可以在不接触(接线)的情况下对芯片程序进行升级。AT32WB415的OTA是通过蓝牙的方式实现的
    的头像 发表于 12-20 08:15 303次阅读
    如何通过雅特力AT32WB415的蓝牙模块来进行<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>

    如何通过AT32WB415的蓝牙模块来进行OTA升级

    AT32WB415 OTA Application Note描述了如何通过AT32WB415的蓝牙模块来进行OTA升级
    发表于 10-26 06:43

    如何“助攻”物联设备远程OTA升级

    OTA升级为软件提供持续迭代更新的能力,逐渐成为物联网设备的佳选。本文以ZigBee物联网网关为例,介绍ZWS物联网云平台为物
    的头像 发表于 10-14 08:25 385次阅读
    如何“助攻”物联设备远程<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>

    请问有没有介绍k210在线升级的协议的?

    我们现在设计一个联网升级OTA功能,请问贵司有那种片上自刷程序空间的协议吗
    发表于 09-14 08:04

    阿里云联网平台简介

    设备管理12提供完整的设备生命周期管理功能,支持设备注册、功能定义、脚本解析、在线调试、远程配置、固件升级、远程维护、实时监控、分组管理、设备删除。提供设备模型,简化应用开发。提供设备上下线变更
    发表于 09-11 08:28

    联网中常用的传感器有哪些

    联网中常用的传感器有哪些 随着科技的快速发展,物联网已经成为人们日常生活中不可或缺的一部分。在物联网中,传感器是非常关键的元素之一,它们可以感知、测量和收集环境中的各种参数,比如温度
    的头像 发表于 09-08 11:23 3503次阅读

    ARM联网整体解决方案-数据表

    ARM联网整体解决方案提供了一种独特的基于解决方案的方法,将最新的专业处理能力与先进的软件和工具相结合。 ARM
    发表于 08-29 06:06

    手把手教你OTA升级开发

    。具体升级的动作由升级脚本控制。本文将介绍如何针对OpenHarmony L2场景适配updater模式。主要内容包括: *1.OTA升级实现原理 2.
    发表于 08-22 09:13

    这可能是最简单的OTA远程固件升级系统了。来源啦#arduino #联网

    联网
    学习电子知识
    发布于 :2023年07月17日 01:05:11

    免费开源ota远程升级平台#联网 #嵌入式 #esp #arduino #ota #智能家居

    联网
    学习电子知识
    发布于 :2023年07月10日 21:42:10

    开源-让OTA更简单些esp在线更新固件 #ota #联网 #固件升级 #开源 #arduino #esp

    联网
    学习电子知识
    发布于 :2023年07月03日 20:23:18

    OTA为什么会升级失败?

    如今,几乎所有可联网的电子设备都支持远程升级OTA)功能,OTA 一是让电子设备能够支持更多的功能,二是能够修复一些应用程序中的漏洞。
    发表于 06-15 17:34 1936次阅读
    <b class='flag-5'>OTA</b>为什么会<b class='flag-5'>升级</b>失败?