STM32f103c8t6 IAP在线升级
设计思路:(自己理解的哈,如果有问题,欢迎大家提出来,一起学习哈)
首先程序每次执行都会从基地址0x0800 0000开始执行。IAP程序升级最重要的就是写BOOTLOADER程序,进行引导升级,加载,跳转app程序。每次上电后进入bootloader判断是否升级如果需要升级,就就收bin文件进行升级,如果不升级直接跳入原app程序执行。
bootloader和app程序的FLASH大小根据实际情况自己确定分配就可以了
下面是我自己画得一个流程图:主要介绍整个大的流程
bin文件的生成方法可以百度一下,网上很多的
代码:(我是根据正点原子的例程改的,代码只贴了重要部分,如果有需要的可以留言。因为注释会乱码,所以我把注释删了)
bootloader.c:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "stmflash.h"
#include "iap.h"
iapfun jump2app;
u16 iapbuf[1024];
void iap_write_appbin