版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、3,C H A P T E R,ARM7體系結構,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.1 ARM簡介,ARM公司簡介,ARM是Advanced RISC
2、 Machines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設計了大量高性能、廉價、耗能低的RISC (精簡指令集)處理器。 公司的特點是只設計芯片,而不生產。它將技術授權給世界上許多著名的半導體、軟件和OEM廠商,并提供服務。,3.1 ARM簡介,ARM公司簡介,將技術授權給其它芯片廠商,形成各具特色的ARM芯片,3.1 ARM簡介,微處理器是整個系統(tǒng)的核心,通常由3大部分組成:控制單元、算術邏輯單元和寄存器。,3.1 ARM簡介,ARM處理器的應用 當前主要應用于消費類電子領域; 到目前為止,基于ARM技術的微處理器應用約占據(jù)了32位嵌入式微處理器75以上的市場份額 全球80%的GSM
3、/3G手機、99%的CDMA手機以及絕大多數(shù)PDA產品均采用ARM體系的嵌入式處理器, “掌上計算”相關的所有領域皆為其所主宰。 ARM技術正在逐步滲入到我們生活的各個方面。,3.1 ARM簡介,ARM體系結構,ARM處理器為RISC芯片,其簡單的結構使ARM內核非常小,這使得器件的功耗也非常低。它具有經典RISC的特點:,3.1 ARM簡介,ARM體系結構,ARM體系結構的特點:,3.1 ARM簡介,各ARM體系結構版本,ARM體系結構從最初開發(fā)到現(xiàn)在有了很大的改進,并仍在完善和發(fā)展。為了清楚的表達每個ARM應用實例所使用的指令集,ARM公司定義了6種主要的ARM指令集體系結構版本,以版本號
4、V1V6表示。,3.1 ARM簡介,各ARM體系結構版本V1,該版本的ARM體系結構,只有26位的尋址空間,沒有商業(yè)化,其特點為: 基本的數(shù)據(jù)處理指令(不包括乘法); 字節(jié)、字和半字加載/存儲指令; 具有分支指令,包括在子程序調用中使用的分支和鏈接指令; 在操作系統(tǒng)調用中使用的軟件中斷指令。,3.1 ARM簡介,各ARM體系結構版本V2,同樣為26位尋址空間,現(xiàn)在已經廢棄不再使用,它相對V1版本有以下改進: 具有乘法和乘加指令; 支持協(xié)處理器; 快速中斷模式中的兩個以上的分組寄存器; 具有原子性加載/存儲指令SWP和SWPB。,3.1 ARM簡介,各ARM體系結構版本V3,尋址范圍擴展到32位
5、(目前已廢棄),具有獨立的程序: 具有乘法和乘加指令; 支持協(xié)處理器; 快速中斷模式中具有的兩個以上的分組寄存器; 具有原子性加載/存儲指令SWP和SWPB。,3.1 ARM簡介,各ARM體系結構版本V4,不在為了與以前的版本兼容而支持26位體系結構,并明確了哪些指令會引起未定義指令異常發(fā)生,它相對V3版本作了以下的改進: 半字加載/存儲指令; 字節(jié)和半字的加載和符號擴展指令; 具有可以轉換到Thumb狀態(tài)的指令(BX); 增加了用戶模式寄存器的新的特權處理器模式。,3.1 ARM簡介,各ARM體系結構版本V5,在V4版本的基礎上,對現(xiàn)在指令的定義進行了必要的修正,對V4版本的體系結構進行了擴
6、展并并增加了指令,具體如下: 改進了ARM/Thumb狀態(tài)之間的切換效率; E-增強型DSP指令集,包括全部算法操作和16位乘法操作; J-支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能。,3.1 ARM簡介,ARM處理器核簡介,ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列已經是ARM11了,而ARM6核以及更早的系列已經很罕見了。目前應用比較廣泛的系列是:,ARM7,ARM9,ARM9E,ARM10,SecurCore,Xscale,ARM11,Cortex,3.1 ARM簡介,3.1 ARM簡介,3.1 ARM簡介,3.1 ARM簡介,3.1 ARM簡介,3.1 A
7、RM簡介,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.2 ARM7TDMI,簡介,ARM7TDMI基于ARM體系結構V4版本,是目前低端的ARM核。具有廣泛的應用,其最顯著的應用為數(shù)字移動電話。,注意:“ARM核”并不是芯片,ARM核與其它部件如RAM、ROM、片內外設組合在一起才能構成現(xiàn)實的芯片。,3.2 ARM7TDMI,簡介,ARM7TDMI支持32位尋址范圍,并彌補了ARM6不能在低于5V
8、電源電壓下工作的不足。ARM7TDMI的后綴意義為:,3.2 ARM7TDMI,簡介,ARM7TDMI處理器是ARM通用32位微處理器家族的成員之一。它具有優(yōu)異的性能,但功耗卻很低,使用門的數(shù)量也很少。它屬于精簡指令集計算機(RISC),比復雜指令集計算機(CISC)要簡單得多。這樣的簡化實現(xiàn)了:,高的指令吞吐量; 出色的實時中斷響應; 小的、高性價比的處理器宏單元。,3.2 ARM7TDMI,三級流水線,ARM7TDMI處理器使用流水線來增加處理器指令流的速度。這樣可使幾個操作同時進行,并使處理和存儲器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。 ARM7TDMI的流水線分3級
9、,分別為: 取指譯碼執(zhí)行,3.2 ARM7TDMI,存儲器訪問,ARM7TDMI處理器使用了馮諾依曼(Von Neumann)結構,指令和數(shù)據(jù)共用一條32位總線。只有裝載、存儲和交換指令可以對存儲器中的數(shù)據(jù)進行訪問。 數(shù)據(jù)可以是字節(jié)( 8位)、半字( 16位)或者字(32位)。,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.3 系統(tǒng)內部結構圖,ARM7TDMI處理器部件和主要信號路徑的框圖如圖所示。
10、它內部由處理器核、用于邊界掃描的TAP控制器和在線仿真器ICE組成。雙向數(shù)據(jù)總線D31:0被分割成單向輸入和輸出總線,以便于與外部存儲器兼容。,3.3 ARM7TDMI的模塊和內核框圖,ARM7TDMI模塊,地址寄存器,寄存器組 31*32位寄存器 (6個狀態(tài)寄存器),地址增量器,乘法器,桶形移位器,32位ALU,寫數(shù)據(jù)寄存器,指令流水線讀數(shù)據(jù)寄存器 Thumb指令譯碼器,指令譯碼 和 邏輯控制,ADDR31:0,CLK,CLEN,CFGBIGEND,nIRQ,nFIQ,nRESET,ABORT,LOCK,WRITE,SIZE1:0,PROT1:0,TRANS1:0,DBG輸出,DBG輸入,C
11、P控制,CP握手,WDATA31:0,RDATA31:0,掃描調試 控制,A總線,B總線,ALU總線,增量器總線,PC總線,3.3 ARM7TDMI功能信號圖,ARM7TDMI,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.4 體系結構直接支持的數(shù)據(jù)類型,體系結構直接支持的數(shù)據(jù)類型,ARM處理器支持下列數(shù)據(jù)類型: 字節(jié) 8位 半字 16位(必須分配為占用兩個字節(jié)) 字 32位(必須分配為占用4各字節(jié)
12、),體系結構直接支持的數(shù)據(jù)類型,注意: V4版本之后的ARM結構都支持這3種結構(包括V4版本),而以前的版本只支持字節(jié)和字; 當數(shù)據(jù)類型定義為無符號型時,N位數(shù)據(jù)值使用正常的二進制格式表示范圍為02N-1的非負整數(shù); 當數(shù)據(jù)類型定義為有符號型時,N位數(shù)據(jù)值使用2的補碼格式表示范圍為-2N-1+2N-1-1的整數(shù);,3.4 體系結構直接支持的數(shù)據(jù)類型,體系結構直接支持的數(shù)據(jù)類型,注意: 所有數(shù)據(jù)操作,例如ADD,都以字為單位; 裝載和保存指令可以對字節(jié)、半字和字進行操作,當裝載字節(jié)或半字時自動實現(xiàn)零擴展或符號擴展; ARM指令的長度剛好是1個字(分配為占用4個字節(jié)),Thumb指令的長度剛好是
13、半字(占用2個字節(jié))。,3.4 體系結構直接支持的數(shù)據(jù)類型,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.5 處理器狀態(tài),處理器狀態(tài),ARM7TDMI處理器內核使用V4T版本的ARM結構,該結構包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI處理器有兩種操作狀態(tài): ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令; Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的ARM指
14、令。,注意:兩個狀態(tài)之間的切換并不影響處理器模式或寄存器內容。,3.5 處理器狀態(tài),處理器狀態(tài),使用BX指令將ARM7TDMI內核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進行切換(詳見第4章) ,程序如下所示。,;從Arm狀態(tài)切換到Thumb狀態(tài) LDR R0,=Lable+1 BX R0 ;從Thumb狀態(tài)切換到ARM狀態(tài) LDR R0,=Lable BX R0,地址最低位為1,表示切換到Thumb狀態(tài),地址最低位為0,表示切換到ARM狀態(tài),跳轉地址標號,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.
15、處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.6 處理器模式,處理器7種模式,3.6 處理器模式,特權模式,除用戶模式外,其它模式均為特權模式。ARM內部寄存器和一些片內外設在硬件設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。,3.6 處理器模式,異常模式,這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現(xiàn)時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。,3.6
16、處理器模式,用戶和系統(tǒng)模式,這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權任務可以使用這個模式訪問一些受控的資源。,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.7 內部寄存器,簡介,在ARM7TDMI處理器內部有37個用戶可見的寄存器。 在不同的工作模式和處理器狀態(tài)下,程
17、序員可以訪問的寄存器也不盡相同。,ARM狀態(tài)各模式下的寄存器,ARM狀態(tài)各模式下的寄存器,所有的37個寄存器,分成兩大類: 31個通用32位寄存器; 6個狀態(tài)寄存器。,ARM狀態(tài)各模式下可以訪問的寄存器,一般的通用寄存器,在匯編語言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結構作為特殊用途,并且可用于任何使用通用寄存器的指令。,一般的通用寄存器,其中R0R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應于相同的32位物理寄存器。,一般的通用寄存器,寄存器R8R14為分組寄存器。它們所對應的物理寄存器取決于當前的處理器模式,幾乎所有允許使
18、用通用寄存器的指令都允許使用分組寄存器,一般的通用寄存器,寄存器R8R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。,一般的通用寄存器,寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。,堆棧指針寄存器R13(SP),寄存器R13常作為堆棧指針(SP)。在ARM指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。,鏈接寄存器R14(LR),R14為鏈接寄存器(LR),在結構上有兩
19、個特殊功能: 在每種模式下,模式自身的R14版本用于保存子程序返回地址; 當發(fā)生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。,3.7 內部寄存器,R14(LR)寄存器與子程序調用,MOV PC,LR,R14(地址A),1.程序A執(zhí)行過程中調用程序B;,操作流程,2.程序跳轉至標號Lable,執(zhí)行程序B。同時硬件將“BL Lable”指令的下一條指令所在地址存入R14(LR);,3.程序B執(zhí)行最后,將R14寄存器的內容放入PC,返回程序A;,3.7 內部寄存器,R14寄存器與異常發(fā)生,異常發(fā)生時,程序要跳轉至異常服務程序,對返回地址的處理與子程序調用類似
20、,都是由硬件完成的。區(qū)別在于有些異常有一個小常量的偏移。,3.7 內部寄存器,R14寄存器注意要點,當發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。 例如:如果用戶在用戶模式下執(zhí)行程序時發(fā)生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。,3.7 內部寄存器,R14寄存器注意要點,a,return,地址A,1.執(zhí)行用戶模式下的程序;,2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;,
21、3. IRQ服務程序A執(zhí)行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;,未被破壞,R14_irq,3.7 內部寄存器,R14寄存器注意要點,a,地址A,1.執(zhí)行用戶模式下的程序;,2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;,3. IRQ服務程序A執(zhí)行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;,未被破壞,a,return,地址B,4. 如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷;,5. 硬件將返回地址保存在R14_irq寄存器中,原來保存的返回
22、地址將被覆蓋,造成錯誤;,R14_irq 被破壞,6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時,發(fā)生錯誤,將不能正確返回;,return,return,解決辦法是確保R14的對應版本在發(fā)生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。,程序計數(shù)器R15(PC),寄存器R15為程序計數(shù)器(PC),它指向正在取指的地址??梢哉J為它是一個通用寄存器,但是對于它的使用有許多與指令相關的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結果將是不可預測的。,程序狀態(tài)寄存器CPSR,寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序
23、狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。詳細描述參看3.8小節(jié)。,3.7 內部寄存器,ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關系,Thumb狀態(tài)寄存器與ARM狀態(tài)寄存器有如下的關系: Thumb狀態(tài)R0R7與ARM狀態(tài)R0R7相同; Thumb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同; Thumb狀態(tài)SP映射到ARM狀態(tài)R13; Thumb狀態(tài)LR映射到ARM狀態(tài)R14; Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)。,Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射,低寄存器,高
24、寄存器,3.7 內部寄存器,在Thumb狀態(tài)中訪問高寄存器,在Thumb狀態(tài)中,高寄存器(R8R15)不是標準寄存器集的一部分。匯編語言程序員對它們的訪問受到限制。 可以使用MOV、CMP和ADD指令對高寄存器操作,詳見第4章。,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.8 程序狀態(tài)寄存器,簡介,ARM7TDMI內核包含1個CPSR和5個供異常處理程序使用的SPSR。CPSR反映了當前處理器的狀
25、態(tài),其包含: 4個條件代碼標志(負(N)、零(Z)、進位(C)和溢出(V) ); 2個中斷禁止位,分別控制一種類型的中斷; 5個對當前處理器模式進行編碼的位; 1個用于指示當前執(zhí)行指令(ARM還是Thumb)的位。,3.8 程序狀態(tài)寄存器,簡介,條件代碼標志,保留,控制位,溢出標志 oVerflow,進位或借位擴展 Carry,零 Zero,負或小于 Negative,IRQ禁止 Interrupt,FIQ禁止 Fast,狀態(tài)位 Thumb,模式位 Mode,N,Z,C,V,I,T,F,CPSR寄存器的格式,3.8 程序狀態(tài)寄存器,簡介,每個異常模式還帶有一個程序狀態(tài)保存寄存器 (SPSR),
26、它用于保存在異常發(fā)生之前的CPSR。CPSR和SPSR通過特殊指令(MRS、MSR)進行訪問。,3.8 程序狀態(tài)寄存器,條件代碼標志,大多數(shù)“數(shù)值處理指令”可以選擇是否影響條件代碼標志位。通常如果指令帶S后綴,則該指令的執(zhí)行會影響條件代碼標志;但有一些指令的執(zhí)行總是會影響條件代碼標志。 N、 Z、 C和V位都是條件代碼標志。算術操作、邏輯操作、MSR或者LDM指令可以對這些位進行設置。所有ARM指令都可按條件來執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行。,3.8 程序狀態(tài)寄存器,條件代碼標志,各標志位的含義如下: N 運算結果的最高位反映在該標志位。對于有符號二進制補碼,結果為負數(shù)時N=
27、1,結果為正數(shù)或零時N=0; Z 指令結果為0時Z=1(通常表示比較結果“相等”),否則Z=0;,3.8 程序狀態(tài)寄存器,條件代碼標志,各標志位的含義如下: C 當進行加法運算(包括CMN指令),并且最高位產生進位時C=1,否則C=0。當進行減法運算(包括CMP 指令),并且最高位產生借位時C=0,否則C=1。對于結合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變; V當進行加法/減法運算,并且發(fā)生有符號溢出時V=1,否則V=0,其它指令V通常不變。,3.8 程序狀態(tài)寄存器,控制位,CPSR的最低8位為控制位,當發(fā)生異常時,這些位被硬件改變。當處理器處于一個特權模式時
28、,可用軟件操作這些位。 它們分別是: 中斷禁止位; T位; 模式位。,3.8 程序狀態(tài)寄存器,控制位,中斷禁止位包括I和F位: 當I位置位時,IRQ中斷被禁止; 當F位置位時,F(xiàn)IQ中斷被禁止。 T位反映了正在操作的狀態(tài): 當T位為1時,處理器正在Thumb狀態(tài)下運行; 當T位清零時,處理器正在ARM狀態(tài)下運行。,3.8 程序狀態(tài)寄存器,控制位,模式位包括M4、M3、M2、M1和M0,這些位決定處理器的操作模式。 注意:不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯誤的設置,將引起一個無法恢復的錯誤。,CPSR模式位設置表,3.8 程序狀態(tài)寄存器,保留位,CPSR中的保留位被保留將
29、來使用。為了提高程序的可移植性,當改變CPSR標志和控制位時,請不要改變這些保留位。另外,請確保程序的運行不受保留位的值影響,因為將來的處理器可能會將這些位設置為1或者0。,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.9 異常,簡介,只要正常的程序流被暫時中止,處理器就進入異常模式。例如響應一個來自外設的中斷。在處理異常之前,ARM7TDMI內核保存當前的處理器狀態(tài)(CPSR-SPSR),這樣當處
30、理程序結束時可以恢復執(zhí)行原來的程序(SPSR-CPSR)。 如果同時發(fā)生兩個或更多異常,那么將按照固定的順序來處理異常。,異常入口/出口匯總,注意:“MOVS PC,R14_svc”是指在管理模式執(zhí)行MOVS PC,R14指令?!癕OVS PC,R14_und”、“SUBS PC,R14_abt,#4”等指令也是類似的。,3.9 異常,異常的入口和出口處理,如果異常處理程序已經把返回地址拷貝到堆棧,那么可以使用一條多寄存器傳送指令來恢復用戶寄存器并實現(xiàn)返回。,SUB LR,LR,#4;計算返回地址 STMFD SP!,R0-R3,LR;保存使用到的寄存器 . . . LDMFD SP!,R0-
31、R3,PC;中斷返回,中斷處理代碼的開始部分和退出部分,如果異常處理程序已經把返回地址拷貝到堆棧,那么可以使用一條多寄存器傳送指令來恢復用戶寄存器并實現(xiàn)返回。,中斷處理代碼的開始部分和退出部分,3.9 異常,異常的入口和出口處理,SUB LR,LR,#4;計算返回地址 STMFD SP!,R0-R3,LR;保存使用到的寄存器 . . . LDMFD SP!,R0-R3,PC;中斷返回,注意:中斷返回指令的寄存器列表(其中必須包括PC)后的“”符號表示這是一條特殊形式的指令。這條指令在從存儲器中裝載PC的同時(PC是最后恢復的),CPSR也得到恢復。這里使用的堆棧指針SP(R13)是屬于異常模式
32、的寄存器,每個異常模式有自己的堆棧指針。這個堆棧指針應必須在系統(tǒng)啟動時初始化。,3.9 異常,進入異常,在異常發(fā)生后,ARM7TDMI內核會作以下工作:,1.在適當?shù)腖R中保存下一條指令的地址,當異常入口來自: ARM狀態(tài),那么ARM7TDMI將當前指令地址加4或加8復制(取決于異常的類型)到LR中; 為Thumb狀態(tài),那么ARM7TDMI將當前指令地址加2、4或加8 (取決于異常的類型)復制到LR中;異常處理器程序不必確定狀態(tài)。,3.9 異常,進入異常,在異常發(fā)生后,ARM7TDMI內核會作以下工作:,2.將CPSR復制到適當?shù)腟PSR中; 3. 將CPSR模式位強制設置為與異常類型相對應的
33、值; 4.強制PC從相關的異常向量處取指。,ARM7TDMI內核在中斷異常時置位中斷禁止標志,這樣可以防止不受控制的異常嵌套。 注:異??偸窃贏RM狀態(tài)中進行處理。當處理器處于Thumb狀態(tài)時發(fā)生了異常,在異常向量地址裝入PC時,會自動切換到ARM狀態(tài)。,3.9 異常,進入異常,當異常結束時,異常處理程序必須: 1.將LR( R14 )中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同; 2.將SPSR的值復制回CPSR; 3.清零在入口置位的中斷禁止標志。 注:恢復CPSR的動作會將T、F和I位自動恢復為異常發(fā)生前的值。,3.9 異常,退出異常,圖示進入異常過程,1. 程序在系統(tǒng)模式
34、下運行用戶程序,假定當前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;,2. 用戶程序運行時發(fā)生IRQ中斷,硬件完成以下動作:,置位I位(禁止IRQ中斷) 清零T位(進入ARM狀態(tài)) 設置MOD位,切換處理器模式至IRQ模式,將下一條指令的地址存入IRQ模式的LR寄存器,將CPSR寄存器內容存入IRQ模式的SPSR寄存器,將跳轉地址存入PC,實現(xiàn)跳轉,BackAddr,JumpAddr,“?”表示對該位不關心,在異常處理結束后,異常處理程序完成以下動作:,圖示退出異常過程,將SPSR寄存器的值復制回CPSR寄存器;,將LR寄存的值減去一個常量后復制到PC寄存器,跳轉到被中斷的用戶程序。,Back
35、Addr,JumpAddr,return,BackAddr-4,“?”表示對該位不關心,快速中斷請求(FIQ)適用于對一個突發(fā)事件的快速響應,這得益于在ARM狀態(tài)中,快中斷模式有8個專用的寄存器可用來滿足寄存器保護的需要(這可以加速上下文切換的速度)。 不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會通過執(zhí)行下面的指令從中斷返回: SUBS PC,R14_fiq,#4 在一個特權模式中,可以通過置位CPSR中的F位來禁止FIQ異常。,3.9 異常,快速中斷請求,中斷請求(IRQ)異常是一個由nIRQ輸入端的低電平所產生的正常中斷(在具體的芯片中,nIRQ由片內外設拉低,nIR
36、Q是內核的一個信號,對用戶不可見)。IRQ的優(yōu)先級低于FIQ。對于FIQ序列它是被屏蔽的。任何時候在一個特權模式下,都可通過置位CPSR中的I 位來禁止IRQ。 不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),IRQ處理程序都會通過執(zhí)行下面的指令從中斷返回: SUBS PC,R14_irq,#4,3.9 異常,中斷請求,中止發(fā)生在對存儲器的訪問不能完成時,中止包含兩種類型: 預取中止 發(fā)生在指令預取過程中 數(shù)據(jù)中止 發(fā)生在對數(shù)據(jù)訪問時,3.9 異常,中止,當發(fā)生預取中止時,ARM7TDMI內核將預取的指令標記為無效,但在指令到達流水線的執(zhí)行階段時才進入異常。如果指令在流水線中因為發(fā)生分支而沒有
37、被執(zhí)行,中止將不會發(fā)生。 在處理中止的原因之后,不管處于哪種處理器操作狀態(tài),處理程序都會執(zhí)行下面的指令恢復PC和CPSR并重試被中止的指令: SUBS PC,R14_abt,#4,3.9 異常,中止預取指中止,當發(fā)生數(shù)據(jù)中止后,根據(jù)產生數(shù)據(jù)中止的指令類型作出不同的處理:,3.9 異常,中止數(shù)據(jù)中止,數(shù)據(jù)轉移指令(LDR、STR)回寫到被修改的基址寄存器。中止處理程序必須注意這一點; 交換指令(SWP)中止好像沒有被執(zhí)行過一樣(中止必須發(fā)生在SWP指令進行讀訪問時) ;,在修復產生中止的原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執(zhí)行下面的返回指令,重試被中止的指令 : SUBS PC,R
38、14_abt,#8,3.9 異常,中止數(shù)據(jù)中止,使用軟件中斷(SWI)指令可以進入管理模式,通常用于請求一個特定的管理函數(shù)。SWI處理程序通過執(zhí)行下面的指令返回: MOVS PC,R14_svc 這個動作恢復了PC并返回到SWI之后的指令。SWI處理程序讀取操作碼以提取SWI函數(shù)編號。,3.9 異常,軟件中斷指令,當ARM7TDMI處理器遇到一條自己和系統(tǒng)內任何協(xié)處理器都無法處理的指令時,ARM7TDMI內核執(zhí)行未定義指令陷阱。軟件可使用這一機制通過模擬未定義的協(xié)處理器指令來擴展ARM指令集。 注:ARM7TDMI處理器完全遵循ARM結構v4T,可以捕獲所有分類未被定義的指令位格式。,3.9
39、異常,未定義的指令,在模擬處理了失敗的指令后,陷阱程序執(zhí)行下面的指令: MOVS PC,R14_svc 這個動作恢復了PC并返回到未定義指令之后的指令。,3.9 異常,未定義的指令,當多個異常同時發(fā)生時,一個固定的優(yōu)先級系統(tǒng)決定它們被處理的順序:,3.9 異常,異常優(yōu)先級,第3章 目錄,1.簡介 2.ARM7TDMI 3.ARM7TDMI的模塊和內部框圖 4.體系結構直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.復位 11.存儲器及存儲器映射I/O,3.10 復位,復位,當nRESET信號被拉低時(一般外部復位引腳電平的變化和芯片的其它復位源會改變這個內核信號),ARM7TDMI處理器放棄正在執(zhí)行的指令。 在復位后,除PC和CPSR之外的所有寄存器的值都不確
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年1月湖南高速物流發(fā)展有限公司招聘考試備考試題及答案解析
- 2026新疆石河子市華僑國有資本運營有限公司招聘1人考試備考試題及答案解析
- 2026中國國際貨運航空股份有限公司機務維修工程師崗位校園招聘5人筆試備考試題及答案解析
- 2026年運動營養(yǎng)補劑應用培訓
- 2026云南紅河州個舊市醫(yī)療衛(wèi)生共同體賈沙分院招聘編外工作人員1人筆試模擬試題及答案解析
- 2026年大連工業(yè)大學公開招聘高層次人才54人筆試參考題庫及答案解析
- 2026年可再生資源流動的動力學特性
- 2026年樁基設計中的地質勘察實例
- 2026年卡通世界中的新年狂歡
- 2026年地質災害的多維度影響評價方法
- 七年級語文文言文閱讀理解專項訓練
- 中藥熱熨敷技術及操作流程圖
- 臨床提高吸入劑使用正確率品管圈成果匯報
- 娛樂場所安全管理規(guī)定與措施
- 電影項目可行性分析報告(模板參考范文)
- 老年協(xié)會會員管理制度
- LLJ-4A車輪第四種檢查器
- 大索道竣工結算決算復審報告審核報告模板
- 2025年南充市中考理科綜合試卷真題(含標準答案)
- 人衛(wèi)基礎護理學第七版試題及答案
- 煙草物流寄遞管理制度
評論
0/150
提交評論