日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32F10X的boot分析

發布時間:2025/3/21 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F10X的boot分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

尊重原著版權:http://www.bubuko.com/infodetail-1610468.html

轉載于:http://www.bubuko.com/infodetail-1610468.html

一、啟動模式,決定向量表的位置

?????當CPU上電后,首先代碼區(Flash)應該從地址為0x00000000開始,而數據區(SRAM)應該從0x20000000開始,Cortex - M3 CPU總是通過代碼區獲得復位向量。STM32F10XXX微處理器中運用了特殊的機制使得STM32不僅可以通過Flash(主閃存和系統閃存)啟動,同時還可以從SRAM中啟動。


關于Main Flash/System Memory/SRAM 可以參見下面內存映射:

從上圖可以看出 0x00000000 - 0x08000000 之間這128M空間是預留的,該區稱為Boot Memory Space(Aliased to Flash or systen memory depending on BOOT pins)。

(1)從Main Flash 啟動:Boot Space 是Main Flash 的別名。以0x08000000 對應的內存為例,則該塊內存既可以通過0x00000000 操作也可以通過0x08000000 操作,且都是操作的同一塊內存

(2)從System Memory啟動:Boot Space 是System Memory的別名。以0x1FFFFFF0對應的內存為例,則該塊內存既可以通過0x00000000 操作也可以通過0x1FFFFFF0操作,且都是操作的同一塊內存

(3)從SRAM 啟動:SRAM 只能通過0x20000000進行操作,與上述兩者不同 。從SRAM 啟動時,需要在應用程序初始化代碼中重新設置向量表的位置。

eg:void SystemInit (void)

{

...... #ifdef?VECT_TAB_SRAM SCB->VTOR?=?SRAM_BASE?|?VECT_TAB_OFFSET;?/*?Vector?Table?Relocation?in?Internal?SRAM.?*/#else SCB->VTOR?=?FLASH_BASE?|?VECT_TAB_OFFSET;?/*?Vector?Table?Relocation?in?Internal?FLASH.*/ #endif

}


二、向量表解析

分析STM32的啟動文件startup_stm32f10x_hd.s(大容量)主要做了以下事情:

(1)設置初始堆棧指針(SP)

(2)設置初始程序計數器(PC)為復位向量,并在執行main函數前初始化系統時鐘

(3)設置向量表入口為異常事件的入口地址

(4)復位之后處理器為線程模式,優先級為特權級,堆棧設置為MSP主堆棧



三、開機實際運行過程

通過仿真器仿真,發現開機后程序就直接跳轉到Reset_Handler,從.map文件看Reset_Handler的地址是0x080003a5并不是0x08000000(因為此時是從Flash中啟動的,故應該是0x08000000)。那么STM32是如何從0x08000000過渡到0x080003a5?

查看Cortex - M3權威指南中文版本中復位序列中相應的說明:

也就是說上電復位的時候,剛開始CPU的主動權還是掌握在CM3中。CM3執行了寄存器的初始化及取復位向量表并執行!

這個絕大多數單片機不同,傳統的ARM架構總是從0地址開始執行,并且0地址是有一條跳轉指令的。在CM3中0地址處存的是MSP的位置,這并不是執行指令只是一個數據表。

另外還有一個問題,如何進入到復位序列?

?觸發STM32進入復位序列的有以下條件:

(1)System reset

(2)Power reset

(3)Backup domain reset

剛上電時就是通過Power reset 進入到復位序列!



總結

以上是生活随笔為你收集整理的STM32F10X的boot分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。