日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]在離開(kāi)復(fù)位狀態(tài)后,CM3做的第一件事就是讀取下列兩個(gè)32位整數(shù)的值:1)從地址0x0000 0000 處取出MSP的初始值2)從地址0x0000 0004 處取出PC的初始值——這個(gè)值是復(fù)位向量,LSB必須是1.然后從這個(gè)值所對(duì)應(yīng)的地址處取指

在離開(kāi)復(fù)位狀態(tài)后,CM3做的第一件事就是讀取下列兩個(gè)32位整數(shù)的值:

1)從地址0x0000 0000 處取出MSP的初始值

2)從地址0x0000 0004 處取出PC的初始值——這個(gè)值是復(fù)位向量,LSB必須是1.然后從這個(gè)值所對(duì)應(yīng)的地址處取指,如下圖1所示。


圖1


請(qǐng)注意,這與傳統(tǒng)的ARM架構(gòu)不同——其實(shí)也和其它大多數(shù)的單片機(jī)不同。傳統(tǒng)的ARM架構(gòu)總是從0地址開(kāi)始執(zhí)行第一條指令,并且這是一條跳轉(zhuǎn)指令。在CM3中,在0地址提供的是MSP的初始值,然后緊跟著的是向量表(向量表在以后還可以轉(zhuǎn)移到其它位置)。向量表中的數(shù)值是32位的地址,而不是跳轉(zhuǎn)指令。向量表的第一個(gè)條目指向復(fù)位后應(yīng)執(zhí)行的第一條指令。

因?yàn)镃M3使用的是向下生長(zhǎng)的滿棧,所以MSP得初始值必須是堆棧內(nèi)存的末地址加1.舉例來(lái)說(shuō):

如果堆棧區(qū)域在0x20007C00~0x20007FFF之間,那么MSP的初始值就必須是0x20008000.

向量表跟隨在MSP的初始值之后——也就是第2個(gè)表目。要注意因?yàn)镃M3是在Thumb態(tài)下執(zhí)行,所以向量表中的每個(gè)數(shù)值必須把LSB置1(也就是奇數(shù))。正因?yàn)檫@個(gè)原因,圖2使用0x101來(lái)表達(dá)地址0x100.當(dāng)0x100處的指令dedao執(zhí)行后,就正式開(kāi)始了程序的執(zhí)行。在此之前初始化MSP是必須的,因?yàn)橛锌赡艿谝粭l指令還沒(méi)來(lái)得及執(zhí)行,就發(fā)生了NMI或者其他fault。MSP初始化好后,就已經(jīng)為它們的服務(wù)例程準(zhǔn)備好了堆棧。


圖2

對(duì)于不同的開(kāi)發(fā)工具,需要使用不同的格式來(lái)設(shè)置MSP初值和復(fù)位向量——有些則由開(kāi)發(fā)工具自行計(jì)算并生成。如果要獲知細(xì)節(jié),最快的辦法就是參考開(kāi)發(fā)工具提供的一個(gè)示例工程。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉