本文以美信cortex-m3內(nèi)核某型號(hào)芯片以及eclipse開(kāi)發(fā)環(huán)境介紹芯片啟動(dòng)過(guò)程以及連接文件。
啟動(dòng)過(guò)程介紹:
先看向量表,見(jiàn)下圖1區(qū)域向量表定義在nvic_section這個(gè)區(qū)域,啟動(dòng)時(shí),會(huì)拷貝到RAM中運(yùn)行,后面會(huì)介紹,重定向向量表不是必須的,拷貝到RAM中有個(gè)好處,修改向量表比較方便。
向量表的最開(kāi)始是棧指針,接下來(lái)是復(fù)位向量,見(jiàn)2區(qū)域。
下面就是復(fù)位函數(shù),前面說(shuō)了,復(fù)位函數(shù)地址放在了向量表的第二位。處理器上電后首先運(yùn)行這個(gè)函數(shù),進(jìn)行初始化。這個(gè)函數(shù)定義在了reset區(qū)域,這個(gè)區(qū)域在Flash的起始位置,因此首先運(yùn)行它,這個(gè)函數(shù)第一步就是初始化棧指針,然后調(diào)用start函數(shù)。
關(guān)鍵的start函數(shù)來(lái)了:
1部分:這個(gè)函數(shù)首先從Flash拷貝數(shù)據(jù),這個(gè)過(guò)程就是給全局變量賦值,換句話說(shuō)就是給代碼中有初值的全局變量或者靜態(tài)局部變量賦值。因?yàn)槿肿兞亢挽o態(tài)局部變量初值是保存在Flash里面,會(huì)占用Flash空間,這一點(diǎn)要注意。
2部分:把需要清零的RAM區(qū)清空,包括沒(méi)有初值的全局變量。
3部分:拷貝向量表并重定向,上面已經(jīng)提過(guò),重定向不是必須的。
這個(gè)函數(shù)最后調(diào)用main函數(shù),就再也回不來(lái)了。
連接文件介紹:
1區(qū)域:上面說(shuō)了__reset函數(shù)就在這區(qū)域,可以看出在Flash最上面,首先運(yùn)行它。
2區(qū)域:向量表,start函數(shù)中拷貝到RAM區(qū)了,這是初始位置,在Flash區(qū)。
繼續(xù)往下看連接文件:
1區(qū)域:有初值常量,比如const類型,存放在Flash里
2部分:全局變量初值存放位置。剛才拷貝的就是它。
3區(qū)域:清零區(qū),就是上面循環(huán)清零的區(qū)域
4區(qū)域:棧區(qū)域,一般在RAM最后面,因?yàn)閏ortex-m3類處理器都是滿遞減棧。
?
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1383瀏覽量
40434 -
Cortex
+關(guān)注
關(guān)注
2文章
203瀏覽量
46614 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62993 -
美信
+關(guān)注
關(guān)注
5文章
1335瀏覽量
72576 -
Cortex-M3
+關(guān)注
關(guān)注
9文章
270瀏覽量
59595
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ARM Cortex-M0 DesignStart系列--4啟動(dòng)過(guò)程分析
![ARM <b class='flag-5'>Cortex-M</b>0 DesignStart系列--4<b class='flag-5'>啟動(dòng)過(guò)程</b>分析](https://file.elecfans.com/web2/M00/79/7C/pYYBAGNrfgOACS4qAAFanBo5zHk452.png)
ARM Cortex-M3內(nèi)核介紹
Cortex-M3簡(jiǎn)述
Cortex-M3內(nèi)核_IAP升級(jí)的相關(guān)資料下載
Cortex-M3內(nèi)核浮點(diǎn)型運(yùn)算的研究與實(shí)現(xiàn)
![<b class='flag-5'>Cortex-M3</b><b class='flag-5'>內(nèi)核</b>浮點(diǎn)型運(yùn)算的研究與實(shí)現(xiàn)](https://file1.elecfans.com//web2/M00/A5/DC/wKgZomUMOnmAZvfdAAAJRU8kJCU943.jpg)
Cortex-m3內(nèi)核STM32芯片的硬件庫(kù)程序
TKScope仿真調(diào)試Cortex-M3內(nèi)核的高級(jí)手段
![TKScope仿真調(diào)試<b class='flag-5'>Cortex-M3</b><b class='flag-5'>內(nèi)核</b>的高級(jí)手段](https://file.elecfans.com/web2/M00/49/F1/pYYBAGKhvHuAUX7SAABhTiBo9SU902.png)
介紹STM32F4在Cortex-M4內(nèi)核和Cortex-M3內(nèi)核方面的優(yōu)勢(shì)
Cortex-M3處理器內(nèi)核與基于Cortex-M3的MCU關(guān)系
![<b class='flag-5'>Cortex-M3</b>處理器<b class='flag-5'>內(nèi)核</b>與基于<b class='flag-5'>Cortex-M3</b>的MCU關(guān)系](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32啟動(dòng)過(guò)程--啟動(dòng)文件--分析
![STM32<b class='flag-5'>啟動(dòng)過(guò)程</b>--<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>文件</b>--分析](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論