中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

金華網(wǎng)站開發(fā)公司北京seo邢云濤

金華網(wǎng)站開發(fā)公司,北京seo邢云濤,建設工程合同名詞解釋,市場營銷策劃方案模板0 工具準備 Keil uVision5 Cortex M3權威指南(中文) STM32參考手冊 1 在線升級(IAP)設計思路 為了實現(xiàn)STM32的在線升級(IAP)功能,通常會將STM32的FLASH劃分為BOOT和APP兩個部分,BOO…

0 工具準備

Keil uVision5
Cortex M3權威指南(中文)
STM32參考手冊

1 在線升級(IAP)設計思路

為了實現(xiàn)STM32的在線升級(IAP)功能,通常會將STM32的FLASH劃分為BOOT和APP兩個部分,BOOT就是引導APP的引導程序,當我們需要在線升級時就可以通過BOOT來實現(xiàn)。BOOT和APP在FLASH中的分布如下:
在這里插入圖片描述

原理分析:
(1)當STM32復位后會跳轉到FLASH首地址,也就是0x08000000的位置,讀取1-4Byte獲取主堆棧指針初始值(棧頂值)并設置,然后讀取5-8Byte獲取復位中斷服務函數(shù)入口地址并執(zhí)行,進入BOOT程序
(2)BOOT程序根據(jù)用戶選擇升級APP或者跳轉到APP
(2.1)如果用戶選擇升級APP則擦除APP所在扇區(qū),按照一定協(xié)議將APP程序復制到FLASH的APP扇區(qū)
(2.2)如果用戶選擇跳轉到APP,首先關閉全局中斷及清除中斷掛起標志,設置主堆棧指針,跳轉到APP的復位中斷服務函數(shù)**(相當于做了(1)中內(nèi)核干的事情)**

2 BOOT設計

這里介紹一下BOOT跳轉到APP函數(shù)的設計思路:

void Jump_to_APP(void)
{uint32_t i=0;void (*SysMemBootJump)(void);/* 關閉全局中斷 */__disable_irq();/* 關閉滴答定時器,復位到默認值 */SysTick->CTRL = 0;SysTick->LOAD = 0;SysTick->VAL = 0;/* 設置所有時鐘到默認狀態(tài),使用HSI時鐘 */RCC_DeInit();/* 關閉所有中斷,清除所有中斷掛起標志 */for (i = 0; i < 8; i++){NVIC->ICER[i]=0xFFFFFFFF;NVIC->ICPR[i]=0xFFFFFFFF;}/* 使能全局中斷 */__enable_irq();/* 跳轉到系統(tǒng)BootLoader,首地址是MSP,地址+4是復位中斷服務程序地址 */SysMemBootJump = (void (*)(void)) (*((uint32_t *) (FLASH_APP_ADDR + 4)));/* 設置主堆棧指針 */__set_MSP(*(uint32_t *)FLASH_APP_ADDR);/* 跳轉到APP */SysMemBootJump();/* 跳轉成功的話,不會執(zhí)行到這里,用戶可以在這里添加代碼 */while (1){}
}

相關知識:
(1)涉及到的NVIC寄存器
(1.1)NVIC->ICER,中斷失能寄存器,寫入1失能中斷
在這里插入圖片描述
(1.2)NVIC->ICPR,中斷掛起清除寄存器,寫入1清除中斷掛起
在這里插入圖片描述
(2)APP二進制文件含義
bin文件:
在這里插入圖片描述
Byte1-4:0x20014168
Byte5-8:0x080101A1
Byte9-12:0x08012D75
Byte13-16:0x08012851
map文件:
__initial_sp 0x20014168 Data 0 startup_stm32f40xx.o(STACK)
Reset_Handler 0x080101a1 Thumb Code 8 startup_stm32f40xx.o(.text)
NMI_Handler 0x08012d75 Thumb Code 2 stm32f4xx_it.o(i.NMI_Handler)
HardFault_Handler 0x08012851 Thumb Code 8 stm32f4xx_it.o(i.HardFault_Handler)
可以看到,APP工程的bin文件含義如下:
Byte1-4:0x20014168 主堆棧指針初始值(棧頂值)
Byte5-8:0x080101A1 復位中斷服務函數(shù)地址
Byte9-12:0x08012D75 NMI中斷服務函數(shù)地址
Byte13-16:0x08012851 HardFault中斷服務函數(shù)地址
該部分的定義在STM32的參考手冊上也可以看到:
在這里插入圖片描述
其實,我們只需要關注主堆棧指針初始值(棧頂值)和復位中斷服務函數(shù)地址即可。如果想要了解APP前幾個byte的全部內(nèi)容,可以參看STM32參考手冊的“STM32F405xx/07xx 和 STM32F415xx/17xx 的向量表”。
弄清楚了上述的寄存器使用方法和APP的bin文件內(nèi)容后,接下來BOOT中跳轉到APP的操作原理就一目了然了:
(1)關閉全局中斷,避免被打斷
(2)關閉滴答定時器,復位到默認值,為后面的APP營造一個純凈的環(huán)境
(3)設置所有時鐘到默認狀態(tài),為后面APP營造一個純凈的環(huán)境
(4)關閉所有中斷同時清除所有中斷掛起標志,避免APP使能中斷后異常觸發(fā)等情況
(5)使能全局中斷,避免APP部分沒有打開全局中斷
(6)函數(shù)指針指向APP的復位中斷服務函數(shù)(也就是APP的第5-8Byte)
(7)設置主堆棧指針(也就是APP的前4Byte)
(8)跳轉到APP
以上有2個地方需要特別注意:
(1)APP的復位中斷服務函數(shù)地址是APP的第5-8Byte
(2)APP的主堆棧指針初始值(棧頂值)是APP的前4Byte

3 APP設計

APP設計時只需要修改工程的flash起始地址以及中斷向量偏移地址寄存器即可。
(1)修改FLASH起始地址
在這里插入圖片描述
如果我們的APP存放在FLASH的0x8010000開始的位置,則將FLASHA的起始地址修改為0x8010000即可。
(2)修改中斷向量偏移地址
BOOT下我們的中斷向量偏移地址為0x08000000和默認值一樣無須特別設置,APP下由于FLASH起始地址被修改到0x8010000,因此需要將中斷向量偏移地址設置為0x1000:

#define VECT_TAB_OFFSET  0x10000

相關寄存器如下:
在這里插入圖片描述
當STM32發(fā)生了中斷需要響應時,內(nèi)核會根據(jù)向量表偏移量寄存器的值在相應的FLASH空間找到異常服務函數(shù)入口地址(中斷服務函數(shù)入口地址保存工作由編譯器完成)。上電后的向量表如下:
在這里插入圖片描述
假設我們設置的VTOR的值為0x8010000,在發(fā)生了硬錯誤時,會跳轉到0x8010000+0x0000000C的位置找到硬錯誤中斷服務函數(shù)地址并執(zhí)行。這也是我們?yōu)槭裁葱枰贏PP中設置VTOR的原因(BOOT里已經(jīng)默認設置為0x0x8000000),保證我們的中斷能夠正確執(zhí)行。

4 總結

(1)APP程序需要修改FLASH起始地址和向量表偏移量寄存器,以便內(nèi)核能夠在中斷發(fā)生時進入正確的中斷服務函數(shù)
(2)BOOT程序跳轉到APP的過程實際上就是模擬內(nèi)核的操作
(3)BOOT跳轉到APP之前一定要失能所有中斷、清除所有中斷掛起標志,營造一個純凈的環(huán)境

http://www.risenshineclean.com/news/35283.html

相關文章:

  • 西地那非片有依賴性嗎湘潭seo快速排名
  • 做物理的網(wǎng)站企業(yè)如何進行網(wǎng)絡營銷
  • 甘肅省建設廳質量投訴網(wǎng)站武漢百度seo網(wǎng)站優(yōu)化
  • 建網(wǎng)站是什么專業(yè)類別寧德市高中階段招生信息平臺
  • 網(wǎng)站建設計劃表模板下載百度指數(shù)數(shù)據(jù)分析平臺
  • 豐寧縣有做網(wǎng)站的嗎?站長申論
  • 設置wordpress上傳文件大小限制西安網(wǎng)站優(yōu)化培訓
  • 公司做網(wǎng)站 要準備哪些素材電話營銷
  • 響應式網(wǎng)站寬度如何做網(wǎng)站
  • led外貿(mào)網(wǎng)站制作小程序開發(fā)制作
  • 江西建設職業(yè)技術學院招生信息網(wǎng)站如何統(tǒng)計網(wǎng)站訪問量
  • 網(wǎng)站標題優(yōu)化技巧超級軟文網(wǎng)
  • 做海南旅游網(wǎng)站的初衷友情鏈接seo
  • 企業(yè)網(wǎng)站建設技術小程序開發(fā)系統(tǒng)
  • 做黑網(wǎng)站賺錢嗎濱州網(wǎng)站建設
  • 學生怎樣做網(wǎng)站安卓優(yōu)化大師
  • 四川今天公布疫情新情況seo模擬點擊軟件
  • 可以發(fā)布廣告的網(wǎng)站鄭州關鍵詞優(yōu)化顧問
  • 福州企業(yè)做網(wǎng)站精準客源推廣引流
  • php做商城網(wǎng)站上海做網(wǎng)絡口碑優(yōu)化的公司
  • 自己建私人網(wǎng)站做外貿(mào)不好做濟南網(wǎng)站建設制作
  • 隴西學做網(wǎng)站湖北搜索引擎優(yōu)化
  • 2021個人網(wǎng)站盈利模式恢復2345網(wǎng)址導航
  • 做照片相冊最好的網(wǎng)站培訓機構需要什么資質
  • 福田網(wǎng)站制作一鍵優(yōu)化軟件
  • 開發(fā)網(wǎng)站需要用到的專業(yè)技術知識地推的方法和技巧
  • 網(wǎng)站模版怎么編輯器我想做app推廣代理
  • 生產(chǎn)企業(yè)網(wǎng)站有哪些應用商店aso優(yōu)化
  • 網(wǎng)站公安局備案一般多久今日軍事新聞熱點事件
  • 松崗做網(wǎng)站今日頭條新聞最全新消息