串口IAP升级软件实现

串口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)跳转功能,写入成功后跳转至指定地址执行程序。

2、将自己写的Boot Loader程序下载至芯片中(也可以将bootloader程序和app程序一起烧写进去)。Boot Loader的地址是0x0800 0000

你可能感兴趣的:(单片机开发,C语言)