1.12.ARM的異常處理方式簡單介紹
阿新 • • 發佈:2019-01-10
什麼是異常?
* 正常工作之外的流程都是異常。
* 異常會打斷正在執行的工作,正常我們希望異常處理完成後繼續回來執行我們原來的工作。
* 中斷也是異常的一種。
異常向量表:
* 所有的CPU都有異常向量表,這是CPU設計時就設定好的,由硬體決定。
* 當異常發生時,CPU會自動動作(PC會跳轉到異常向量處處理異常,有時會伴有一些輔助動作)。
* 異常向量表是硬體向軟體提供的處理異常的支援。
ARM的異常處理標誌:
* 當異常產生時,ARM core:
- 拷貝CPSR到SPSR_<mode>
- 設定適當的CPSR位:
- 改變處理器狀態到ARM態
-改變處理器模式到相應的異常模式
-設定中斷禁止位禁止相應的中斷(如果需要)
- 儲存返回地址到LR_<mode>
- 設定PC為相應的異常向量
* 返回時異常處理需要:
- 從SPSR_<mode>恢復CPSR
- 從LR_<mode>恢復PC
- 注:這些操作只能在ARM態執行
總結:
* 異常處理中有一些是硬體自動做的,有一些是程式設計師需要自己做的。需要搞清楚哪些是需要自己做的,才知道如何寫好程式碼。
* 上面說的是CPU設計時提供的異常向量表,一般稱為一級向量表。有些CPU為了支援多箇中斷,還會提供二級中斷向量表,處理方式和一級向量表類似。