STM32 IAP - Boot跳轉到APP
簡單IAP設計思路:
- 微控制器上電首先執行BootLoader程式;
- Bootloader如果檢測到需要更新APP,則首先進行更新,更新完成後跳轉到APP並執行;
- Bootloader如果檢測到不需要更新APP,則直接跳轉到APP並執行。
本文僅介紹如何從Bootloader跳轉到APP,以下為跳轉過程在BootLoader及APP中分別需要進行的操作:
1.BootLoader
如下為跳轉函式,定義好APP起始地址FLASH_APP_ADDR ,然後呼叫Jump_to_APP()即可跳轉到APP。
注意:為避免跳轉後執行出錯,呼叫跳轉函式前最好對所有外設進行DeInit。
#define FLASH_APP_ADDR 0x08010000 //你的APP存放起始地址
typedef void (*pFunction)(void);
pFunction Jump_To_Application;
void Jump_to_APP()
{
uint32_t JumpAddress;
/* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
if (((*(volatile uint32_t*)FLASH_APP_ADDR) & 0x2FFE0000 ) == 0x20000000)
{
/* Jump to user application */
JumpAddress = *(volatile uint32_t*) (FLASH_APP_ADDR + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(volatile uint32_t*) FLASH_APP_ADDR);
Jump_To_Application();
}
}
2.APP
在APP的main函式中首先執行:
//0x10000 為APP中斷向量表偏移量
NVIC_SetVectorTable(NVIC_VectTab_FLASH,(0x10000));
其中,APP中斷向量表偏移量=APP存放起始地址相對於微控制器ROM起始地址的偏移量。STM32的ROM起始地址0x8000000,本例中APP存放地址為0x8010000,故偏移量=0x8010000-0x8000000。
注意:需要在IDE中配置APP的ROM起始地址,否則APP將無法執行,對於KEIL配置方法如下:
開啟工程配置-Target,將如圖紅框內地址修改為APP的實際起始地址。
相關文章
- 【STM32】STM32 IAP BootLoaderboot
- Android 外部URL跳轉到APP的操作AndroidAPP
- 教你如何在快應用中跳轉到Android的appAndroidAPP
- vim跳轉到本行末尾
- React Native 跳轉到 APP 推送頁面並獲取推送狀態React NativeAPP
- 案例分享,Appium+Python實現APP啟動頁跳轉到首頁APPPython
- Webview之常用App跳轉URL Schemes整理WebViewAPPScheme
- vscode 跳轉到函式之後怎麼跳轉回之前的位置VSCode函式
- h5 喚起app或跳轉appStoreH5APP
- Android應用內外跳 — 跳轉到應用市場Android
- 直播app原始碼,跳轉站外連結或平臺內部跳轉頁面APP原始碼
- 微信跳轉支付寶app、跳轉淘寶app新方案(領紅包、領淘寶優惠券示例)APP
- uni-APP 新增頁面實現路由跳轉APP路由
- 解決Spring Boot無法跳轉jsp頁面問題Spring BootJS
- 瀏覽器中喚起native app || 跳轉到應用商城下載(二) 之universal links瀏覽器APP
- 404頁面自動跳轉到首頁
- 如何設定HTTP自動跳轉到HTTPSHTTP
- Android跳轉到應用商店的APP詳情頁面,以及 Google GMS 各個apk的包AndroidAPPGoAPK
- 轉跳
- NFC 標籤:自動跳轉到指定應用
- vue-cli 跳轉到頁面指定位置Vue
- C# WPF 跳轉到第二個窗體C#
- 微信跳轉外部瀏覽器下載app詳解瀏覽器APP
- app直播原始碼,RecycleView頁面的點選跳轉設計APP原始碼View
- Android應用中,跳轉到App的詳細設定頁面,設定許可權頁面AndroidAPP
- 短視訊app開發,點選跳轉到另一個頁面時的過場動畫APP動畫
- js頁面跳轉的問題(跳轉到父頁面、最外層頁面、本頁面)JS
- 全棧技巧:從Javascript跳轉到Java能有多難?全棧JavaScript
- jQuery點選平滑跳轉到頁面指定位置jQuery
- Flutter頁面跳轉到IOS原生介面 如何實現?FlutteriOS
- 點選連結跳轉到應用指定頁面
- IDEA如何使mapper直接跳轉到xml,超實用IdeaAPPXML
- Python教程:如何免驗證跳轉到內容頁?Python
- 恆訊科技教你:http怎麼直接跳轉到https?HTTP
- JS 跳轉JS
- ADFS3.0/4.0 訪問登入頁跳轉到登出介面後再跳轉回登入頁的方法S3
- 頁面內跳轉到相應位置的3種方法
- IIS6配置301跳轉到https的教程步驟HTTP