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

什麼是異常?程序員

1正常工做以外的流程都叫異常架構

2異常會打斷正在執行的工做,而且通常咱們但願異常處理完成後繼續回來執行原  來的工做異步

3中斷是異常的一種fetch

 

知識點回顧:設計

ARM 有7個基本工做模式:orm

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

-----------------------------------------------------------------------------------------------同步

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

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

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爲 了支持多箇中斷,還會提供二級中斷向量表,處理思路相似於這裏說的一級中斷 向量表。

相關文章
相關標籤/搜索