嵌入式開發筆記(四) ARM異常處理 原

ARM 363瀏覽

什么是異常?

1正常工作之外的流程都叫異常

2異常會打斷正在執行的工作,并且一般我們希望異常處理完成后繼續回來執行原  來的工作

3中斷是異常的一種

 

知識點回顧:

ARM 有7個基本工作模式:

User : 非特權模式,大部分任務執行在這種模式

-----------------------------------------------------------------------------------------------

FIQ :   當一個高優先級(fast) 中斷產生時將會進入這種模式

IRQ :   當一個低優先級(normal) 中斷產生時將會進入這種模式

Supervisor :當復位或軟中斷指令執行時將會進入這種模式

Abort : 當存取異常時將會進入這種模式

Undef : 當執行未定義指令時會進入這種模式

------------------------------------------------------------------------------------------------

System : 使用和User模式相同寄存器集的特權模式

小結:

(1)FIQ,IRQ,Supervisor,Abort ,Undef 五種都為異常模式。

    (2)同步  同步時鐘  ,異步 靠中斷(一種特殊的中斷)來實現

 

1.異常向量表

1.1特點:

(1)所有的CPU都有異常向量表,這是CPU設計時就設定好的,是硬件決定 的。

(2)當異常發生時,CPU會自動動作(PC跳轉到異常向量處處理異常,有時 伴有一些輔助動作)

(3)異常向量表是硬件向軟件提供的處理異常的支持。

 

    1.2ARM的異常處理機制

 

 

1.21向量表:

 (1)復位異常                          0X00

 (2)未定義異常 0X04

 (3)軟中斷 0X08

 (4)Prefetch Abort (預取指異常) 0X0C

 (5)Data abort數據訪問異常 0X10

 (6)Reserved 0X14

 7IRQ (外部中斷模式) 0X18

  (8) FRQ (快速中斷模式) 0X1C

 

筆記:內存地址規劃

1.22處理機制

1.23當異常產生時:ARM core:

 (1)拷貝 CPSR 到 SPSR_<mode>

 (2)設置適當的 CPSR 位:

          1.改變處理器狀態進入 ARM 態

          2.改變處理器模式進入相應的異常模式

          3.設置中斷禁止位禁止相應中斷 (如果需要)

 (3)保存返回地址到 LR_<mode>

 (4)設置 PC 為相應的異常向量

1.24返回時, 異常處理需要:

         (1)從 SPSR_<mode>恢復CPSR

         (2)從LR_<mode>恢復PC

         (3)Note:這些操作只能在 ARM 態執行.

 

        1.25知識小結:

 

1.改變處理器狀態進入 ARM 態

 

            T Bit

            僅ARM  xT架構支持

            T = 0: 處理器處于 ARM 狀態

            T = 1: 處理器處于 Th

 

    2..改變處理器模式進入相應的異常模式

            Mode位:

                處理器模式位

3.設置中斷禁止位禁止相應中斷 (如果需要)

    中斷禁止位:

            I  = 1: 禁止  IRQ.

            F = 1: 禁止  FIQ.

總結:

(1)異常處理中有一些是硬件自動做的,有一些是程序員需要自己做的。需要搞清楚 哪些是需要自己做的,才知道如何寫代碼。

(2)以上說的是CPU設計時提供的異常向量表,一般成為一級向量表。有些CPU為 了支持多個中斷,還會提供二級中斷向量表,處理思路類似于這里說的一級中斷 向量表。

 

 

 

七星彩走势图2元网官网