串口IAP软件在线升级
一,IAP的原理
IAP其实是将传统的程序分为了两个部分或者三部分,一个称为BootLoader区,另一个称为APP区域(用于存放用户升级的程序,还有一个就是APP备份区,如下所示:
/*******************
-------- 0x08000000
8k | boot | boot引导区域
-------- 0x08002000
20k | app | APP正常软件区域
-------- 0x08007000
| bak |
20k | app | 在线升级的软件写在 此部分区域
-------- 0x0800C000
******************/
其中BootLoader区代码是通过SWD/JTAG方式先下载到单片机中去的,这一部分代码又称为引导代码,它的主要作用有:
1. 接收从预留通信接口传来的bin/hex文件
2. 把程序写在IAP应用程序的存储区域
3. 跳转到真正的应用程序去执行。
二,软件实现(IAR+STM32平台)
1、编写Boot Loader程序,实现三个功能
1)开启串口中断,当串口中有数据过来时将数据保存;
2)写Flash功能,将保存的数据写入Flash 的指定地址;
3)跳转功能,写入成功后跳转至指定地址执行程序。