stm32
的向量表:
使用者**的首位址處放的是堆疊位址,首位址
+4的地方放的是**的復位位址,所以1,
是把使用者**的復位位址賦值給
jumpaddress。2
,是把使用者**的堆疊位址寫入堆疊指標3,
是把使用者**的復位位址付給
pc指標
這句話的意思是把使用者**的首位址裡面的資料拿出來,看看是不是以
0x20000000
開頭。前面說了使用者**的首位址放的是堆疊指標,而堆疊應該指向
ram,而
ram的首位址是
0x20000000
,所以這句話用來判斷是不是已經有乙個正確的堆疊指標位址寫在了使用者**的首位址,進一步可以推測是不是有乙個正確的使用者**寫在了使用者**區,如果已經寫入了,就可以跳過去執行,如果沒有寫入,就不跳過去。這是
demo
程式的判斷邏輯,可以這樣用,也可以不這樣用。
STM32 Bootloader與啟動分析
三種啟動模式如下表 截圖與stm32中文參考資料 截圖來自文件an26062 截圖來自文件an26062 截圖來自正點原子開發板 二 stm32啟動分析 預備知識 dcd指令 用於分配一片連續的字儲存單元 32bit 並將表示式的值初始化給該字儲存單元,類似於c中定義陣列並初始化。比如 dcd 0 ...
STM32 Bootloader與啟動分析
三種啟動模式如下表 截圖與stm32中文參考資料 截圖來自文件an26062 截圖來自文件an26062 截圖來自正點原子開發板 二 stm32啟動分析 預備知識 dcd指令 用於分配一片連續的字儲存單元 32bit 並將表示式的值初始化給該字儲存單元,類似於c中定義陣列並初始化。比如 dcd 0 ...
stm32 復位到內部bootloader
sm32的bootloader一般是通過開機時設定boot0 1來實現的。下面是通過程式來實現 原來的startup檔案是直接把flash的資料載入到ram裡面然後跑main函式迴圈 bootloader的程式在0x1fff d800 那只要在進入main函式之前先判斷是否要進入bootloader...