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

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

3天内不再提示

常用的几种IAP升级技术方案是哪些

汽车电子技术 来源:大橙子疯嵌入式 作者:大橙子疯 2023-02-15 15:42 次阅读

前言

关于 IAP 技术,做过 bootloader 的想必很熟悉(IAP全称 In Application Programming,即应用编程),和 ISP(全称 In System Programming,即系统编程)不同,ISP 一般都是通过专业的调试器或者下载器对单片机内部的 Flash 存储器进程编程(如JTAG等),而 IAP 技术是从结构上将 Flash 储存器映射分为两个或者多个分区,在一个分区中对其他分区进行编程,这个分区通常称为 bootloader。

OTA(全称 Over The Air Technology,即云端下载技术,也叫做“空中下载技术”),其基础是 IAP 技术, 可以简单理解为 IAP 的另一种实现方式,通常采用的是无线升级方式(串口、CAN 等属于“直接线控升级”),如通过蓝牙近距离无线升级、ESP8266 网络升级等

IAP 技术方案

关于 ISP 技术这里不过多介绍,有兴趣的朋友可以自己找资料看看。

在实现 IAP 技术时,针对通过 bootloader 更新 app 程序通常会有多种实现方式,可不仅仅只是 Flash 划分两个分区,然后用 bootloader 对 app 分区编程这一种方式。

划分两个分区,只有bootloader和app分区,这个是最简单也是最基本的功能;而在实际产品开发过程中,需要考虑多种因素和需求,如:升级失败了该怎么办?想恢复出厂的版本怎么办?等等一系列的问题。

开发IAP时,最基本的功能就是要有接收新程序的通信协议(用来接收固件程序,以下简称通信协议栈),下面介绍几种常见的实现方式:

bootloader 程序集成通信协议栈

以下方案是由 bootlodaer 集成通信协议栈,编程操作均在 bootloader 中实现,APP 程序中基本不涉及编程操作。

优点:在没有 APP 程序或者 APP 程序异常的时候也能更新程序

缺点:bootloader 相对复杂,且程序 Flash 占用空间大

方案一:更新程序时,发送升级指令给到 MCU ,MCU 通过复位或者跳转的方式进入 bootloader 中,bootloader 首先擦除当前 APP 程序后,开始接收新的 APP 程序并直接写入 APP 分区中。

| booloader Flash | app Flash |

方案二:更新程序时,发送升级指令给到 MCU ,MCU 通过复位或者跳转的方式进入 bootloader 中,bootloader 不会擦除当前 APP 程序,而是将接收到的新 APP 程序写入划分好的空白 Flash 中,等全部接收完成并校验成功时,才开始擦除当前 APP 程序,并将接收完成的新 APP 程序写入。

| booloader Flash | app Flash | 空白Flash |

方案三:更新程序时,发送升级指令给到 MCU ,MCU 通过复位或者跳转的方式进入 bootloader 中,bootloader 不会擦除当前 APP 程序(APP1),而是将接收到的新 APP 程序写入已擦除的 APP2 中,等全部接收完成并校验成功时,将 APP1 程序有效标志清除,设置 APP2 程序有效标志,bootloader 根据有效标志选择需要进入的 APP 程序 (同理:APP2下次更新程序时,先擦除 APP1 的无效程序,然后将接收的程序写入 APP1,接收完成并互转有效标志)。

| booloader Flash | app1 Flash | app2 Flash |


App 程序集成通信协议栈

以下方案是由 app 集成通信协议栈,编程操作在 bootloader 程序中和 APP 程序中基本都涉及;且以下方案至少需要划分三块区域。

优点:bootloader 程序 Flash 占用空间小。

缺点:在没有 APP 程序的情况下无法实现更新,且 Flash 容量需求大;由于 APP 程序迭代快,可能容易出现 bug,无法对程序进行更新。

方案四:更新程序时,app 开始接收新的 APP 程序并直接写入划分好的空白 Flash 中,等全部接收完成并校验成功时,通过复位或者跳转的方式进入 bootloader 中,由 bootloader 开始擦除当前 APP 程序(可能有朋友要问,为啥不能在 app 程序中实现呢?请问你能踩着左右脚上天吗!),并将接收完成的新 APP 程序写入(此方案 APP 和 bootloader 均涉及编程操作)。

| booloader Flash | app Flash | 空白Flash |

方案五:更新程序时,app 开始接收新的 APP 程序并直接写入已擦除的 APP2 中,等全部接收完成并校验成功时,将 APP1 程序有效标志清除,设置 APP2 程序有效标志,复位后,bootloader 根据有效标志选择需要进入的 APP 程序 (同理:APP2下次更新程序时,先擦除 APP1 的无效程序,然后将接收的程序写入 APP1,接收完成并互转有效标志)(此方案只有 APP 涉及编程操作)

| booloader Flash | app1 Flash | app2 Flash |

总结

图片其中:

方案三和方案五由于程序运行地址不同,因此需要对 APP 分别进行编译链接,可应用性大打折扣。

OTA 升级由于采用的无线升级方式,因此相对于“直接线控升级”来说断连的可能性较高,出错的情况也较高,不适合 MCU 每次接收完一帧数据后立马写入。

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

    关注

    6

    文章

    457

    浏览量

    50846
  • bootloader
    +关注

    关注

    2

    文章

    230

    浏览量

    45050
  • IAP技术
    +关注

    关注

    0

    文章

    7

    浏览量

    6940
收藏 人收藏

    评论

    相关推荐

    基于IAP和Keil MDK的远程升级设计

    应用编程(IAP)技术为系统在线升级和远程升级提供了良好的解决方案,也为数据存储和现场固件的升级
    发表于 03-24 12:03

    STM32 IAP在线升级

    STM32很强大的一个功能是支持IAP在线升级IAP(In-Application Programming),即在“应用程序中编程 ",通俗的来将是程序自己可以往程序存储器里写数据或修改
    发表于 03-09 15:56

    IAP在线升级是什么

    IAP在线升级是什么?怎样去设计应用程序?
    发表于 10-19 09:27

    IAP升级的相关资料分享

    IAP升级简介IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是在产品发布后可
    发表于 11-01 09:05

    如何为STM32写bootloader实现IAP升级

    ARM内核芯片下载程序方式有哪几种?如何为STM32写bootloader实现IAP升级
    发表于 12-07 07:44

    IAP是什么?IAP升级流程是怎样的

    IAP是什么?IAP升级流程是怎样的?IAP应用编程有哪些实例啊?
    发表于 12-14 06:53

    STM32如何实现IAP升级

    STM32如何实现IAP升级
    发表于 02-14 07:55

    有线IAP用户程序升级的一些心得分享

    升级的基础上,实现无线升级的一些心得和建议。关于有线升级,大家可以在网上搜索或直接看我的上一篇博文我对IAP的理解常用的单片机程序下载方式有
    发表于 02-16 06:33

    IAP/Bootloader升级原理是什么?

    单片机在线升级原理是什么?IAP/Bootloader升级原理是什么?
    发表于 02-22 08:29

    【应用笔记】CS32L010 IAP 升级

    技术文档旨在帮助客户实现IAP 升级提供一个参考方案和模板。本文档提供基于 UART 升级的 MCU 参考代码和 PC 端的
    发表于 10-09 16:44

    【应用笔记】CS32F03x IAP 升级

    技术文档旨在帮助客户实现IAP 升级提供一个参考方案和模板。本文档提供基于 UART 升级的 MCU 参考代码和 PC 端的
    发表于 11-15 14:28

    怎么加快IAP升级速度?

    可以用什么办法实现IAP加速升级
    发表于 10-13 08:03

    pcb技术在FPC上贴装SMD几种方案简介

    pcb技术在FPC上贴装SMD几种方案简介   根据贴装精度要求以及元件种类和数量的不同,目前常用方案如下
    发表于 11-18 14:00 924次阅读

    基于IAP远程升级技术在空间应用系统解决方案

    IAP可通过专门设计的固件程序来编程内部存储器,不需要硬件支持,所以IAP技术提高了嵌入式系统的可扩展性与可维护性,能在不变的硬件平台上升级其软件版本,提供更多功能及增值服务,适合在轨
    发表于 11-27 17:19 2次下载
    基于<b class='flag-5'>IAP</b>远程<b class='flag-5'>升级</b><b class='flag-5'>技术</b>在空间应用系统解决<b class='flag-5'>方案</b>

    MCU之IAP升级

    IAP升级简介IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是在产品发布后可
    发表于 10-25 13:06 18次下载
    MCU之<b class='flag-5'>IAP</b><b class='flag-5'>升级</b>