stm32 IAP APP 相互跳转实验 (keil4 jlink STM32F407ZE
1、實驗目標:?? STM32 IAP學習時,希望有一個快捷的方式去實驗IAP與APP之間的相互跳轉。
??????????????????????? 1)驗證IAP跳轉至APP ?? 2)驗證APP通過軟件reset跳轉至IAP ??
????????????????????? (避免再一開始就實驗完整的IAP過程,編寫BootLoader,編寫 APP,再通過PC工具下載APP代碼,然后再看是否能正常更新,過程很長,新學時可能遇到的障礙太多 )
?
2、實驗方法:?分別編寫BootLoader 和 APP程序(兩個程序僅僅簡單的完成串口打印和跳轉工作,不設計其他功能(如接受bin文件件,更新flash等功能都不包含)),通過串口打印識別區分IAP 和APP程序。
???????????????????? 分別通過jlink在線調試的方式,先后將IAP程序和APP程序下載至STM32,實現IAP/APP實驗的在線調試
?
3、IAP 代碼實現:
IAP主要流程如上圖,進入IAP后初始化,然后打印數據,等待,隨后跳轉至APP
?
4、APP代碼實現
APP代碼流程 初始化,打印,delay,跳轉至IAP。
此處需要特別注意一點,APP程序在線調試時,發現會死在串口發送上。后來在UART初始化時,先將其disable,然后再enable來規避這個問題。
?
以上說明一個值得注意的問題,IAP程序在跳轉至APP程序時,可能有些狀態是沒有清楚的,導致APP程序在運行時引入異常,針對這類問題,APP程序的在線調試方法就非常有用的,直接在線調試可以快速定位問題。
?
5、IAP程序的在線調試
設置好ROM1即可,不需要太多配置。
?
沒有下載過APP程序的情況下,iap_load_app(FLASH_APP1_ADDR);程序不會真的跳轉,會回到IAP程序繼續執行。
?
6、APP在線調試
APP程序的在線調試非常關鍵,因為APP程序的地址不是默認地址,僅僅設置ROM1的情況下,在線調試時依然會默認進IAP程序,無法進行在線調試。
KEIL4需要完成的設置如下:
1)設置flash地址空間,ROM1
?
2)設置flash download 地址
?
3) 配置debug信息
添加ini file 。(我認為這個ini文件是在在線調試的入口調用的,這樣做可以使得在線調試直接從APP的入口處開始執行,這樣的話就可以直接對APP進行debug)
?
設置完以上的數據,IAP程序debug無誤后,再進行APP的在線調試,如下圖:
設斷點,串口直接打印APP INIT說明debug是直接從APP程序的入口處開始的(0x08010000)
?
連續運行的效果如下圖:
?
7、特別鳴謝
http://www.stmcu.org/module/forum/thread-380078-1-1.html
總結
以上是生活随笔為你收集整理的stm32 IAP APP 相互跳转实验 (keil4 jlink STM32F407ZE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于STM32的IAP与APP互相跳转
- 下一篇: stm32 bootloader跳转