ICP/ISP/IAP 区别
ICP(In-Circuit Programing)
: 通过J-Link/SWD
等下载器烧写程序,上位机需要借助其他硬件的参与才能更新固件,可以更新MCU的所有存储区域;
ISP(In-System Programing)
: 通过MCU
出厂时固化的一个bootloader
升级程序,上位机可以直接通过指定通讯口更新固件,可以更新除bootloader
之外的存储区域;
IAP(In-Applicating Programing)
: 需要将Flash
区域分成两份,一份用于存储用户自己写的bootloader
,一份用于存储程序功能的UserApp
,只能更新UserApp
;
ICP
直接通过J-Link/SWD
下载程序,略。
ISP
FlyMCU.exe 下载地址
ISP 操作说明
利用FlyMCU.exe
通过串口下载固件。
注意点:
-
- 只能下载
hex
文件;
- 只能下载
-
- 一定要选
DTR低,RTS高进BootLoader
- 一定要选
-
- 通过
Stm32CubeProgrammer
应该也可以下载,但是目前没有连接成功!
- 通过
IAP
IAP
是通过用户自己写的Bootloader
进行固件更新,能够实现全自动远程固件更新。
标准库的IAP官方例程:
- STM32F4系列芯片的例程;
- STM32F3系列芯片的例程;
- 可通过
Google
搜索STM32F3xx in-application programming
相关关键字搜索其他系列的标准库IAP例程
HAL库的IAP官方例程:
4. HAL库IAP例程
以上的例程中,都是通过按键进入bootloader更新固件的,如果需要在APP中根据命令更新固件,则可以在bootloader的最后Flash页中添加一个标志位。如下是IAP的工作流程图: