我们经常会基于STM32芯片来自行编写用户升级程序,通过该升级程序对片内应用程序代码进行更新升级。我们通常称该过程为IAP(In Application Programming),称该升级程序为用户bootloader或IAP程序,用来被更新或升级的代码程序为APP程序。
一般来讲,IAP程序放在芯片启动后默认的起始地址空间。对STM32而言,多是在片内0x8000000起始的Flash地址空间,而用户APP程序地址空间由用户自行指定。
下面基于结合一个小实例来聊聊在做STM32 IAP应用中可能遇到的几类常见问题。
这里使用STM32F302_Nucleo板,模拟设计了一套IAP和一套APP代码,在IAP中使用了TIM2,在其更新中断里使用UART1打印输出目前所在工作区,完成三次打印输出动作后跳转到APP去执行程序。我在APP程序里使用了TIM1,同样在其更新中断里使用UART1打印输出当前所在工作区,也是三次动作后跳转回IAP程序区。【开发环境为MDK,基于stm32Cbue库组织代码】
基于ARM MDK环境的IAP相关