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

发布时间:2023-03-27  

前言

关于 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 每次接收完一帧数据后立马写入。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    绍如何实现IAP之前,我们先来简单了解以下STM32的启动流程。 3.1 正常启动流程 这里的正常启动流程指的是,没有添加IAP的流程。 正常启动流程 程序启动时首先开辟栈空间,配置栈顶指针。然后......
    GPIO 引脚即进入空闲状态,可用于其它用途。BOOT0与BOOT1引脚的不同值指向了三种启动方式: 从主Flash启动。主Flash指的是STM32的内置Flash。选择该启动模式后,内置Flash......
    引脚即进入空闲状态,可用于其它用途。BOOT0与BOOT1引脚的不同值指向了三种启动方式: 1)从主Flash启动。主Flash指的是STM32的内置Flash。选择该启动模式后,内置Flash的起......
    STM32的IAP方案实现设计;一、什么IAP,为什么IAP IAP即为In Application Programming(在应用中编程),一般情况下,以STM32F10x系列......
    IAP编程的流程及IAP的应用场所;IAP是什么 有时项目上需要远程升级单片机程序,此时需要接触到IAP编程。 IAP即为In Application Programming,解释......
    STM32代码远程升级之IAP编程;IAP是什么 有时项目上需要远程升级单片机程序,此时需要接触到IAP编程。 IAP即为In Application Programming,解释......
    八脚语音芯片中的八脚指的是什么?;八脚语音芯片中的八脚指的是什么?八脚其实是指八引脚,而引脚又被叫做管脚。引脚就是指从集成电路(芯片)内部电路引出与外围电路的接线,引脚构成了这块芯片的接口。八脚......
    程序代码;另外一块称为常态存储区,用于存储除IAP功能外的所有程序代码。IAP技术指的是, MCU在运行的状态下,通过程序(PC)指针不断读取需要执行的程序指令。正常情况下,PC指针......
    思吧。 一、网络分析仪中的S参数是什么 网络分析仪测量的是S参数,很多朋友不知道S参数到底指的是什么,其实S参数的全称是散射参数,它是网络分析的语言。 在低频电路上,常用的是Z参数(开路......
    ,ISP;具体有什么区别可以自行 Google;本文需要实现 STM32 的 Bootloader(后面 Bootloader/IAP 不加以区分),文件传输基于 ymodem 协议......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>