嵌入式 IAP 在线升级-基础概念
flowchart LR %%{init: { "flowchart": { "curve": "basis" } } }%% A(先取下芯片)--->B(再烧录程序)--->C(后装回板卡)
flowchart LR %%{init: { "flowchart": { "curve": "basis" } } }%% A("在电路编程<br>(ICP)")--->B("在系统编程<br>(ISP)")--->C("在应用编程<br>(IAP)")
传统编程方式
传统编程方式是先将程序烧录至主控芯片中再焊接到电路板上。
开发阶段
- ➀ 从电路板上取下芯片
- ➁ 使用烧录器烧写程序
- ➂ 将芯片装回至电路板
量产阶段
- ➀ 从 tray 盘取出芯片
- ➁ 使用烧录器烧写程序
- ➂ 将芯片放回 tray 盘
维护阶段
- ➀ 从电路板上拆下芯片
- ➁ 使用烧录器烧写程序
- ➂ 将芯片焊回至电路板
现代编程方式
现代编程方式可以直接进行板上烧录,不用再取下芯片放到专用的烧录器上烧录,极大地提高了开发、生产以及维护效率。
现代编程方式又可分为:
- 在电路编程 ICP (Circuit)
- 在系统编程 ISP (System)
- 在应用编程 IAP (Application)
编程方式 | 在电路编程 | 在系统编程 | 在应用编程 |
---|---|---|---|
核心思想 | 借助外部烧录器 通过JTAG/SWD接口 实现在电路编程 |
借助芯片内部 固化的引导程序和BOOT引脚 以及片上接口 实现在系统编程 |
借助用户自己 编写的引导程序、应用程序 以及片上接口、板上接口 实现在应用编程 |
引导程序 | 不需要 | 需要芯片厂家编写 并固化到某一地址空间 |
需要用户自己编写 并烧录至内部flash存储器 |
进入方式 | 随时待命 | 需要更改BOOT引脚的电平 然后硬件复位 进入内部固化的引导程序 |
随时待命 |
配套软件 | 烧录软件 | 芯片厂家提供的 上位机ISP编程软件 |
用户自己开发的数据传输软件 |
通信接口 | JTAG/SWD | 取决于芯片中固化的引导程序 URT/SPI/IIC/CAN/USB |
理论上可以支持任意接口 URT/SPI/IIC 485/CAN/USB WiFi/BLE/IrDA PLC/ETH/4G/5G/NBIoT |
程序升级 是否需要 拆装芯片 |
不需要 拆装芯片 |
不需要 拆装芯片 |
不需要 拆装芯片 |
程序升级 是否需要 拆装外壳 |
需要 拆开设备外壳 |
通信接口完备的情况下 不需要 拆开设备外壳 485/CAN/USB |
通信接口完备的情况下 不需要 拆开设备外壳 485/CAN/USB/WiFi/BLE/IrDA |
程序升级 是否需要 前往现场 |
需要 前往设备安装现场 |
需要 前往设备安装现场 |
远程通信功能完备的情况下 不需要 前往设备安装现场 PLC/ETH/4G/5G/NBIoT |
BOOT1 | BOOT0 | BOOT MODE |
---|---|---|
X | 0 | boot from 0x08000000 : main memory |
0 | 1 | boot from 0x1FFF0000 : boot memory |
1 | 1 | boot from 0x20000000 : sram memory |