嵌入式烧录 / 升级技术方案全维度对比表
| 技术层级 | 方案名称 | 核心定义 | 包含关系 | 常用软件工具 | 核心存储地址(以 STM32F103 为例) | 出现时间 | 方法分类 |
|---|---|---|---|---|---|---|---|
| 顶层大类(在线编程) | ICP(In-Circuit Programming) | 芯片焊在板上无需拆卸即可编程的技术统称 | 包含 ISP、J-Link/SWD 烧录、I2C/SPI 烧录 | 按子方案对应工具 | 无固定地址,随子方案变化 | 20 世纪 90 年代初 | 有线在线编程 |
| ICP 子集 1 | ISP(In-System Programming) | 基于芯片原厂 Bootloader,通过通用外设(串口 / USB)烧录 | 隶属于 ICP | FlyMcu、STM32CubeProgrammer(串口模式) | 系统存储器:0x1FFFF000~0x1FFFF7FF;用户 Flash:0x8000000~0x800FFFFF | 20 世纪 90 年代中后期 | 串口 / USB 有线烧录 |
| ICP 子集 2 | J-Link/SWD 烧录 | 基于 SWD/JTAG 接口,加载 FLM 算法到 RAM 执行烧录 | 隶属于 ICP | Keil MDK、J-Flash、STM32CubeProgrammer(SWD 模式) | 用户 Flash:0x8000000~0x800FFFFF;RAM:0x20000000~0x20005FFF(临时存 FLM 算法) | 2004 年(J-Link 推出后普及) | 调试 + 烧录一体有线方案 |
| ICP 子集 3 | I2C/SPI 离线烧录 | 基于 I2C/SPI 外设,通过外置存储(如 SPI Flash)烧录 | 隶属于 ICP | 自定义上位机、厂商专用烧录器 | 用户 Flash:0x8000000~0x800FFFFF;外置 SPI Flash:视模组型号而定 | 2000 年前后 | 极简硬件有线烧录 |
| 独立技术机制 | IAP(In-Application Programming) | 基于用户自定义 Bootloader,在应用运行时自主升级 | 独立于 ICP,支撑 OTA | 自定义 Bootloader + 应用程序、串口工具(有线触发) | Bootloader 区:0x8000000~0x8003FFF;APP 区:0x8004000~0x800FFFFF;下载缓存区:0x800A000~0x800EFFFF | 21 世纪初 | 应用内自主升级(支持有线 / 无线触发) |
| IAP 的无线实现 | OTA(Over-the-Air) | 基于无线链路(Wi-Fi/BLE/NB-IoT),通过 IAP 完成远程升级 | 依托 IAP 技术实现 | 云平台(阿里云 / 腾讯云)、手机 App、自定义 MQTT/HTTP 服务器 | 同 IAP 存储地址划分 | 2010 年前后(IoT 普及后兴起) | 无线远程升级 |
| 补充方案 | SD 卡离线烧录 | 基于 SD 卡外设,通过自定义 Bootloader 读取固件烧录 | 隶属于 IAP 有线触发场景 | 自定义 Bootloader、读卡器 | 同 IAP 存储地址划分;SD 卡存储:无固定地址 | 2005 年前后 | 本地离线有线升级 |
关键备注
- 包含关系梳理
ICP是最大范畴,所有 “板上不拆芯片” 的有线烧录都属于它;IAP是独立的升级机制,既可以用串口 / SD 卡有线触发,也可以用 Wi-Fi/BLE无线触发(即 OTA);OTA不是独立的底层技术,完全依赖IAP的分区管理和 Bootloader 跳转逻辑。
- 存储地址说明
- 系统存储器是芯片出厂固化 Bootloader 的区域,只读不可擦除;
- 用户 Flash 是存放应用程序的区域,所有烧录方案的最终目标都是改写该区域;
- IAP 必须做分区划分,否则升级时会覆盖正在运行的程序导致设备崩溃。