STM32 MCU IAP跳转APP注意事项

在平时支持客户的 过程中,经常会遇到客户在IAP程序跳转APP程序中,出现跳转失败,死机等问题,以下就这些问题发生的原因和跳转注意事项进行说明。 

首先明确2个基本概念:

IAP:In applicating Programing,在应用编程(通过用户自己写的的IAP程序来实现,bootloader(启动引导程序)为IAP程序)

APP:应用程序

参考STM32F4例程路径:

D:\ST\MCU\FW\F4\en.stm32cubef4\STM32Cube_FW_F4_V1.21.0\Projects\STM324x9I_EVAL\Applications\IAP;

以下程序是IAP程序的main()函数(IAP_Main):



如上代码中#define APPLICATION_ADDRESS   (uint32_t)0x08008000

对应要跳转的APP程序地址;

IAP程序对应的中断向量起始地址如下(IAR,*.icf文件,可以在IAR option-Link中直接配置):





APP程序:IAP_binary_template

APP程序注意3点:

1.Icf文件配置如下:

中断向量表的启始地址对应IAP的跳转地址:0x08008000(0x08000000+0x8000);







中断向量偏移地址对应到跳转偏移量;

2.#define VECT_TAB_OFFSET  0x8000 

在确定了以上均没有问题后,如果客户还反馈有跳转死机问题,还要注意2点:

  1. 确认在跳转之前是否有关中断,中断需要把对应打开的外部中断都关掉,只关总中断在进入APP之后再打开总中断,打开总中断之后在boot中没有关闭的中断又打开了,但是app中对应的地址和boot,所以打开中断会导致死机。
  2. 跳转前把用到的外设全部释放。

如下为只关闭总中断没有关闭其他中断导致死机的错误示范:




STM32中,IAP跳转APP的程序编写中,能规避以上问题点,则可以顺利进行跳转,避免出现死机等问题。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论