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的實際起始地址。
相關文章
- app跳轉到指定appAPP
- iOS開發程式之間的跳轉及跳轉到appStoreiOSAPP
- Android 外部URL跳轉到APP的操作AndroidAPP
- App跳轉到許可權設定介面APP
- iOS應用跳轉到appstore評分,首頁iOSAPP
- 教你如何在快應用中跳轉到Android的appAndroidAPP
- IDEA如何使mapper直接跳轉到xml,超實用IdeaAPPXML
- 案例分享,Appium+Python實現APP啟動頁跳轉到首頁APPPython
- ios跳轉到通用頁面iOS
- 瀏覽器內外跳 -- 跳轉到指定應用瀏覽器
- React Native 跳轉到 APP 推送頁面並獲取推送狀態React NativeAPP
- Gridview分頁,清空,跳轉到View
- Hybird推送通知然後跳轉appAPP
- APP直接跳轉設定頁面APP
- h5 喚起app或跳轉appStoreH5APP
- MFC登入介面,跳轉到功能介面
- Android應用內外跳 — 跳轉到應用市場Android
- Android應用內外跳 -- 跳轉到應用市場Android
- 最新跳轉App Store評分的方法APP
- 網頁跳轉(APP內/瀏覽器)網頁APP瀏覽器
- 微信跳轉支付寶app、跳轉淘寶app新方案(領紅包、領淘寶優惠券示例)APP
- 瀏覽器中喚起native app || 跳轉到應用商城下載(一)瀏覽器APP
- vscode 跳轉到函式之後怎麼跳轉回之前的位置VSCode函式
- android應用Dialog跳轉到ActivityAndroid
- Webview之常用App跳轉URL Schemes整理WebViewAPPScheme
- 直播app原始碼,跳轉站外連結或平臺內部跳轉頁面APP原始碼
- 瀏覽器中喚起 native app,否則跳轉到應用商城下載瀏覽器APP
- 如何設定HTTP自動跳轉到HTTPSHTTP
- C# WPF 跳轉到第二個窗體C#
- tomcat埠號直接跳轉到專案首頁Tomcat
- Struts2 中jsp直接跳轉到actionJS
- NFC 標籤:自動跳轉到指定應用
- vue-cli 跳轉到頁面指定位置Vue
- 華為AppGallery常用跳轉與連結詳解APP
- uni-APP 新增頁面實現路由跳轉APP路由
- iOS 11適配之跳轉App Store評論iOSAPP
- 談談App的統一跳轉和ARouterAPP
- iOS App間相互跳轉漫談 part1iOSAPP