OTA和IAP的关系
IAP–In Application Programming. 即在线应用编程,也就是说用户可以使用自己的程序对单片机的user flash区域进行烧写。可以很方便的对已经发布的产品进行功能升级或者程序上的修复,只要保留预先的通信接口即可(USART, 网口等),避免了要进行拆机使用下载器进行烧录。
原文链接:https://blog.csdn.net/lyf_9705/article/details/124061548
STM32 OTA-IAP设计方案
OTA是Over-the-Air的简写,即空中下载技术,通过网络远程给用户进行系统更新和升级。IAP是In Application Programming的简写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。IAP主要包括BootLoader和应用程序两部分,基于IAP的OTA设计思路是先通过OTA接收升级固件,再利用IAP进行固件搬移、校验和程序跳转,实现空中升级的目的。
BootLoader程序根据判断是否需要升级固件,并进行运行代码跳转。APP工程中需要编写OTA数据包交互协议,将接收到的升级固件保存至FLASH,校验一致性然后设置升级标志位并重启。
原文链接:https://blog.csdn.net/u010058695/article/details/99961639
OTA:Over-the-Air Technology,字面意思理解为:空中下载技术。
OTA 在线升级:通过OTA的方式实现产品软件更新的一种方式。
1)接收新的升级固件并完成新旧固件的替换,这部分代码为 BootLoader;
2)产品功能的正常程序,用于执行各种应用功能,这部分程序称为 App。
可以这样理解:IAP 是实现 OTA 升级的一种技术手段,但两者并非完全等同。以下是具体分析:
1. 概念区分
(1) IAP(In-Application Programming,在应用编程)
- 定义:指单片机或微控制器在运行自身程序(用户应用程序)的同时,通过某种通信接口(如 UART、CAN、USB、SPI 等)对自身存储区域(通常是 Flash)进行编程(擦除、写入)的技术。
- 核心场景:
- 在原有程序中预留一个“引导程序(Bootloader)”,用于接收新程序数据并写入 Flash,完成后跳转执行新程序。
- 典型流程:
- 系统上电后先运行 Bootloader(位于 Flash 起始地址)。
- Bootloader 通过通信接口(如串口)接收新固件数据。
- 将新固件写入 Flash 的应用程序区。
- 跳转至新固件的起始地址运行。
(2) OTA(Over-The-Air,空中下载技术)
- 定义:指设备通过无线通信网络(如 Wi-Fi、蓝牙、4G/5G、NB-IoT 等)远程下载并更新固件或软件的技术。
- 核心场景:
- 无需物理连接设备,直接通过无线信道传输升级包,适用于分布式设备(如智能家居、物联网终端)的批量更新。
- 典型流程:
- 服务器存储新版本固件,设备通过无线模块连接服务器请求升级。
- 设备接收升级包(可能分块传输),临时存储于 Flash 预留区域或外部存储器。
- 校验升级包合法性后,将其写入应用程序区。
- 重启后运行新固件。
2. IAP 与 OTA 的关系
(1) IAP 是 OTA 的底层实现方式之一
- OTA 升级的核心需求是:在设备运行时更新固件,这需要依赖 IAP 技术 完成 Flash 擦写和程序跳转。
- 换句话说:
- OTA 是一种升级模式(强调“无线远程”),
- IAP 是一种技术手段(强调“在应用中编程”)。
- OTA 的实现必须基于 IAP,但 IAP 不仅限于 OTA,也可用于有线连接的升级(如通过串口升级)。
(2) OTA 的完整技术链
- OTA 包含云端管理、无线通信、本地升级三个层面,其中:
- 本地升级环节依赖 IAP 实现(通过 Bootloader 操作 Flash)。
- 无线通信环节需要额外的模块(如 Wi-Fi 芯片、4G 模组)和协议(如 HTTP、MQTT)。
- 云端环节涉及固件管理、设备分组、差分升级包生成等。
3. 典型应用场景对比
场景 | IAP(有线) | OTA(无线) |
---|---|---|
通信方式 | UART、CAN、USB 等有线接口 | Wi-Fi、蓝牙、4G/5G 等无线接口 |
适用设备 | 工业设备(需现场连接调试) | 智能家居、穿戴设备、车载终端等 |
升级灵活性 | 需物理接触设备,适合小规模更新 | 远程批量升级,适合海量设备管理 |
技术依赖 | 仅需 Bootloader + 通信接口驱动 | 需云端平台 + 无线模块 + 安全协议 |
4. 关键技术点
(1) IAP 的核心要素
- Bootloader 设计:
- 必须固化在 Flash 非应用区(通常是前几 KB),且不可被应用程序覆盖。
- 需实现通信协议解析(如接收串口数据)、固件校验(CRC 校验)、Flash 操作(擦除、写入)、程序跳转等功能。
- 存储分区:
- 通常将 Flash 分为:
- Bootloader 区(固定地址,如 0x08000000~0x08003FFF)
- 应用程序区(如 0x08004000 之后)
- 升级缓存区(可选,用于暂存新固件)
- 通常将 Flash 分为:
(2) OTA 的核心要素
- 无线通信与协议:
- 需实现设备与云端的安全连接(如 TLS 加密),支持断点续传、差分升级(减少传输数据量)。
- 安全性:
- 升级包需签名验签(防止篡改),传输过程加密(防止中间人攻击)。
- 回滚机制:
- 若升级失败,需能回退到旧版本固件(依赖 IAP 预留的备份分区或 Bootloader 恢复功能)。
总结
- IAP 是实现 OTA 的基础:OTA 的“本地固件更新”环节必须通过 IAP 技术完成。
- 两者的差异在于通信方式和应用场景:
- IAP 是“技术手段”,可用于有线或无线升级;
- OTA 是“应用模式”,强调无线远程升级,依赖 IAP 作为底层技术。
例如:
- 用串口给单片机升级固件,属于 IAP(有线),但不属于 OTA;
- 用 Wi-Fi 给单片机无线升级固件,属于 OTA,其底层依赖 IAP 完成 Flash 写入。