本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第1頁
本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第2頁
本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第3頁
本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第4頁
本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、嵌入式系統(tǒng)結(jié)構(gòu)與操作系統(tǒng),胡威 武漢科技大學計算機學院,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲系統(tǒng),2,2.1 ARM簡介,ARM公司簡介,ARM是Advanced RISC Machines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設計了大量高性能、廉價、耗能低的RISC (精簡指令集)處理器。 公司的特點是只設計芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導體、軟件和OEM廠商,并提供

2、服務。,3,2.1 ARM簡介,ARM公司簡介,將技術(shù)授權(quán)給其它芯片廠商,形成各具特色的ARM芯片,4,2.1 ARM簡介,RISC結(jié)構(gòu)特性,RISC是精簡指令集計算機的縮寫,其目標是設計出在高時鐘頻率下單周期執(zhí)行,簡單而有效的指令集。ARM內(nèi)核采用RISC體系結(jié)構(gòu),因此具有RISC的結(jié)構(gòu)特點:,5,2.1 ARM簡介,為了使ARM能夠更好地滿足嵌入式應用的需要,ARM體系結(jié)構(gòu)還有以下特點:,每條數(shù)據(jù)處理指令可同時包含算術(shù)邏輯單元(ALU)的運算和移位處理,實現(xiàn)ALU和移位器的最大利用; 使用地址自增和自減的尋址方式優(yōu)化程序循環(huán); 裝載/保存指令對數(shù)據(jù)的批量傳輸,實現(xiàn)最大數(shù)據(jù)吞吐量; 大多數(shù)指

3、令的條件執(zhí)行,實現(xiàn)最快速的代碼執(zhí)行。,ARM體系結(jié)構(gòu),6,2.1 ARM簡介,常用ARM處理器系列,ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已經(jīng)很罕見了。當前應用比較多的ARM處理器核系列有:,7,2.1 ARM簡介,ARM Cortex系列簡介,基于ARMv7版本的ARM Cortex系列產(chǎn)品由A、R、M三個系列組成,具體分類延續(xù)了一直以來ARM面向具體應用設計CPU的思路。,ARM Cortex,8,2.1 ARM簡介,CortexTM-M3處理器簡介,該處理器是首款基于ARMv7-M架構(gòu)的處理器,采用了純Thumb2指令的執(zhí)行方式

4、,具有極高的運算能力和中斷相應能力。 Cortex-M3主要應用于汽車車身系統(tǒng),工業(yè)控制系統(tǒng)和無線網(wǎng)絡等對功耗和成本敏感的嵌入式應用領域。目前最便宜的基于該內(nèi)核的ARM單片機售價為1美元。,9,2.1 ARM簡介,CortexTM-R4處理器簡介,該處理器是首款基于ARMv7架構(gòu)的高級嵌入式處理器,其主要目標為產(chǎn)量巨大的高級嵌入式應用系統(tǒng),如硬盤,噴墨式打印機,以及汽車安全系統(tǒng)等等。,CortexTM-R4F處理器簡介,該處理器在CortexTM-R4處理器的基礎上加入了代碼錯誤校正(ECC)技術(shù),浮點運算單元(FPU)以及DMA綜合配置的能力,增強了處理器在存儲器保護單元、緩存、緊密耦合存儲

5、器、DMA訪問以及調(diào)試方面的能力。,10,2.1 ARM簡介,CortexTM-A8處理器簡介,該處理器是ARM公司所開發(fā)的基于ARMv7架構(gòu)的首款應用級處理器,其特色是運用了可增加代碼密度和加強性能的技術(shù)、可支持多媒體以及信號處理能力的NEONTM技術(shù)、以及能夠支持Java和其他文字代碼語言的提前和即時編譯的JazelleRTC技術(shù)。 眾多先進的技術(shù)使其適用于家電以及電子行業(yè)等各種高端的應用領域。,11,2.1 ARM簡介,ARM7系列簡介,該系列包括ARM7TDMI、ARM7TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴充了Jazelle的ARM7EJ-S。該系列處理器提供Th

6、umb 16位壓縮指令集和EmbededICE軟件調(diào)試方式,適用于更大規(guī)模的SoC設計中。 ARM7系列廣泛應用于多媒體和嵌入式設備,包括Internet設備、網(wǎng)絡和調(diào)制解調(diào)器設備,以及移動電話、PDA等無線設備。,12,2.1 ARM簡介,該系列包括ARM9TDMI、ARM920T和帶有高速緩存處理器宏單元的ARM940T。除了兼容ARM7系列,而且能夠更加靈活的設計。 ARM9系列主要應用于引擎管理、儀器儀表、安全系統(tǒng)和機頂盒等領域。,ARM9系列簡介,13,2.1 ARM簡介,該系列為含有DSP指令集的綜合處理器,包括ARM926EJ-S、帶有高速緩存處理器宏單元的ARM966E-S/A

7、RM946E-S。其內(nèi)核在ARM7處理器內(nèi)核的基礎上使用了Jazelle增強技術(shù),該技術(shù)支持一種新的Java操作狀態(tài),允許在硬件中執(zhí)行Java字節(jié)碼。 ARM9E系列主要應用于下一代無線設備、數(shù)字消費品、成像設備、工業(yè)控制、存儲設備和網(wǎng)絡設備等領域。,ARM9E系列簡介,14,2.1 ARM簡介,ARM10E系列簡介,該系列包括ARM1020E和ARM1020E處理器核,其核心在于使用向量浮點(VFP)單元VFP10提供高性能的浮點解決方案,從而極大提高了處理器的整型和浮點運算性能。 可以用于視頻游戲機和高性能打印機等場合。,15,2.1 ARM簡介,Xscale簡介,Intel Xscale

8、微控制器則提供全性能、高性價比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號處理(DSP)指令。 主要應用于手提式通訊和消費電子類設備。,16,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲系統(tǒng),17,2.2 ARM7TDMI,簡介,ARM7TDMI是基于ARM體系結(jié)構(gòu)V4版本的低端ARM核。 其彌補了ARM6很難在低于5V電壓下穩(wěn)定工作的不足,還增加了后綴所對應的功能:,注意:“ARM核”并

9、非芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設組合在一起才能構(gòu)成現(xiàn)實的芯片。,18,2.2 ARM7TDMI,存儲器的字與半字,從偶數(shù)地址開始的連續(xù)2個字節(jié)構(gòu)成一個半字; 以能被4整除的地址開始的連續(xù)4個字節(jié)構(gòu)成一個字; ARM指令的長度剛好是一個字,Thumb指令的長度剛好是一個半字。,19,2.2 ARM7TDMI,如果一個數(shù)據(jù)是從偶地址開始的連續(xù)存儲,那么它就是半字對齊,否則就是非半字對齊; 如果一個數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲,那么它就是字對齊,否則就是非字對齊。,存儲器的存儲方式,20,2.2 ARM7TDMI,三級流水線,ARM處理器使用流水線來增加處理器指令流的速

10、度,這樣可使幾個操作同時進行,并使處理和存儲器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。,ARM7TDMI的流水線分3級,分別為:,取指,譯碼,執(zhí)行,正常操作過程中,在執(zhí)行一條指令的同時對下一條(第二條)指令進行譯碼,并將第三條指令從存儲器中取出。,在ARM狀態(tài)下,流水線上各指令的地址為:,在Thumb狀態(tài)下,流水線上各指令的地址為:,21,2.2 ARM7TDMI,三級流水線結(jié)構(gòu)的指令執(zhí)行順序,周期2,周期1,周期3,周期4,處理器執(zhí)行一條指令的三個階段,22,執(zhí)行ADD PC,PC,#4指令后,PC的值為多少?,2.2 ARM7TDMI,思考題,ADD,程序計數(shù)器R15(P

11、C)總是指向“正在取指”的指令,而不是指向“正在執(zhí)行”的指令或“正在譯碼”的指令。,一般來說,人們習慣性約定將“正在執(zhí)行”的指令作為參考點,則: PC值當前程序執(zhí)行位置8 注:ARM狀態(tài)時,每條指令為4字節(jié)長。,PC指向0 x4000地址,取指ADD指令。,PC指向0 x4004地址,譯碼ADD指令。,PC指向0 x4008地址,執(zhí)行ADD指令,所以指令執(zhí)行的結(jié)果為: PC=PC+40 x400840 x400C。,23,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄

12、存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲系統(tǒng),24,2.3 ARM模塊框圖,CPU協(xié)處理接口信號,EmbedICE硬件仿真功能模塊,片上調(diào)試系統(tǒng),讀寫總線,25,2.3 ARM內(nèi)核框圖,26,2.3 ARM功能框圖,總線控制,27,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲系統(tǒng),28,2.4 ARM處理器狀態(tài),處理器狀態(tài),ARM7TDMI處理器內(nèi)核包含2套指令系統(tǒng),分別為ARM

13、指令集和Thumb指令,并且各自對應1種處理器的狀態(tài): ARM狀態(tài):32位,處理器執(zhí)行字方式的ARM指令,處理器默認為此狀態(tài); Thumb狀態(tài):16位,處理器執(zhí)行半字方式的Thumb指令。,注意:兩個狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。,29,2.4 ARM處理器狀態(tài),狀態(tài)切換的一個例子,使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進行切換。,ARM指令集,Thumb 指令集,CODE32 LDRR0, =Lable+1 BX R0 CODE16 Lable MOV R1, #12,CODE16 LDR R0, =Lable BX R0 CODE32 Lable

14、MOV R1, #10,執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令,程序代碼,指令集關(guān)系,從ARM狀態(tài)切換到Thumb狀態(tài)的程序代碼如下:,從Thumb狀態(tài)切換到ARM狀態(tài)的程序代碼如下:,執(zhí)行完BX指令,處理器切換到ARM狀態(tài),開始執(zhí)行ARM指令,30,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲系統(tǒng),31,2.5 ARM處理器模式,簡介,ARM體系結(jié)構(gòu)支持7種處理器模式,分別

15、為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM7TDMI完全支持這七種模式。,32,除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設在硬件設計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。,處理器模式,這兩種模式都不能由異常進入,想要進入必須修改CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務可以使用這個模式訪

16、問一些受控的資源。,這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現(xiàn)時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。,何時進入異常模式,具體規(guī)定如下: 處理器復位之后進入管理模式,操作系統(tǒng)內(nèi)核通常處于管理模式; 當處理器訪問存儲器失敗時,進入數(shù)據(jù)訪問中止模式; 當處理器遇到?jīng)]有定義或不支持的指令時,進入未定義模式; 中斷模式與快速中斷模式分別對ARM處理器2種不同級別的中斷作出響應。,33,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理

17、器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲系統(tǒng),34,2.6 ARM內(nèi)部寄存器,簡介,在ARM處理器內(nèi)部共有37個用戶可訪問的寄存器,分別為31個通用32位寄存器和6個狀態(tài)寄存器。,ARM處理器共有7種不同的處理器模式,每種模式都有一組相應的寄存器組,最多可以18個活動的寄存器。,35,ARM狀態(tài)各模式下的寄存器,所有的37個寄存器,分成兩大類: 31個通用32位寄存器; 6個狀態(tài)寄存器。,36,ARM狀態(tài)各模式下可以訪問的寄存器,37,未分組的通用寄存器,寄存器R0R7為未分組的通用寄存器,它們在任何處理

18、器模式都對應于相同的32位物理寄存器。,第一類分組的通用寄存器,寄存器R8R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。,在發(fā)生FIQ中斷后,處理器不必為保護寄存器而浪費時間,從而加速了FIQ的處理速度。,第二類分組的通用寄存器,寄存器R13、R14分別有6個分組的物理寄存器。1個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。,寄存器R13通常作為堆棧指針(SP),用于保存待使用的寄存器的內(nèi)容。,寄存器R14稱為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能: 當使用BL指令調(diào)用子程序時,返回地址將自動存入R14中; 當發(fā)生異常時,將R14對應的

19、異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。,程序計數(shù)器,寄存器R15稱為程序計數(shù)器(PC),它指向正在“取指”的指令。,狀態(tài)寄存器,寄存器CPSR為當前程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。,38,2.6 ARM內(nèi)部寄存器,在Thumb狀態(tài)各模式下實際訪問的寄存器,Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為: 8個通用寄存器R0R7; 程序計數(shù)器(PC); 堆棧指針(SP); 鏈接寄存器(LR);

20、 當前程序狀態(tài)寄存器( CPSR)。,39,在Thumb狀態(tài)各模式下的寄存器,未分組的通用寄存器,第二類分組的通用寄存器,在匯編語言中寄存器R0R7為通用寄存器,對于任何處理器模式,它們中的每一個都對應于相同的32為物理寄存器。,堆棧指針SP對應ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。 注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。,鏈接寄存器LR對應ARM狀態(tài)寄存器R14。 注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。,40,ARM狀態(tài),Thumb寄存器在ARM狀態(tài)寄存器上的映射,Thumb狀態(tài),在Thumb狀態(tài)中,高端寄存器的訪

21、問是受到限制的,只有MOV、CMP和ADD指令可以對其訪問,可以用于數(shù)據(jù)的快速暫存。,41,狀態(tài)切換過程,程序在正常運行的過程中,復位事件產(chǎn)生,導致系統(tǒng)復位。,42,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲系統(tǒng),43,2.7 當前程序狀態(tài)寄存器,簡介,ARM內(nèi)核包含1個CPSR和5個僅供異常處理程序使用的SPSR。CPSR反映當前處理器的狀態(tài),其包含: 4個條件代碼標志(負標志N、零標志Z、進位標志

22、C和溢出標志V ); 2個中斷禁止位(IRQ禁止與FIQ禁止); 5個對當前處理器模式進行編碼的位(M4:0); 1個用于指示當前執(zhí)行指令的位(ARM指令還是Thumb指令)。,44,2.7 當前程序狀態(tài)寄存器,程序狀態(tài)寄存器的格式,條件代碼標志,保留,控制位,溢出標志,進位或借位擴展,零,負或小于,IRQ禁止,FIQ禁止,狀態(tài)位,模式位,N,Z,C,V,I,T,F,45,2.7 當前程序狀態(tài)寄存器,條件代碼標志,各標志位的含義如下: 負標志N:運算結(jié)果的第31位值,記錄標志設置操作的結(jié)果; 零標志Z:如果標志設置的操作為0,則置位; 進位標志C:記錄無符號加法溢出,減法無借位,循環(huán)移位; 溢

23、出標志V:記錄標志設置操作的有符號溢出。,46,警告:絕對不要強制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進入一個無法預測的狀態(tài)。,2.7 當前程序狀態(tài)寄存器,控制位,1、中斷禁止控制位I和F;,2、處理器狀態(tài)位T;,3、處理器模式位M0M4。,注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M4:0中,處理器將進入一個無法恢復的模式。,47,2.7 當前程序狀態(tài)寄存器,保留位,CPSR中的保留位被保留將來使用。當改變CPSR標志和控制位時,請確認沒有改變這些保留位。 另外,請確保您的程序不依賴于包含特定值的保留位,因為將來的處理器可能會將這些位設置為1或者0。

24、,48,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲系統(tǒng),49,2.8 ARM體系的異常,異常簡介,只要正常的程序流被暫時中止,處理器就進入異常模式。例如在用戶模式下執(zhí)行程序時,當外設向處理器內(nèi)核發(fā)出中斷請求導致內(nèi)核從用戶模式切換到異常中斷模式。 如果同時發(fā)生兩個或更多異常,那么將按照固定的順序來處理異常。,50,異常入口/出口匯總,下表所示為異常返回地址值以及退出異常處理程序所推薦使用的指令。,注意:

25、“MOVS PC,R14_svc”是指在管理模式執(zhí)行MOVS PC,R14 指令,同樣類似的指令還有“MOVS PC,R14_und”、“SUBS PC,R14_abt,#4”等。,51,2.8 ARM體系的異常,異常向量表,注:表中的I和F表示不對該位有影響,保留原來的值。,52,2.8 ARM體系的異常,異常優(yōu)先級,當多個異常同時發(fā)生時,一個固定的優(yōu)先級決定系統(tǒng)處理它們的順序。,優(yōu) 先 級 由 高 到 低,53,2.8 ARM體系的異常,異常的進入,當一個異常導致模式切換時,內(nèi)核自動的做如下處理:,將異常處理程序的返回地址(加固定的偏移量)保存到相應異常模式下的LR;,將CPSR的當前值保

26、存到相應異常模式下的SPSR;,設置CPSR為相應的異常模式;,設置PC為相應異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應的異常中斷處理程序執(zhí)行;,BackAddr,JumpAddr,UserMode,ExceptionMode,程序代碼正常運行在用戶模式下。,54,2.8 ARM體系的異常,異常的進入,當一個異常導致模式切換時,內(nèi)核自動的做如下處理:,將異常處理程序的返回地址(加固定的偏移量)保存到相應異常模式下的LR;,將CPSR的當前值保存到相應異常模式下的SPSR;,設置CPSR為相應的異常模式;,設置PC為相應異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應的異常中斷處理程序執(zhí)行;,55,2

27、.8 ARM體系的異常,異常的退出,當異常處理程序結(jié)束時,異常處理程序必須:,返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC;,將SPSR的值復制回CPSR;,BackAddr,CurrentAddr,UserMode,ExceptionMode,BackAddrOff,56,2.8 ARM體系的異常,異常的退出,當異常處理程序結(jié)束時,異常處理程序必須:,返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC;,將SPSR的值復制回CPSR;,清零在入口處置位的中斷禁止標志。,57,2.8 ARM體系的異常,復位異常,當nRE

28、SET信號被拉低時,ARM處理器放棄正在執(zhí)行的指令,等到nRESET信號再次變高時,處理器執(zhí)行一下操作:,強制M4:0變?yōu)閎10011,系統(tǒng)進入管理模式; 將CPSR中的標志位I和F置位,IRQ與FIQ中斷被禁止; 將CPSR中的標志位T清零,處理器處于ARM狀態(tài); 強制PC從地址0 x00開始對下一條指令進行取指; 返回到ARM狀態(tài)并恢復執(zhí)行。,58,2.8 ARM體系的異常,中斷請求異常,只有當CPSR中相應的中斷屏蔽位被清除時,才可能發(fā)生IRQ異常,中斷請求(IRQ)異常由一個nIRQ輸入端的低電平所產(chǎn)生的正常中斷。 注:中斷異常產(chǎn)生時,中斷異常模式下的R14保存的是PC的值。,指令1的

29、執(zhí)行不會中斷;,異常程序結(jié)束時返回到指令2;,進入中斷服務程序時,指令3地址被保存在R14中。,59,程序運行在用戶模式下,當一個IRQ異常中斷發(fā)生時,內(nèi)核切換到“中斷模式”,并自動的做如下處理:,2.8 ARM體系的異常,進入IRQ異常模式,USR模式,IRQ模式,60,2.8 ARM體系的異常,退出IRQ異常模式,IRQ模式,USR模式,中斷服務程序執(zhí)行完畢后,系統(tǒng)將通過以下幾步軟件操作返回用戶模式:,61,2.8 ARM體系的異常,快速中斷請求異常,快速中斷請求(FIQ)適用于對一個突發(fā)事件的快速響應,這得益于在ARM狀態(tài)中,快中斷模式有8個專用的寄存器可用來滿足寄存器保護的需要(這可以

30、加速上下文切換的速度)。 不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會通過執(zhí)行下面的指令從中斷返回: SUBS PC,R14_fiq,#4 在一個特權(quán)模式中,可以通過置位CPSR中的F位來禁止FIQ異常。,62,FIQ中斷的例子,“?”表示該位無關(guān),BackAddr,JumpAddr,1,0,BackAddr-4,Thumb不是一個完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行Thumb指令而不支持ARM指令集。 因此,Thumb指令只需要支持通用功能,必要時可以借助于完善的ARM指令集,比如,所有異常自動進入ARM狀態(tài)。,在系統(tǒng)模式下運行用戶程序,當前處理器處于Thumb狀態(tài),執(zhí)

31、行Thumb指令代碼,同時處理器還允許IRQ和FIQ中斷。,指令1的在執(zhí)行過程產(chǎn)生了FIQ中斷。 注:完成指令1的執(zhí)行后才響應中斷。,FIQ中斷相應過程中,硬件自動執(zhí)行如下動作:,將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器,置為F和I(禁止FIQ和IRQ中斷); 清零T位(進入ARM狀態(tài)); 設置MOD位,切換處理器模式至FIQ模式。,將下一條的地址存入FIQ模式的LR寄存器,即指令3的地址。,將跳轉(zhuǎn)地址存入PC,即FIQ中斷服務函數(shù)的入口地址,實現(xiàn)跳轉(zhuǎn)。,FIQ中斷服務程序在ARM狀態(tài)下執(zhí)行現(xiàn)場保護等操作。,FIQ中斷服務程序使用BX指令,將處理器從ARM狀態(tài)切換到Thumb狀態(tài),通

32、過置位CPSR的T位實現(xiàn)。,FIQ中斷服務程序開始執(zhí)行Thumb指令。,FIQ中斷服務程序使用BX指令,將處理器從Thumb狀態(tài)切換到ARM狀態(tài),通過清除CPSR的T位實現(xiàn)。,FIQ中斷服務程序在ARM狀態(tài)下執(zhí)行恢復中斷現(xiàn)場等操作。,FIQ中斷異常處理結(jié)束后,異常處理程序完成以下動作:,將SPSR寄存器的值復制回CPSR寄存器;,將LR寄存的值減去一個常量(FIQ異常為4)后復制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序(指令2的地址)。,63,2.8 ARM體系的異常,未定義的指令異常,未定義指令異常是內(nèi)部異常中斷,當ARM處理器遇到一條自己和系統(tǒng)內(nèi)部任何協(xié)處理器都無法執(zhí)行的指令時,就會發(fā)生未定義

33、指令異常,從而進入中斷處理程序,同時軟件可使用這一機制通過仿真未定義的協(xié)處理器指令來擴展ARM指令集。 在仿真失敗的指令后,捕獲處理器執(zhí)行下面的指令: MOVS PC,R14_und,64,2.8 ARM體系的異常,中止異常,中止表示當前對存儲器的訪問不能被完成,這是由外部ABORT輸入信號引起的異常中斷。中止類型有2種類型:,預取指中止:由程序存儲器引起的中止異常; 數(shù)據(jù)中止:由數(shù)據(jù)存儲器引起的中止異常。,65,2.8 ARM體系的異常,預取指中止,當發(fā)生預取指中止時,ARM內(nèi)核將預取的指令標記為無效,但在指令到達流水線的執(zhí)行階段時才進入異常。如果指令在流水線中因為發(fā)生分支而沒有被執(zhí)行,中止

34、將不會發(fā)生。 在處理中止的原因之后,不管處于哪種處理器操作狀態(tài),處理程序都會執(zhí)行下面的指令恢復PC和CPSR并重試被中止的指令: SUBS PC,R14_abt,#4,66,2.8 ARM體系的異常,數(shù)據(jù)中止,當發(fā)生數(shù)據(jù)中止異常時,異常會在“導致異常的指令”執(zhí)行后的下一條指令發(fā)生。在這種情況下,理想的狀況是進入數(shù)據(jù)中止異常的ISR,然后在內(nèi)存中挑選出問題,再重新執(zhí)行導致異常的指令。 在修復產(chǎn)生中止的原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執(zhí)行下面的返回指令 : SUBS PC,R14_abt,#8,67,2.8 ARM體系的異常,軟件中斷異常,軟件中斷異常(SWI)用于進入管理模式,通常用于請求一個特定的管理函數(shù)。SWI處理程序通過執(zhí)行下面的指令返回: MOVS

溫馨提示

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

最新文檔

評論

0/150

提交評論