CortexM體系結(jié)構(gòu)實(shí)用學(xué)習(xí)教案_第1頁(yè)
CortexM體系結(jié)構(gòu)實(shí)用學(xué)習(xí)教案_第2頁(yè)
CortexM體系結(jié)構(gòu)實(shí)用學(xué)習(xí)教案_第3頁(yè)
CortexM體系結(jié)構(gòu)實(shí)用學(xué)習(xí)教案_第4頁(yè)
CortexM體系結(jié)構(gòu)實(shí)用學(xué)習(xí)教案_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、會(huì)計(jì)學(xué)1CortexM體系結(jié)構(gòu)實(shí)用體系結(jié)構(gòu)實(shí)用(shyng)第一頁(yè),共64頁(yè)。第1頁(yè)/共64頁(yè)第二頁(yè),共64頁(yè)。第2頁(yè)/共64頁(yè)第三頁(yè),共64頁(yè)。第3頁(yè)/共64頁(yè)第四頁(yè),共64頁(yè)。工作模式和特權(quán)(tqun)級(jí)別處理(chl)模式線程模式(msh)特權(quán)級(jí)用戶級(jí)始終特權(quán)級(jí)2.2 2.2 處理器工作模式及狀態(tài)處理器工作模式及狀態(tài)工作模式用于區(qū)別普通應(yīng)用程序的代碼和異常服務(wù)例程的代碼(包括中斷服務(wù)例程的代碼)特權(quán)級(jí)別可以提供一種存儲(chǔ)器訪問(wèn)的保護(hù)機(jī)制,使得普通的用戶程序代碼不能意外地,甚至是惡意地執(zhí)行涉及到要害的操作。第4頁(yè)/共64頁(yè)第五頁(yè),共64頁(yè)。 特權(quán)執(zhí)行可以訪問(wèn)所有資源。 非特權(quán)執(zhí)行時(shí)對(duì)有些(y

2、uxi)資源的訪問(wèn)受到限制或不允許訪問(wèn)。特權(quán)訪問(wèn)(fngwn)和用戶訪問(wèn)(fngwn)(非特權(quán)訪問(wèn)(fngwn)的區(qū)別FAULTMASKPRIMASKSCS用戶(yngh)訪問(wèn)特權(quán)訪問(wèn)特權(quán)訪問(wèn)第5頁(yè)/共64頁(yè)第六頁(yè),共64頁(yè)。2.2 處理器工作處理器工作(gngzu)模式及狀態(tài)模式及狀態(tài) 線程模式線程模式(msh)Cortex-M3處理器支持處理器支持(zhch)兩種工作模式:兩種工作模式:線程模式和處理模式線程模式和處理模式 處理模式處理模式u 在復(fù)位時(shí)處理器進(jìn)入線程模式在復(fù)位時(shí)處理器進(jìn)入線程模式u 異常返回時(shí)處理器進(jìn)入線程模式異常返回時(shí)處理器進(jìn)入線程模式u 特權(quán)和用戶(非特權(quán))代碼能夠在線

3、程模式下運(yùn)行特權(quán)和用戶(非特權(quán))代碼能夠在線程模式下運(yùn)行u 出現(xiàn)異常時(shí)處理器進(jìn)入處理模式出現(xiàn)異常時(shí)處理器進(jìn)入處理模式u 在處理模式中,所有代碼都是特權(quán)訪問(wèn)的在處理模式中,所有代碼都是特權(quán)訪問(wèn)的第6頁(yè)/共64頁(yè)第七頁(yè),共64頁(yè)。2.2 處理器工作模式處理器工作模式(msh)及狀態(tài)及狀態(tài)線程模式(msh)特權(quán)訪問(wèn)復(fù)位(f wi)處理模式特權(quán)訪問(wèn)異常線程模式用戶訪問(wèn)異常異常退出CONTROL0 = 1CONTROL0 = 0MSR指令置位CONTROL0 第7頁(yè)/共64頁(yè)第八頁(yè),共64頁(yè)。CONTROL0特權(quán)訪問(wèn)用戶訪問(wèn)10特權(quán)訪問(wèn)(fngwn)和用戶訪問(wèn)(fngwn)的切換控制控制(kngzh)寄

4、存寄存器的第器的第0位位在處理模式在處理模式(msh)下,通過(guò)下,通過(guò)MSR指令清零指令清零CONTROL0,退出處理模式退出處理模式(msh)進(jìn)入線程模式進(jìn)入線程模式(msh)時(shí)切換到特權(quán)訪問(wèn)時(shí)切換到特權(quán)訪問(wèn) 。 MOV R0 #0X00 MSR CONTROL R0在在處理模式處理模式下,通過(guò)下,通過(guò)MSR指令指令置位置位CONTROL0,退出退出處理模式進(jìn)入線程模式處理模式進(jìn)入線程模式時(shí)切換到用戶訪問(wèn)時(shí)切換到用戶訪問(wèn) 。在在線程模式特權(quán)訪問(wèn)線程模式特權(quán)訪問(wèn)下,通過(guò)下,通過(guò)MSR指令指令置位置位CONTROL0,即可由特權(quán)訪問(wèn)進(jìn)入用戶訪即可由特權(quán)訪問(wèn)進(jìn)入用戶訪問(wèn)問(wèn) 。 MRS R0 CON

5、TROL ORR R0, R0, #0 x01 MSR CONTROL R0 第8頁(yè)/共64頁(yè)第九頁(yè),共64頁(yè)。第9頁(yè)/共64頁(yè)第十頁(yè),共64頁(yè)。32位位 CM3寄存器寄存器R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)r0r12 ,為為13個(gè)通用個(gè)通用(tngyng)目目的寄存器的寄存器 低組寄存器低組寄存器 , r0-r7可以可以(ky)被指定通用寄存器的所有被指定通用寄存器的所有指令訪問(wèn)指令訪問(wèn) 高組寄存器高組寄存器 , r8-r12可以被可以被指定通用寄存器的所有指定通用寄存器的所有(suyu)32位指令訪問(wèn)位指令訪問(wèn) ,16位位T

6、humb指令不能訪問(wèn)它們,指令不能訪問(wèn)它們,32位位的的Thumb2指令則不受限制。指令則不受限制。 SP_processSP_main第10頁(yè)/共64頁(yè)第十一頁(yè),共64頁(yè)。分組的堆棧分組的堆棧(duzhn)指針(指針(SP)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRSP_mainSP_process處理(chl)模式線程模式(msh)可用 MSP始終使用主堆棧指針(MSP)也可用進(jìn)程堆棧指針(PSP)特權(quán)級(jí)使用用戶級(jí)使用第11頁(yè)/共64頁(yè)第十二頁(yè),共64頁(yè)。主堆棧主堆棧(duzhn)和進(jìn)程堆棧和進(jìn)程堆棧(duzhn)Corte

7、x-M3內(nèi)核有兩個(gè)堆棧內(nèi)核有兩個(gè)堆棧(duzhn)指針:指針:MSP和和PSP 結(jié)束復(fù)位后,所有結(jié)束復(fù)位后,所有(suyu)代碼都使用主堆棧代碼都使用主堆棧 所有異常都使用主堆棧所有異常都使用主堆棧 異常處理程序(例如異常處理程序(例如SVC)可以通過(guò)改變其在退出時(shí)使)可以通過(guò)改變其在退出時(shí)使用的用的EXC_RETURN值來(lái)改變線程模式使用的堆棧。值來(lái)改變線程模式使用的堆棧。 在線程模式中,使用在線程模式中,使用MSR指令對(duì)指令對(duì)CONTROL1執(zhí)行寫執(zhí)行寫操作也可以從主堆棧切換到進(jìn)程堆棧。操作也可以從主堆棧切換到進(jìn)程堆棧。 堆棧指針堆棧指針r13是分組寄存器,在是分組寄存器,在SP_main

8、和和SP_process之間切換。在任何時(shí)候,進(jìn)程堆棧和之間切換。在任何時(shí)候,進(jìn)程堆棧和主堆棧中只有一個(gè)是可見(jiàn)的,由主堆棧中只有一個(gè)是可見(jiàn)的,由r13指示。指示。 第12頁(yè)/共64頁(yè)第十三頁(yè),共64頁(yè)。堆棧(duzhn)與微處理器模式的對(duì)應(yīng)關(guān)系通過(guò)異常(ychng)進(jìn)行堆棧切換線程模式(msh)主堆棧復(fù)位處理模式主堆棧產(chǎn)生異常線程模式進(jìn)程堆棧產(chǎn)生異常異常退出EXC_RETURN3:0 = 0b1101EXC_RETURN3:0 = 0b1001第13頁(yè)/共64頁(yè)第十四頁(yè),共64頁(yè)。堆棧與微處理器模式(msh)的對(duì)應(yīng)關(guān)系通過(guò)MSR指令(zhlng)修改CONTROL1進(jìn)行堆棧切換線程模式(msh

9、)主堆棧線程模式進(jìn)程堆棧CONTROL1主堆棧進(jìn)程堆棧10控制寄存器的第1位一般通過(guò)中斷返回進(jìn)行堆棧切換,MSR指令切換用的極少。第14頁(yè)/共64頁(yè)第十五頁(yè),共64頁(yè)。鏈接(lin ji)寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)鏈接寄存器鏈接寄存器 (LR) 在執(zhí)行分支在執(zhí)行分支(branch)和鏈和鏈接接(BL)指令或帶有交換的分支指令或帶有交換的分支和鏈接指令和鏈接指令(BLX)時(shí),時(shí),LR用于用于保存保存(bocn)PC的返回地址。的返回地址。 主要用于保存主要用于保存(bocn)子程序的子程序的 返回地址。返回地

10、址。 LR也用于異常返回。也用于異常返回。 第15頁(yè)/共64頁(yè)第十六頁(yè),共64頁(yè)。鏈接(lin ji)寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)int main ( ) . delay( ); SetLED1( );void delay( ) .BL delaydelay: . BX LR .0X20F00X20F4地址(dzh)R14(LR)0X20F40X10F40X10F4執(zhí)行BL指令(zhlng),LR的值同時(shí)更新第16頁(yè)/共64頁(yè)第十七頁(yè),共64頁(yè)。寄存器(PC)R0R1R2R3R4R5R6R7R8R9R10R1

11、1R12R13(SP)R14(LR)R15(PC)XPSR程序計(jì)數(shù)器程序計(jì)數(shù)器 (PCPC)程序計(jì)數(shù)器程序計(jì)數(shù)器 總是總是(zn sh)(zn sh)指向正在取指的指指向正在取指的指令。令。該寄存器的位該寄存器的位0 0始終為始終為0 0,因此,指令始,因此,指令始終與字或半字邊界對(duì)齊。終與字或半字邊界對(duì)齊。 程序狀態(tài)程序狀態(tài)(zhungti)(zhungti)寄存器寄存器 (XPSRXPSR)用于指示程序的運(yùn)行狀態(tài)用于指示程序的運(yùn)行狀態(tài)(zhungti)(zhungti)。第17頁(yè)/共64頁(yè)第十八頁(yè),共64頁(yè)。第18頁(yè)/共64頁(yè)第十九頁(yè),共64頁(yè)。名字名字 功能描述功能描述PRIMASKPR

12、IMASK 這是個(gè)只有這是個(gè)只有1 1 個(gè)位的寄存器。當(dāng)它置個(gè)位的寄存器。當(dāng)它置1 1 時(shí),就關(guān)掉所有可屏蔽時(shí),就關(guān)掉所有可屏蔽的異常,只剩下的異常,只剩下NMINMI和硬和硬fault fault 可以響應(yīng)。它的缺省值是可以響應(yīng)。它的缺省值是0 0,表,表示沒(méi)有關(guān)中斷。示沒(méi)有關(guān)中斷。FAULTMASKFAULTMASK 這是個(gè)只有這是個(gè)只有1 1 個(gè)位的寄存器。當(dāng)它置個(gè)位的寄存器。當(dāng)它置1 1 時(shí),只有時(shí),只有NMI NMI 才能響應(yīng),才能響應(yīng),所有其它的異常,包括中斷和所有其它的異常,包括中斷和faultfault,通通閉嘴。它的缺省值,通通閉嘴。它的缺省值也是也是0 0,表示沒(méi)有關(guān)異常。

13、,表示沒(méi)有關(guān)異常。BASEPRIBASEPRI 這個(gè)寄存器最多有這個(gè)寄存器最多有9 9 位(由表達(dá)優(yōu)先級(jí)的位數(shù)決定)。它定義位(由表達(dá)優(yōu)先級(jí)的位數(shù)決定)。它定義了被屏蔽優(yōu)先級(jí)的閾值。當(dāng)它被設(shè)成某個(gè)值后,所有優(yōu)先級(jí)號(hào)了被屏蔽優(yōu)先級(jí)的閾值。當(dāng)它被設(shè)成某個(gè)值后,所有優(yōu)先級(jí)號(hào)大于等于此值的中斷都被關(guān)(優(yōu)先級(jí)號(hào)越大,優(yōu)先級(jí)越低)。大于等于此值的中斷都被關(guān)(優(yōu)先級(jí)號(hào)越大,優(yōu)先級(jí)越低)。但若被設(shè)成但若被設(shè)成0 0,則不關(guān)閉任何中斷,則不關(guān)閉任何中斷,0 0 也是缺省值。也是缺省值。第19頁(yè)/共64頁(yè)第二十頁(yè),共64頁(yè)。位位功能功能CONTROL1 堆棧指針選擇堆棧指針選擇0=選擇主堆棧指針選擇主堆棧指針MS

14、P(復(fù)位后缺省值)(復(fù)位后缺省值)1=選擇進(jìn)程堆棧指針選擇進(jìn)程堆棧指針PSP在線程或基礎(chǔ)級(jí)(沒(méi)有在響應(yīng)異常),可以在線程或基礎(chǔ)級(jí)(沒(méi)有在響應(yīng)異常),可以使用使用PSP。在。在handler 模式下,只允許使用模式下,只允許使用MSP,所以此時(shí)不得往該位寫,所以此時(shí)不得往該位寫1。CONTROL00=特權(quán)級(jí)的線程模式特權(quán)級(jí)的線程模式1=用戶級(jí)的線程模式用戶級(jí)的線程模式Handler 模式永遠(yuǎn)都是特權(quán)級(jí)的模式永遠(yuǎn)都是特權(quán)級(jí)的第20頁(yè)/共64頁(yè)第二十一頁(yè),共64頁(yè)。第21頁(yè)/共64頁(yè)第二十二頁(yè),共64頁(yè)。片內(nèi)總線或內(nèi)部總線:連接片內(nèi)總線或內(nèi)部總線:連接CPUCPU內(nèi)內(nèi)部各主要部各主要(zhyo)(z

15、hyo)功能部件功能部件片外總線:片外總線:CPUCPU與存儲(chǔ)器(與存儲(chǔ)器(RAMRAM和和ROMROM)和)和I/OI/O接口之間進(jìn)行信息接口之間進(jìn)行信息交換的通道交換的通道數(shù)據(jù)總線數(shù)據(jù)總線DbusDbus地址總線地址總線AbusAbus控制總線控制總線CbusCbus總總線線分分類類第22頁(yè)/共64頁(yè)第二十三頁(yè),共64頁(yè)。原因:數(shù)據(jù)寬度:高速總線通常提供較寬的數(shù)據(jù)連接。成本:高速總線通常采用(ciyng)更昂貴的電路和連接器。橋允許總線獨(dú)立操作,這樣在I/O操作中可提供某些并行性。一個(gè)一個(gè)(y )微處理器系統(tǒng)可能含有多條總線微處理器系統(tǒng)可能含有多條總線高速高速(o s)總線總線低速總線低速

16、總線高速設(shè)備高速設(shè)備低速設(shè)備低速設(shè)備橋橋總線互聯(lián)的電路總線互聯(lián)的電路2.42.4總線接口總線接口總線定義總線定義總線是總線是CPUCPU與與存儲(chǔ)器存儲(chǔ)器和和設(shè)備設(shè)備通信的機(jī)制,是計(jì)算機(jī)各部件之間傳送數(shù)據(jù)、地址和控制信息的通信的機(jī)制,是計(jì)算機(jī)各部件之間傳送數(shù)據(jù)、地址和控制信息的公共通道公共通道。第23頁(yè)/共64頁(yè)第二十四頁(yè),共64頁(yè)。片上總線片上總線(zn xin)標(biāo)準(zhǔn)種類繁多,而由標(biāo)準(zhǔn)種類繁多,而由ARM公司公司推出的推出的AMBA(Advanced Microcontroller Bus Architecture )片上總線)片上總線(zn xin)受到了廣大受到了廣大IP開(kāi)發(fā)開(kāi)發(fā)商和商和S

17、oC系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標(biāo)系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標(biāo)準(zhǔn)片上結(jié)構(gòu)。準(zhǔn)片上結(jié)構(gòu)。AMBA規(guī)范主要包括了規(guī)范主要包括了AHB(Advanced High performance Bus)系統(tǒng)總線系統(tǒng)總線(zn xin)和和APB(Advanced Peripheral Bus)外設(shè)總線外設(shè)總線(zn xin)。二者分別適用于高速與相對(duì)低速設(shè)備的連接。二者分別適用于高速與相對(duì)低速設(shè)備的連接。 第24頁(yè)/共64頁(yè)第二十五頁(yè),共64頁(yè)。I-CodeI-Code總線總線(zn (zn xin)xin)負(fù)責(zé)在負(fù)責(zé)在0 x0000_0000 0 x0000_0000 0 x1FF

18、F_FFFF 0 x1FFF_FFFF之間的取指操作之間的取指操作D-CodeD-Code總線負(fù)責(zé)在總線負(fù)責(zé)在0 x0000_0000 0 x0000_0000 0 x1FFF_FFFF0 x1FFF_FFFF之間的數(shù)據(jù)之間的數(shù)據(jù)(shj)(shj)訪問(wèn)訪問(wèn)操作操作系統(tǒng)總線負(fù)責(zé)在系統(tǒng)總線負(fù)責(zé)在0 x2000_0000 0 x2000_0000 0 xDFFF_FFFF 0 xDFFF_FFFF和和0 xE010_0000 0 xE010_0000 0 xFFFF_FFFF 0 xFFFF_FFFF之間的所之間的所有數(shù)據(jù)傳送(取指和數(shù)據(jù))有數(shù)據(jù)傳送(取指和數(shù)據(jù))外部專用外設(shè)總線外部專用外設(shè)總線負(fù)

19、負(fù)責(zé)責(zé)0 xE004_0000 0 xE004_0000 0 xE00F_FFFF0 xE00F_FFFF之間的私有外設(shè)訪問(wèn)之間的私有外設(shè)訪問(wèn)內(nèi)部專用外設(shè)總線內(nèi)部專用外設(shè)總線負(fù)責(zé)負(fù)責(zé)0 xE000 xE000 0_0000 _0000 0 xE000 xE003 3_FFFF_FFFF之間的私有外設(shè)訪問(wèn)之間的私有外設(shè)訪問(wèn)第25頁(yè)/共64頁(yè)第二十六頁(yè),共64頁(yè)。第26頁(yè)/共64頁(yè)第二十七頁(yè),共64頁(yè)。 存儲(chǔ)器格式(g shi)字節(jié)字節(jié)字節(jié)字節(jié)A+3A+2A+1A存儲(chǔ)器半字半字字 存儲(chǔ)器層次結(jié)構(gòu)RAM靜態(tài)靜態(tài)(jngti)RAM和動(dòng)態(tài)和動(dòng)態(tài)RAMROMPROM、EPORM、EEPROMFLASHN

20、OR FLASH、NAND FLASH第27頁(yè)/共64頁(yè)第二十八頁(yè),共64頁(yè)。 存儲(chǔ)器格式(g shi)小端存儲(chǔ)器系統(tǒng): 在小端格式(g shi)中,數(shù)據(jù)的高字節(jié)存放在高地址中。大端存儲(chǔ)器系統(tǒng): 在大端格式(g shi)中,數(shù)據(jù)的高字節(jié)存放在低地址中。A+3A+2A+1A存儲(chǔ)器 小端存儲(chǔ)模式下,0 x12345678在A地址開(kāi)始的一個(gè)字空間的存儲(chǔ); 1 大端存儲(chǔ)模式下,0 x12345678在A地址開(kāi)始的一個(gè)字空間的存儲(chǔ); 20 x120 x340 x560 x78A+3A+2A+1A存儲(chǔ)器0 x780 x560 x340 x12第28頁(yè)/共64頁(yè)第二十九頁(yè),共64頁(yè)。第29頁(yè)/共64頁(yè)第三十

21、頁(yè),共64頁(yè)。主系統(tǒng)主系統(tǒng)(xtng)由以下部分構(gòu)成:由以下部分構(gòu)成:四個(gè)驅(qū)動(dòng)單元:四個(gè)驅(qū)動(dòng)單元: Cortex-M3內(nèi)核內(nèi)核ICode總線總線(I-bus),DCode總線總線(D-bus),和系統(tǒng),和系統(tǒng)(xtng)總線總線(S-bus) GP-DMA(通用通用DMA)四個(gè)被動(dòng)單元四個(gè)被動(dòng)單元 內(nèi)部?jī)?nèi)部SRAM 內(nèi)部閃存存儲(chǔ)器內(nèi)部閃存存儲(chǔ)器 FSMC AHB到到APB的橋的橋(AHB2APBx),它連接所有的,它連接所有的APB設(shè)備設(shè)備2.5.4 STM32存儲(chǔ)器映射存儲(chǔ)器映射(yngsh)第30頁(yè)/共64頁(yè)第三十一頁(yè),共64頁(yè)。可訪問(wèn)的存儲(chǔ)器空間可訪問(wèn)的存儲(chǔ)器空間被分成被分成(fn ch

22、n) 8 (fn chn) 8 個(gè)主要塊,每個(gè)個(gè)主要塊,每個(gè)塊為塊為512 MB512 MB。其他所有沒(méi)。其他所有沒(méi)有分配給片上存儲(chǔ)器和外有分配給片上存儲(chǔ)器和外設(shè)的存儲(chǔ)器空間都是保留設(shè)的存儲(chǔ)器空間都是保留的地址空間的地址空間( (右圖中的陰右圖中的陰影部分影部分) )片外片外FlashFlash的起始地址:的起始地址:0 x0800 00000 x0800 0000;片內(nèi)片內(nèi)SRAMSRAM的起始地址:的起始地址:0 x2000 0000.0 x2000 0000.2 STM32存儲(chǔ)器映射存儲(chǔ)器映射(yngsh)第31頁(yè)/共64頁(yè)第三十二頁(yè),共64頁(yè)。512K128K按芯片實(shí)際容量填寫按芯片實(shí)

23、際容量填寫(tinxi),通常通常MDK會(huì)自動(dòng)配置完成會(huì)自動(dòng)配置完成第32頁(yè)/共64頁(yè)第三十三頁(yè),共64頁(yè)。第33頁(yè)/共64頁(yè)第三十四頁(yè),共64頁(yè)。第34頁(yè)/共64頁(yè)第三十五頁(yè),共64頁(yè)。第35頁(yè)/共64頁(yè)第三十六頁(yè),共64頁(yè)。第36頁(yè)/共64頁(yè)第三十七頁(yè),共64頁(yè)。第37頁(yè)/共64頁(yè)第三十八頁(yè),共64頁(yè)。第38頁(yè)/共64頁(yè)第三十九頁(yè),共64頁(yè)。40第39頁(yè)/共64頁(yè)第四十頁(yè),共64頁(yè)。第40頁(yè)/共64頁(yè)第四十一頁(yè),共64頁(yè)。lCortex-M3 的流水線分為的流水線分為(fn wi)3級(jí),分別為:級(jí),分別為:取指譯碼執(zhí)行(zhxng)取指譯碼執(zhí)行從存儲(chǔ)器裝載一條指令識(shí)別將要被執(zhí)行的指令處理指

24、令并將結(jié)果寫回寄存器在譯碼時(shí)進(jìn)行分支預(yù)測(cè),遇跳轉(zhuǎn)指令也不會(huì)打斷流水線PC值總是指向正在取指的指令第41頁(yè)/共64頁(yè)第四十二頁(yè),共64頁(yè)。指令1指令2指令3指令4程序存儲(chǔ)器周期1周期2周期3周期4周期5周期6取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行周期周期(zhuq)2周期周期(zhuq)1周期周期3周期周期4處理器執(zhí)行一條指令的三個(gè)階段 在第1個(gè)周期,PC指向指令1,此時(shí)指令1進(jìn)入三級(jí)流水線的取指階段。1第42頁(yè)/共64頁(yè)第四十三頁(yè),共64頁(yè)。指令1指令2指令3指令4程序存儲(chǔ)器周期1周期2周期3周期4周期5周期6取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼

25、 執(zhí)行周期周期(zhuq)2周期周期(zhuq)1周期周期3周期周期4處理器執(zhí)行一條指令的三個(gè)階段 在第2個(gè)周期,PC指向指令2,此時(shí)指令1進(jìn)入三級(jí)流水線的譯碼階段,同時(shí)取出指令2。2第43頁(yè)/共64頁(yè)第四十四頁(yè),共64頁(yè)。指令1指令2指令3指令4程序存儲(chǔ)器周期1周期2周期3周期4周期5周期6取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行周期周期(zhuq)2周期周期(zhuq)1周期周期3周期周期4處理器執(zhí)行一條指令的三個(gè)階段 在第3個(gè)周期,PC指向指令3,此時(shí)指令1進(jìn)入三級(jí)流水線的執(zhí)行階段,指令2進(jìn)入譯碼階段,取出指令3。3第44頁(yè)/共64頁(yè)第四十五頁(yè),共64頁(yè)。指令1指

26、令2指令3指令4程序存儲(chǔ)器周期1周期2周期3周期4周期5周期6取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行周期周期(zhuq)2周期周期(zhuq)1周期周期3周期周期4處理器執(zhí)行一條指令的三個(gè)階段 在第4個(gè)周期,指令1執(zhí)行完成,指令2和指令3流水線推進(jìn)一級(jí),同時(shí)開(kāi)始指令4的取指處理。4第45頁(yè)/共64頁(yè)第四十六頁(yè),共64頁(yè)。第46頁(yè)/共64頁(yè)第四十七頁(yè),共64頁(yè)。中斷:請(qǐng)求信號(hào)來(lái)自于中斷:請(qǐng)求信號(hào)來(lái)自于CM3CM3內(nèi)核外面,來(lái)自片上外設(shè)或外擴(kuò)內(nèi)核外面,來(lái)自片上外設(shè)或外擴(kuò)的外設(shè);的外設(shè);異常:是由于異常:是由于CM3CM3內(nèi)核的活動(dòng)而產(chǎn)生的內(nèi)核的活動(dòng)而產(chǎn)生的 (P52P52

27、)只要正常的程序被暫時(shí)中止,處理器就進(jìn)入異常模式。異常只要正常的程序被暫時(shí)中止,處理器就進(jìn)入異常模式。異常包括復(fù)位、系統(tǒng)故障、外設(shè)中斷等事件。包括復(fù)位、系統(tǒng)故障、外設(shè)中斷等事件。Cortex-M3Cortex-M3處理器中存在多種異常類型處理器中存在多種異常類型(lixng)(lixng),系統(tǒng)復(fù)位、,系統(tǒng)復(fù)位、NMINMI(不可屏蔽中斷)、硬件故障、存儲(chǔ)器管理、總線故障、使(不可屏蔽中斷)、硬件故障、存儲(chǔ)器管理、總線故障、使用故障、用故障、SVCallSVCall(軟件中斷)、調(diào)試監(jiān)控和(軟件中斷)、調(diào)試監(jiān)控和IRQIRQ中斷等。中斷等。IRQIRQ中斷中斷也分為也分為CortexM3Cor

28、texM3內(nèi)自帶的內(nèi)自帶的PendSVPendSV(系統(tǒng)服務(wù)請(qǐng)求)、(系統(tǒng)服務(wù)請(qǐng)求)、SysTick(SysTick(系系統(tǒng)節(jié)拍定時(shí)器統(tǒng)節(jié)拍定時(shí)器) ),和與芯片外設(shè)相關(guān)的外部中斷。,和與芯片外設(shè)相關(guān)的外部中斷。1 異常與中斷異常與中斷(zhngdun)概念概念第47頁(yè)/共64頁(yè)第四十八頁(yè),共64頁(yè)。異常異常(ychng)(ychng)類型表類型表異常類型異常類型位置位置優(yōu)先級(jí)優(yōu)先級(jí)1描述描述-0-復(fù)位時(shí)載入向量表的第一項(xiàng)作為棧頂?shù)刂贰?fù)位時(shí)載入向量表的第一項(xiàng)作為棧頂?shù)刂贰?fù)位復(fù)位1-3(最高)(最高)在上電和熱復(fù)位時(shí)調(diào)用。在執(zhí)行第一條指令時(shí),在上電和熱復(fù)位時(shí)調(diào)用。在執(zhí)行第一條指令時(shí),優(yōu)先級(jí)將

29、降為最低(也就是所謂的激活(中斷)優(yōu)先級(jí)將降為最低(也就是所謂的激活(中斷)的基礎(chǔ)級(jí)別)。這是異步的。的基礎(chǔ)級(jí)別)。這是異步的。不可屏蔽中不可屏蔽中斷(斷(NMI)2-2不可停止,也不會(huì)被復(fù)位之外的任何異常搶占。不可停止,也不會(huì)被復(fù)位之外的任何異常搶占。這是異步的。這是異步的。NMI僅可由軟件通過(guò)僅可由軟件通過(guò)NVIC中斷控制狀態(tài)寄存器中斷控制狀態(tài)寄存器來(lái)產(chǎn)生。來(lái)產(chǎn)生。硬故障硬故障3-1當(dāng)故障由于優(yōu)先級(jí)或者是可配置的故障處理程序當(dāng)故障由于優(yōu)先級(jí)或者是可配置的故障處理程序被禁能的原因而無(wú)法激活時(shí),所有類型的故障都被禁能的原因而無(wú)法激活時(shí),所有類型的故障都會(huì)以硬故障的方式激活。這是同步的。會(huì)以硬故

30、障的方式激活。這是同步的。存儲(chǔ)器管理存儲(chǔ)器管理4可調(diào)整可調(diào)整MPU不匹配,包括訪問(wèn)沖突不匹配,包括訪問(wèn)沖突(access violation)和和不匹配。這是同步的。不匹配。這是同步的。這種異常的優(yōu)先級(jí)可被改變。這種異常的優(yōu)先級(jí)可被改變。總線故障總線故障5可調(diào)整可調(diào)整預(yù)取指故障、存儲(chǔ)器訪問(wèn)故障和其它地址預(yù)取指故障、存儲(chǔ)器訪問(wèn)故障和其它地址/存儲(chǔ)存儲(chǔ)器相關(guān)的故障。當(dāng)為精確的總線故障時(shí)是同步的,器相關(guān)的故障。當(dāng)為精確的總線故障時(shí)是同步的,為不精確的總線故障時(shí)是異步的。為不精確的總線故障時(shí)是異步的。你可以使能或禁能這種故障。你可以使能或禁能這種故障。第48頁(yè)/共64頁(yè)第四十九頁(yè),共64頁(yè)。異常異常(

31、ychng)(ychng)類型表類型表異常類型異常類型位置位置優(yōu)先級(jí)優(yōu)先級(jí)1描述描述使用故障使用故障6可調(diào)整可調(diào)整使用故障,例如執(zhí)行未定義的指令或試圖進(jìn)行使用故障,例如執(zhí)行未定義的指令或試圖進(jìn)行非法的狀態(tài)轉(zhuǎn)變。這是同步的。非法的狀態(tài)轉(zhuǎn)變。這是同步的。-7-10-保留。保留。SVCall11可調(diào)整可調(diào)整使用使用SVC指令的系統(tǒng)服務(wù)調(diào)用。這是同步的。指令的系統(tǒng)服務(wù)調(diào)用。這是同步的。調(diào)試監(jiān)控器調(diào)試監(jiān)控器12可調(diào)整可調(diào)整調(diào)試監(jiān)控器(當(dāng)沒(méi)有暫停調(diào)試監(jiān)控器(當(dāng)沒(méi)有暫停(Halt)時(shí))。這是同時(shí))。這是同步的,但僅在使能時(shí)有效。如果它的優(yōu)先級(jí)比步的,但僅在使能時(shí)有效。如果它的優(yōu)先級(jí)比當(dāng)前激活的處理程序的優(yōu)先

32、級(jí)更低,那么調(diào)試當(dāng)前激活的處理程序的優(yōu)先級(jí)更低,那么調(diào)試監(jiān)控器不能激活。監(jiān)控器不能激活。-13-保留。保留。PendSV14可調(diào)整可調(diào)整系統(tǒng)服務(wù)的可掛起系統(tǒng)服務(wù)的可掛起(pendable)請(qǐng)求。這是異步請(qǐng)求。這是異步的且僅通過(guò)軟件掛起。的且僅通過(guò)軟件掛起。SysTick15可調(diào)整可調(diào)整系統(tǒng)節(jié)拍定時(shí)器已啟動(dòng)系統(tǒng)節(jié)拍定時(shí)器已啟動(dòng)(fired)。這是異步的。這是異步的。外部中斷外部中斷16可調(diào)整可調(diào)整中斷在中斷在ARM Cortex-M3內(nèi)核之外發(fā)出且通過(guò)內(nèi)核之外發(fā)出且通過(guò)NVIC返回(區(qū)分優(yōu)先級(jí))。這些都是異步的。返回(區(qū)分優(yōu)先級(jí))。這些都是異步的。 上表其實(shí)也是一張完整向量表。當(dāng)異常產(chǎn)生后,處理

33、器根據(jù)上表其實(shí)也是一張完整向量表。當(dāng)異常產(chǎn)生后,處理器根據(jù)(gnj)中斷號(hào)中斷號(hào)從在向量表中取出異常處理函數(shù)入口(函數(shù)指針)。從在向量表中取出異常處理函數(shù)入口(函數(shù)指針)。 第49頁(yè)/共64頁(yè)第五十頁(yè),共64頁(yè)。3 3 中斷中斷(zhngdun)(zhngdun)、異常、異常過(guò)程過(guò)程從向量(xingling)表中讀SP更新(gngxn)PC加載流水線更新LR讀向量表硬件壓棧從向量表中讀SP更新PC加載流水線更新LR讀向量表硬件壓棧利用向量表讀出的位置更新利用向量表讀出的位置更新PCPC。直到第一條指。直到第一條指令開(kāi)始執(zhí)行時(shí),才能處理遲來(lái)異常。令開(kāi)始執(zhí)行時(shí),才能處理遲來(lái)異常。 從向量表指向的位

34、置加載指令。它與寄存從向量表指向的位置加載指令。它與寄存器壓棧操作同時(shí)執(zhí)行。器壓棧操作同時(shí)執(zhí)行。 LRLR設(shè)置為設(shè)置為EXC_RETURNEXC_RETURN,以便從異常中退出,以便從異常中退出 。在復(fù)位時(shí),將在復(fù)位時(shí),將SPSP更新為向量表中第更新為向量表中第1 1個(gè)字的值。個(gè)字的值。讀存儲(chǔ)器中的向量表,地址為向量表基址讀存儲(chǔ)器中的向量表,地址為向量表基址+(+(異常號(hào)異常號(hào)* *4)4)。中斷函數(shù)入口。中斷函數(shù)入口。在所選的堆棧上將在所選的堆棧上將 xPSRxPSR、 PCPC、 LR LR 、 R12R12、 R3R3、 R2R2、 R1R1、 R0 R0 壓棧壓棧注意:注意:LRLR的

35、值并非進(jìn)入異常程序的地址的值并非進(jìn)入異常程序的地址注:以上步驟由硬件自動(dòng)完成,僅需12個(gè)時(shí)鐘周期第50頁(yè)/共64頁(yè)第五十一頁(yè),共64頁(yè)。4 4 占先占先(zhn (zhn xin)xin)用戶程序中斷(zhngdun)1 中斷(zhngdun)2優(yōu)先級(jí)3 優(yōu)先級(jí)2 中斷1中斷2壓棧壓棧出棧出棧在異常處理程序中,一個(gè)新的異常比當(dāng)前的異常優(yōu)先級(jí)在異常處理程序中,一個(gè)新的異常比當(dāng)前的異常優(yōu)先級(jí)更高,處理器打斷當(dāng)前的流程,響應(yīng)優(yōu)先級(jí)更高的異常,此更高,處理器打斷當(dāng)前的流程,響應(yīng)優(yōu)先級(jí)更高的異常,此時(shí)產(chǎn)生中斷嵌套。時(shí)產(chǎn)生中斷嵌套。第51頁(yè)/共64頁(yè)第五十二頁(yè),共64頁(yè)。5 5 末尾末尾(mwi)(mwi

36、)連鎖連鎖用戶程序中斷(zhngdun)1 中斷(zhngdun)2優(yōu)先級(jí)3 優(yōu)先級(jí)2 中斷1中斷2如果此時(shí)中斷1 已經(jīng)完成,不出棧也不壓棧,直接跳至中斷2程序壓棧出棧中斷1結(jié)束末尾連鎖是處理器用來(lái)加速中斷響應(yīng)的一種機(jī)制。在結(jié)束末尾連鎖是處理器用來(lái)加速中斷響應(yīng)的一種機(jī)制。在結(jié)束ISRISR時(shí),如果存在一個(gè)掛起中斷,其優(yōu)先級(jí)高于正在返回的時(shí),如果存在一個(gè)掛起中斷,其優(yōu)先級(jí)高于正在返回的ISRISR或或線程,那么就會(huì)跳過(guò)出棧操作,轉(zhuǎn)而將控制權(quán)讓給新的線程,那么就會(huì)跳過(guò)出棧操作,轉(zhuǎn)而將控制權(quán)讓給新的ISRISR。 第52頁(yè)/共64頁(yè)第五十三頁(yè),共64頁(yè)。不用(byng)未尾連鎖的情況用戶程序中斷(zhngdun)1 中斷(zhngdu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論