一、IAP简介
最近在做集群相关的项目,假如有60辆车组成集群,那每调试一次程序岂不是要给60辆车下一次程序?为了方便调试程序,计划通过上位机软件和数据链一次性就给60辆车下完程序,这就要用到IAP(In Application Programming)即在应用编程,将用户的程序区分为两部分,第一部分存放bootloader程序,第二部分存放app程序,第一部分负责对第二部分的更新和跳转,第二部分就是正常的程序功能,也就是说一个芯片里面其实运行着两个工程。
1.1 STM32H7的flash
我用的FLASH容量是2M的,可以看到分为两个块Bank1、Bank2,每个块还有8个扇区和一个系统存储器,每个扇区大小都为128K,最终我们的程序就是写在这里面。
1.2 加入IAP后的程序流程
可以看到,有新旧两个中断向量表,STM32复位后,先从0x08000004取出老中断向量表地址,执行中断程序如①所示,完毕,进入IAP main函数执行IAP过程,更新app程序,然后跳转。此时从0x08000004+N+M地址取出新的中断向量表&