大家好,我是程序小羊,因為最近需要用到Bootloader,所以我打算用STM32這塊板子學習一下Bootloader, 眾所周知,STM32的學習資料是很多的,所以我整理了一下我的學習過程,后續(xù)我的打算是這樣的,我打算畫一塊中間板出來,具體思路如下草圖:
接下來,我們先大概學習一下BootLoader吧:
一般情況下,STM32內(nèi)部程序執(zhí)行過程如下所示:
對于沒有BootLoader的程序,STM32內(nèi)部閃存(FLASH)地址起始于0x8000000,一般情況下,程序文件就從此地址寫入。0x8000004開始存放中斷向量表,當中斷來臨時,STM32的內(nèi)部硬件機制亦會自動將PC指針定位到中斷向量表位置,并且根據(jù)中斷源取出對應的中斷向量執(zhí)行中斷服務程序。
對于有BootLoader的程序,如下圖:
為了能看懂,我將上圖簡化為下圖所示:通過串口或者CAN等將APP程序包進行接收,將APP程序?qū)懙侥骋粋€區(qū)域,寫完后需要進行跳轉(zhuǎn)。
了解完后,我們來學習一下代碼,代碼我注釋寫的很清楚,大家可以看一看。首先是BootLoader里面的串口函數(shù)