![嵌入式系統(tǒng)講座3-內(nèi)部寄存器講述_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/30/bdb37d3c-c2cb-4d5f-83ac-43589e32724f/bdb37d3c-c2cb-4d5f-83ac-43589e32724f1.gif)
![嵌入式系統(tǒng)講座3-內(nèi)部寄存器講述_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/30/bdb37d3c-c2cb-4d5f-83ac-43589e32724f/bdb37d3c-c2cb-4d5f-83ac-43589e32724f2.gif)
![嵌入式系統(tǒng)講座3-內(nèi)部寄存器講述_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/30/bdb37d3c-c2cb-4d5f-83ac-43589e32724f/bdb37d3c-c2cb-4d5f-83ac-43589e32724f3.gif)
![嵌入式系統(tǒng)講座3-內(nèi)部寄存器講述_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/30/bdb37d3c-c2cb-4d5f-83ac-43589e32724f/bdb37d3c-c2cb-4d5f-83ac-43589e32724f4.gif)
![嵌入式系統(tǒng)講座3-內(nèi)部寄存器講述_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/30/bdb37d3c-c2cb-4d5f-83ac-43589e32724f/bdb37d3c-c2cb-4d5f-83ac-43589e32724f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、ARM的內(nèi)部寄存器 ARM處理器共具有37個32位的寄存器:31個通用 寄存器,6個狀態(tài)寄存器,但并不是所有的寄存器 都總能被訪問到。在某一時刻寄存器能否訪問, 由處理器的當前工作狀態(tài)和操作模式?jīng)Q定。 采用下面的記號來區(qū)分不同的物理寄存器: Rx_mode其中x表明寄存器號,mode為以下幾種 模式之一:usr、fiq、irq、svc、abt、und。 根據(jù)微處理器內(nèi)核的當前工作狀態(tài),可分別訪問 ARM 狀態(tài)寄存器集和Thumb 狀態(tài)寄存器集。 ARM 狀態(tài)寄存器集包含16個可以直接訪問的寄存 器:R0R15。除R15以外,其余的寄存器為通 用寄存器,可用于存放地址或數(shù)據(jù)值。 寄存器 類別 寄
2、存器在匯編 中的名稱 各模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq * R9(SB,v6)R9R9_fiq * R10(SL,v7)R10R10_fiq * R11(FP,v8)R11R11_fiq * R12(IP)R12R12_fiq * R13(SP)R13R13_svc* R13_abt * R13_und * R13_irq *R13_fiq * R14(LR)R14R
3、14_svc * R14_abt * R14_und * R14_irq *R14_fiq * R15(PC)R15 狀態(tài)寄 存器 R16(CPSR)CPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq ARM狀態(tài)各模式下的寄存器 寄存器 類別 寄存器在匯編 中的名稱 各模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB
4、,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq ARM狀態(tài)各模式下的寄存器 SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt CPS
5、R R15 R14_fiqR14_irqR14_undR14_abtR14_svcR14 R13_fiqR13_irqR13_undR13_abtR13_svcR13 R12_fiqR12 R11_fiqR11 R10_fiqR10 R9_fiqR9 R8_fiqR8 R7 R6 R5 R4 R3 R2 R1 R0 所有的37個寄存器,分 成兩大類: 31個通用32位寄存器; 6個狀態(tài)寄存器。 寄存器 類別 寄存器在匯編 中的名稱 各模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R
6、4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 無 C
7、PSR R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0 用戶用戶 無 CPSR R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0 系統(tǒng)系統(tǒng) SPSR_abt CPSR R15 R14_svc R13_svc R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0 管理管理 SPSR_abt CPSR R15 R14_abt R13_abt R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0 中止中止 SPSR_und
8、CPSR R15 R14_und R13_und R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0 未定義未定義 SPSR_irq CPSR R15 R14_irq R13_irq R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0 中斷中斷 SPSR_fiq CPSR R15 R14_fiq R13_fiq R12_fiq R11_fiq R10_fiq R9_fiq R8_fiq R7 R6 R5 R4 R3 R2 R1 R0 快中斷快中斷 ARM狀態(tài)各模式下可以訪問的寄存器 寄存器 類別 寄存器在匯編 中的名稱 各模式下實
9、際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq R15
10、(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 一般的通用寄存器 R13_fiqR13_irqR13_undR13_abtR13_svcR13 R12_fiqR12 R11_fiqR11 R10_fiqR10 R9_fiqR9 R8_fiqR8 R7 R6 R5 R4 R3 R2 R1 R0 在匯編語言中寄存 器R0R13為保存數(shù)據(jù) 或地址值的通用寄存器。 它們是完全通用的寄存 器,不會被體系結(jié)構(gòu)作 為特殊用途,并且可用 于任何使用通用寄存器 的指令。 寄存器 類別 寄存器在匯編 中的名稱 各模
11、式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq
12、R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 一般的通用寄存器 R13_fiqR13_irqR13_undR13_abtR13_svcR13 R12_fiqR12 R11_fiqR11 R10_fiqR10 R9_fiqR9 R8_fiqR8 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 其中R0R7為 未分組的寄存器,也 就是說對于任何處理 器模式,這些寄存器 都對應于相同的32位 物理寄存器。 寄存器 類別 寄存器在匯編 中的名稱 各
13、模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq
14、 R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 一般的通用寄存器 R14_fiqR14_irqR14_undR14_abtR14_svcR14 R13_fiqR13_irqR13_undR13_abtR13_svcR13 R12_fiqR12 R11_fiqR11 R10_fiqR10 R9_fiqR9 R8_fiqR8 寄存器R8R14為分組 寄存器。它們所對應的物理 寄存器取決于當前的處理器 模式,幾乎所有允許使用通 用寄存器的指令都允許使用 分組寄存器 寄存器 類別 寄存器在匯編
15、中的名稱 各模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR
16、14_fiq R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 一般的通用寄存器 R12_fiqR12 R11_fiqR11 R10_fiqR10 R9_fiqR9 R8_fiqR8 寄存器R8R12有兩個分組的 物理寄存器。一個用于除FIQ模式 之外的所有寄存器模式,另一個用 于FIQ模式。這樣在發(fā)生FIQ中斷后, 可以加速FIQ的處理速度。 寄存器 類別 寄存器在匯編 中的名稱 各模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R
17、1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPS
18、R_und SPSR_irq SPSR_fiq 一般的通用寄存器 寄存器R13、R14分別有6個分 組的物理寄存器。一個用于用戶和 系統(tǒng)模式,其余5個分別用于5種異 常模式。 R14_fiqR14_irqR14_undR14_abtR14_svcR14 R13_fiqR13_irqR13_undR13_abtR13_svcR13 寄存器 類別 寄存器在匯編 中的名稱 各模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R
19、7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 堆棧指針寄存器R13(SP) 寄存器R13常作為堆棧指針 (SP)。在A
20、RM指令集當中,沒 有以特殊方式使用R13的指令或其 它功能,只是習慣上都這樣使用。 但是在Thumb指令集中存在使用 R13的指令。 寄存器 類別 寄存器在匯編 中的名稱 各模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13
21、(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 鏈接寄存器R14(LR) R14為鏈接寄存器(LR),在結(jié)構(gòu)上有 兩個特殊功能: 在每種模式下,模式自身的R14版本用于保 存子程序返回地址; 當發(fā)生異常時,將R14對應的異常模式版本 設置為異常返回地址(有些異常有一個小的 固定偏移量)。 寄存器 類別 寄存器在匯編
22、 中的名稱 各模式下實際訪問的寄存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irq
23、R14_fiq R15(PC)R15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 程序計數(shù)器R15(PC) 寄存器R15為程序計數(shù)器(PC),它指 向正在取指的地址。在ARM狀態(tài)下,R15的 bits1:0為0,bits31:2保存PC的值。在 Thumb狀態(tài)下,位0為0,bits31:1用于保 存PC值??梢哉J為它是一個通用寄存器, 但是對于它的使用有許多與指令相關的限制 或特殊情況。如果R15使用的方式超出了這 些限制,那么結(jié)果將是不可預測的。 寄存器 類別 寄存器在匯編 中的名稱 各模式下實際訪問的寄
24、存器 用戶系統(tǒng)管理中止未定義中斷快中斷 通用寄 存器和 程序計 數(shù)器 R0(a1)R0 R1(a2)R1 R2(a3)R2 R3(a4)R3 R4(v1)R4 R5(v2)R5 R6(v3)R6 R7(v4)R7 R8(v5)R8R8_fiq R9(SB,v6)R9R9_fiq R10(SL,v7)R10R10_fiq R11(FP,v8)R11R11_fiq R12(IP)R12R12_fiq R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq R15(PC)R
25、15 狀態(tài)寄 存器 CPSRCPSR SPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 程序狀態(tài)寄存器CPSR 寄存器CPSR為程序狀態(tài)寄存器,在異常 模式中,另外一個寄存器“程序狀態(tài)保存寄 存器(SPSR)”可以被訪問。每種異常都有 自己的SPSR,在進入異常時它保存CPSR的 當前值,異常退出時可通過它恢復CPSR。 Thumb狀態(tài)寄存器集是ARM狀態(tài)寄存器集的一個子 集??梢栽L問的寄存器有:8個通用寄存器R0R7, 程序計數(shù)器PC、堆棧指針寄存器SP、連接寄存器 LR和當前程序狀態(tài)寄存器CPSR。在每一種特權(quán)模 式下,都有對應的分組堆棧指
26、針寄存器SP、連接寄 存器LR和備份的程序狀態(tài)寄存器SPSR。 Thumb狀態(tài)寄存器集與ARM 狀態(tài)寄存器集的對應關 系如下: Thumb狀態(tài)下R0R7寄存器與ARM狀態(tài)下R0R7 寄存器是相同的。 Thumb狀態(tài)下的CPSR和SPSRs與ARM狀態(tài)下的 CPSR 和SPSRs是相同的。 Thumb狀態(tài)下的SP、LR 和PC直接對應ARM 狀態(tài) 寄存器R13、R14和R15。 在Thumb狀態(tài)下,寄存器R8R15不屬于標準寄存 器集的一部分,但在必要的情況下,用戶可以通過 匯編語言程序訪問他們,用作快速的臨時存儲單元 ARM處理器包含一個當前程序狀態(tài)寄存器 (CPSR)和五個備份的程序狀態(tài)寄存
27、器 (SPSRs)。備份的程序狀態(tài)寄存器用來進行異 常處理,這些寄存器的功能包括: 保存ALU當前操作的有關信息 控制中斷的允許和禁止 設置處理器的運行模式 程序狀態(tài)寄存器組成如圖所示: N、Z、C、V均為條件碼標志位。它們的內(nèi)容根據(jù)算 術(shù)或邏輯運算的結(jié)果所改變,并且用來作為一些指令 是否的運行的檢測條件。在ARM狀態(tài)下,絕大多數(shù)的 指令都是有條件執(zhí)行的。在Thumb狀態(tài)下,僅有分支 指令是有條件執(zhí)行的。 低8位(包括I、F、T和M4:0)稱為控制位,當發(fā)生異常時 這些位可被改變。如果處理器運行特權(quán)模式,這些位也可 由程序修改。 中斷禁止位I、F: I=1 禁止IRQ中斷; F=1 禁止FIQ
28、中斷。 T標志位:該位反映處理器的運行狀態(tài)。 對于ARM體系結(jié)構(gòu)v5及以上的版本的T系列處理器,當該 位為1時,程序運行于Thumb狀態(tài),否則運行于ARM狀態(tài)。 對于ARM體系結(jié)構(gòu)v5及以上的版本的非T系列處理器,當 該位為1時,執(zhí)行下一條指令以引起未定義的指令異常; 當該位為0時,表示運行于ARM狀態(tài)。 運行模式位M4:0 決定了處理器的運行模式: 由上表可知,并不是所有的運行模式位的 組合都是有效地,其他的組合結(jié)果會導致 處理器進入一個不可恢復的狀態(tài)。 PSR中的其余位為保留位,當改變PSR中 的條件碼標志位或者控制位時,保留位不 要被改變,在程序中也不要使用保留位來 存儲數(shù)據(jù)。保留位將用
29、于ARM版本的擴展。 異常 當正常的程序執(zhí)行流程被中斷時,稱為產(chǎn)生了異常。 例如程序執(zhí)行轉(zhuǎn)向響應一個外設的中斷請求。在優(yōu) 先處理異常時,處理器的當前狀態(tài)必須保留,以便 在異常處理完成之后程序流程能正常返回。并且, 多個異??赡軙瑫r發(fā)生,這時,它們將按照固定 的順序依次處理。 在異常中斷時,處理器硬件會自動把中斷處下一條 指令的地址保存在鏈接寄存器LR(R14)中,由于各 種異常中斷響應的過程不同,因此,保存在LR中 的地址是不同的。多數(shù)情況下 LR中保存值=(PC 值-4)。這是由ARM7的三級流水線結(jié)構(gòu)造成的。式 中的PC值是發(fā)生異常中斷時正在取指的指令地址, 而不是正在執(zhí)行的指令地址。
30、ARM所支持的7種異常如下: 當進入異常狀態(tài)時,內(nèi)核應該進行以下動作: 1將原來執(zhí)行的程序的下一條指令地址保存到LR中; 2拷貝CPSR到SPSR;(如果是在Thumb狀態(tài)下發(fā)生異常中 斷,CPSR不會自動保存) 3根據(jù)發(fā)生的異常類型改變CPSR的模式位的值; 4令PC的值指向異常處理向量所指的下一條指令。 這時也可能設置中斷禁能標志,以防止不可估計的異常嵌套發(fā)生。 當處理器處于Thumb狀態(tài)時發(fā)生了異常,當PC載入異常矢量所在地址時, 它將自動地切換到ARM狀態(tài),異常處理都是在ARM狀態(tài)下進行的。 當完成異常處理后退出異常時,處理器應該進行如下動作:(復位異常不需 要返回) 1將SPSR拷貝
31、到CPSR; 2清除中斷禁止標志(如果進入異常時置位了的話)。 3. 將保存的地址移出LR,減去相應的偏移量,賦給PC (偏移量的值依據(jù) 于發(fā)生的異常的類型)。 各類異常具體描述 FIQ(快速中斷請求)異常通常用來支持數(shù)據(jù)傳輸和通道操作。在ARM狀態(tài) 下,它具有專用的影子寄存器,用來減少對寄存器存取的需要,從而減少 進入中斷前的“上下文切換”的工作,即保存和恢復寄存器值。 ARM處理器控制邏輯中有一個輸入邏輯nFIQ ,稱為快速中斷請求信號, 這個信號由處理器片內(nèi)外圍控制模塊控制,當有滿足條件的事件發(fā)生時, 外圍控制模塊向ARM處理器發(fā)出FIQ信號,使處理器進入該異常。處理器 的響應過程如下:
32、 1.將中斷時的PC值(執(zhí)行該指令時正在被取指的指令地址)拷貝給LR; 2.將CPSR拷貝給SPSR_fiq; 3.強制進入FIQ異常模式; 4.強制進入ARM狀態(tài); 5.跳轉(zhuǎn)到絕對地址PC=0 x0000001C處執(zhí)行; 6.禁止IRQ和FIQ中斷。 無論FIQ異常是發(fā)生在ARM 或Thumb 狀態(tài),F(xiàn)IQ處理程序在離開中斷處理 時,可以通過執(zhí)行以下的語句完成: SUBS PC, R14_fiq,4 (即PC=R14_fiq4) FIQ 異??梢酝ㄟ^設置CPSR 中的F標志位來禁止(只能在特權(quán)模式下改變 標志位狀態(tài))。當F標志位被清零,也就是FIQ 使能,處理器將在每條指令 的最后檢查FIQ
33、 輸入是否為低電平。 IRQ(中斷請求)是支持普通中斷操作的,ARM處理器的控制邏輯中, 有一個輸入邏輯nIRQ,稱為中斷請求信號。這個信號由處理器的片 內(nèi)外圍控制模塊控制,當有滿足條件的事件發(fā)生時,外圍模塊就向 ARM處理器發(fā)出IRQ信號,使處理器進入異常。IRQ比FIQ的優(yōu)先級 低,并且當系統(tǒng)進入FIQ處理中時,IRQ將被屏蔽。IRQ也可以通過 設置CPSR中的I 標志位來禁止,同樣只能在特權(quán)模式下設置。處理 器對該異常的響應過程如下: 1.將中斷時的PC 值(執(zhí)行指令時正在被取指的指令地址)拷貝給LR; 2.將CPSR拷貝給SPSR_irq; 3.強制進入IRQ異常模式; 4.強制進入A
34、RM狀態(tài); 5.跳轉(zhuǎn)到絕對地址PC=0 x00000018處開始執(zhí)行; 6.禁止IRQ中斷。 無論IRQ 發(fā)生在ARM或者Thumb狀態(tài)下,退出中斷處理時,采用以 下語句完成: SUBS PC,R14_irq,#4 ABORT(中止)異常的產(chǎn)生,意味著對存儲器的訪問失 敗,當前的處理器操作不能夠完成。ARM處理器在存 儲訪問周期內(nèi)檢測該異常是否發(fā)生。 有兩種類型的中止異常: 指令預取指中止:由程序存儲器引起,發(fā)生在預取指 令時; 數(shù)據(jù)中止:由數(shù)據(jù)存儲器引起,發(fā)生在數(shù)據(jù)訪問時。 當指令預取訪問存儲器失敗時,存儲器系統(tǒng)向ARM處 理器發(fā)出存儲器中止(Abort)信號,預取的指令被記為 無效,只有當
35、處理器試圖執(zhí)行無效指令時,指令預取 中止異常才會發(fā)生,如果沒有試圖執(zhí)行,那么不會發(fā) 生該異常。 數(shù)據(jù)中止異常表明數(shù)據(jù)存儲器不能識別ARM處理器的 讀取數(shù)據(jù)請求,這次處理器的讀取數(shù)據(jù)操作無效。 處理器進入預取指中止異常的過程如下: 1.將中斷時的PC值拷貝給LR; 2.將CPSR拷貝給SPSR_abt; 3.強制進入中止異常模式; 4.強制進入ARM狀態(tài); 5.跳轉(zhuǎn)到絕對地址PC=0 x0000000C處執(zhí)行; 6.禁止IRQ中斷。 在完成了對預取指ABORT異常中斷的處理后, 通過以下語句退出中斷處理: SUBS PC,R14_abt,#4 處理器進入數(shù)據(jù)中止異常的操作過程如下: 1.將中斷時
36、的PC值拷貝給LR; 2.將CPSR拷貝給SPSR_abt; 3.強制進入中止異常模式; 4.強制進入到ARM狀態(tài); 5.跳轉(zhuǎn)到絕對地址PC=0 x00000010處執(zhí)行; 6.禁止IRQ中斷。 在完成了對數(shù)據(jù)ABORT異常中斷的處理后,可以通 過以下語句退出中斷處理: SUBS PC,R14_abt,#8 通過執(zhí)行上述語句,就恢復了PC和CPSR,并重試被 中斷的指令,再次讀取數(shù)據(jù)。如果不想再次讀取數(shù)據(jù), 則使用下面的指令返回,執(zhí)行下一條指令: SUB PC,R14_abt,#4 SWI(軟件中斷異常)用來進入管理模式,通常 用于請求執(zhí)行特定的管理功能。處理器響應該 中斷的過程如下: 1.將該指令的下一條指令地址拷貝給LR; 2.把CPSR拷貝給SPSR_svc; 3.強制進入管理模式; 4.強制進入ARM狀態(tài); 5.跳轉(zhuǎn)到絕對地址PC=0 x00000008處執(zhí)行; 6.禁止IRQ中斷。 SWI 的處理程序通過執(zhí)行以下語句,退出異常 處理: MOV PC,R14_svc 通過執(zhí)行該語句,就恢復了PC和CPSR,并返 回到SWI的下一條指令上。 未定義指令異常 當ARM處理器遇到一個它不能執(zhí)行的指令,會 產(chǎn)生該異常。采用這個機制可以通過軟件仿真 器來擴展Thumb或ARM指令集。 處理器響應該異常的操作過程如下: 1.將該不能執(zhí)行指令的下一條指令地址拷貝給LR; 2
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政務(含公共服務)服務平臺項目建設方案X
- 未來教育領域中如何利用移動支付進行教育資源的優(yōu)化配置和共享研究
- 環(huán)境保護教育推廣與實踐
- 國慶節(jié)團隊旅行活動方案
- 環(huán)境藝術(shù)設計中的視覺體驗與審美需求
- 生態(tài)環(huán)保理念在辦公空間的設計實踐
- 環(huán)保材料在環(huán)境藝術(shù)設計中的應用前景
- 生活用紙的創(chuàng)新設計與實踐案例分享
- 《2 顏色填充和橡皮擦工具》(說課稿)-2023-2024學年五年級下冊綜合實踐活動吉美版
- 2023八年級物理上冊 第四章 光現(xiàn)象第5節(jié) 光的色散說課稿 (新版)新人教版
- 工業(yè)企業(yè)電源快速切換裝置設計配置導則
- 某有限公司雙螺紋偏轉(zhuǎn)型防松防盜螺母商業(yè)計劃書
- 年產(chǎn)3萬噸噴氣紡、3萬噸氣流紡生產(chǎn)線項目節(jié)能評估報告
- 外研版九年級英語上冊單元測試題全套帶答案
- 2023年云南省貴金屬新材料控股集團有限公司招聘筆試題庫及答案解析
- GB/T 1094.1-2013電力變壓器第1部分:總則
- 2023年益陽醫(yī)學高等??茖W校單招綜合素質(zhì)考試筆試題庫及答案解析
- 胸外科診療指南和操作規(guī)范
- 電網(wǎng)基本知識
- 民法原理與實務課程教學大綱
- 鋼筋混凝土框架結(jié)構(gòu)工程監(jiān)理的質(zhì)量控制
評論
0/150
提交評論