IAP(In Application Programming)即在应用编程,IAP是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品的固件程序进行更新升级。通常实现IAP功能时,即用户程序运行自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(如USB USART)接收程序或者数据,执行对第二个部分代码的更新;第二个项目代码才是真正的功能代码。这两部分代码项目都是同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它的操作如下:
1)检查是否需要对第二部分代码进行跟新
2)如果不需要更新则转到4)
3)执行跟新操作
4)跳转到第二部分代码执行
STM32正常的程序运行流程如下所示:
STM32的内部(FLASH)地址起始于0x08000000,一般情况下,程序就从此地址开始写入,此外STM32是基于Cortex-M3内核的微控制器,其内部通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程序