STM32 從APP跳入BootLoader問題

在這次項目中,程序從APP跳入BootLoader主要遇到兩個問題,做個記錄:

1、現象:跳入BootLoader後還沒開始升級便重啓

      原因:APP程序中開啓了獨立看門狗,當跳入BootLoader時看門狗也繼續計時,但並沒有重新餵狗,因此導致跳入BootLoader後軟件Reset重新進入APP;同時,這個reset也會導致藍牙BAT引腳和PWR引腳短暫掉電,與APP連接的BLE也斷掉,導致升級數據傳輸失敗的問題。

     解決辦法:在BootLoader中添加餵狗程序或跳入BootLoader前把看門狗停掉(不過我開的獨立看門狗暫時還沒找到停掉的辦法.......)

 

2、現象:從APP跳入BootLoader後,升級過程中程序死掉,打斷點發現每次卡死在啓動文件中的

                 B

                 ENDP

原因:跑到B ENDP一般是因爲程序中發生了中斷但卻找不到中斷入口函數,即沒有寫中斷處理函數。排查本項目,發現APP中開啓了一個IO口外部中斷,但是跳入APP前沒有DeInit回IO口的狀態,當程序跳到BootLoader時IO口發生了外部中斷但卻找不到對應的處理函數因此出錯。

解決辦法:在APP跳入BootLoader前最好把中斷都Disable掉,特別是配置了中斷的IO口,記得DeInit以恢復默認狀態

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章