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次,發文人進小黑屋喔~

評論