嵌入式Linux開發——(五)中斷體系結構
一、中斷體系結構
1)ARM體系CPU的7種工作模式
①:7種工作模式:
A、使用者模式(usr):ARM處理器正常的程式執行狀態
B、快速中斷模式(fiq):用於高速資料傳輸或通道處理
C、中斷模式(irq):用於通用的中斷處理
D、管理模式(svc):作業系統使用的保護模式
E、資料訪問終止模式(abt):當資料或指令預取終止時進入改模式,可用於 虛擬儲存及儲存保護
F、系統模式(sys):執行具有特權的作業系統任務
G、未定義指令中斷模式(und):當未定義的指令執行時進入該模式,可用於 支援硬體協處理器的軟體模擬
②可通過軟體來進行模式切換,或者發生各類中斷、異常時CPU自動進入相應模式,除使用者模式外,其他6種模式都屬於特權模式,大多程式運行於使用者模式,進入特權模式是為了處理中斷、異常,或訪問被保護的系統資源
③ARM體系的CPU有兩種工作狀態:
A、ARM狀態:處理器執行32位字對齊ARM指令
B、Thumb狀態:執行16位半字對齊的Thumb指令
④ARM920T有31個通用的32位暫存器和6個程式狀態暫存器
⑤
R0---R15可直接訪問,除R15外都是通用暫存器,即可以儲存資料也可以儲存地址
R13---R15稍有特殊:
R13:棧指標暫存器,儲存棧指標
R14:程式連線暫存器
R15:程式計數器 (pc)
⑥CPSR(Current Program Status Regsiter)當前程式狀態暫存器
其中一些位被用於標識各種狀態、處於什麼模式
各個位的意義:
⑦SPSR(Saved Process Status Registers)程式狀態保留暫存器
當切換工作模式時,SPSR中儲存前一個工作模式的CPSR值,當返回前一個工作模式時,可以將SPSR的值恢復到CPSR 中。
⑧切換進入異常模式時,CPU自動完成如下事情:
A、在異常模式下的連線暫存器R14中儲存前一個工作模式的下一條即將執行的指令的地址,對於ARM狀態,這個值是當前 PC值加4或加8.
B、將CPSR複製到異常模式下的SPSR。
C、將CPU的工作模式位設為這個異常對應的工作模式。
D、令PC值等於這個異常模式在異常向量表中的地址,即跳轉去執行異常向量表中的相應指令
⑨相反地,從異常工作模式退出回到之前工作模式時,完成如下:
A、連線暫存器中儲存了前一工作模式的一個指令地址,將它減去一個適當的值後賦給PC暫存器。
B、將SPSR的值複製回CPSR。
2)S3C2440中斷控制器
①如何知道各類外設發生了不預期事件:
A、查詢法:反覆查詢裝置狀態,並作出反應。佔用CPU資源過多,不適合多工系統。
B、中斷法:CPU通過檢視相應暫存器,執行相應操作。
②中斷處理過程:
A、中斷控制器彙集各類外設發出的中斷訊號,然後告訴CPU
B、CPU儲存當前程式執行環境,呼叫中斷服務程式(ISR:Interrupt Service Routine)來處理中斷。
C、在ISR識別是哪種中斷,並進行處理
D、清除中斷
E、恢復被中斷程式的執行環境,繼續執行
③中斷體系硬體框圖:
④中斷處理框圖:
3)中斷控制暫存器