本文以美信cortex-m3內核某型號芯片以及eclipse開發環境介紹芯片啟動過程以及連接文件。
啟動過程介紹:
先看向量表,見下圖1區域向量表定義在nvic_section這個區域,啟動時,會拷貝到RAM中運行,后面會介紹,重定向向量表不是必須的,拷貝到RAM中有個好處,修改向量表比較方便。
向量表的最開始是棧指針,接下來是復位向量,見2區域。
下面就是復位函數,前面說了,復位函數地址放在了向量表的第二位。處理器上電后首先運行這個函數,進行初始化。這個函數定義在了reset區域,這個區域在Flash的起始位置,因此首先運行它,這個函數第一步就是初始化棧指針,然后調用start函數。
關鍵的start函數來了:
1部分:這個函數首先從Flash拷貝數據,這個過程就是給全局變量賦值,換句話說就是給代碼中有初值的全局變量或者靜態局部變量賦值。因為全局變量和靜態局部變量初值是保存在Flash里面,會占用Flash空間,這一點要注意。
2部分:把需要清零的RAM區清空,包括沒有初值的全局變量。
3部分:拷貝向量表并重定向,上面已經提過,重定向不是必須的。
這個函數最后調用main函數,就再也回不來了。
連接文件介紹:
1區域:上面說了__reset函數就在這區域,可以看出在Flash最上面,首先運行它。
2區域:向量表,start函數中拷貝到RAM區了,這是初始位置,在Flash區。
繼續往下看連接文件:
1區域:有初值常量,比如const類型,存放在Flash里
2部分:全局變量初值存放位置。剛才拷貝的就是它。
3區域:清零區,就是上面循環清零的區域
4區域:棧區域,一般在RAM最后面,因為cortex-m3類處理器都是滿遞減棧。
?
-
內核
+關注
關注
3文章
1406瀏覽量
41045 -
Cortex
+關注
關注
2文章
203瀏覽量
47091 -
函數
+關注
關注
3文章
4367瀏覽量
64043 -
美信
+關注
關注
6文章
1335瀏覽量
73166 -
Cortex-M3
+關注
關注
9文章
276瀏覽量
60068
發布評論請先 登錄
ARM Cortex-M0 DesignStart系列--4啟動過程分析

ARM Cortex-M3內核介紹
Cortex-M3簡述
Cortex-M3內核_IAP升級的相關資料下載
Cortex-M3內核浮點型運算的研究與實現

介紹STM32F4在Cortex-M4內核和Cortex-M3內核方面的優勢
Cortex-M3處理器內核與基于Cortex-M3的MCU關系

STM32啟動過程--啟動文件--分析

評論