1. 程式人生 > >1.12.ARM的異常處理方式簡單介紹

1.12.ARM的異常處理方式簡單介紹

什麼是異常?

* 正常工作之外的流程都是異常。

* 異常會打斷正在執行的工作,正常我們希望異常處理完成後繼續回來執行我們原來的工作。

* 中斷也是異常的一種。

異常向量表:

* 所有的CPU都有異常向量表,這是CPU設計時就設定好的,由硬體決定。

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

* 異常向量表是硬體向軟體提供的處理異常的支援。

ARM的異常處理標誌:


* 當異常產生時,ARM core:

 - 拷貝CPSR到SPSR_<mode>

 - 設定適當的CPSR位:

      - 改變處理器狀態到ARM態

      -改變處理器模式到相應的異常模式

      -設定中斷禁止位禁止相應的中斷(如果需要)

- 儲存返回地址到LR_<mode>

- 設定PC為相應的異常向量

* 返回時異常處理需要:

 - 從SPSR_<mode>恢復CPSR

 - 從LR_<mode>恢復PC

 - 注:這些操作只能在ARM態執行

總結:

* 異常處理中有一些是硬體自動做的,有一些是程式設計師需要自己做的。需要搞清楚哪些是需要自己做的,才知道如何寫好程式碼。

* 上面說的是CPU設計時提供的異常向量表,一般稱為一級向量表。有些CPU為了支援多箇中斷,還會提供二級中斷向量表,處理方式和一級向量表類似。