1. 程式人生 > >嵌入式Linux開發——(五)中斷體系結構

嵌入式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)中斷控制暫存器