ARM異常處理方式簡單介紹

什麼是異常

1.正常工作之外的流程都叫異常
2.異常會打斷正在執行的工作,並且一般我們希望異常處理完成後繼續回來執行原來的工作
3.中斷是異常的一種

異常向量表

1.所有的CPU都有異常向量表,這是CPU設計時就設定好的,是硬件決定的。
2.當異常發生時,CPU會自動動作(PC跳轉到異常向量處處理異常,有時伴有一些輔助動作)
3.異常向量表是硬件向軟件提供的處理異常的支持。

ARM的異常處理機制

當異常產生時, ARM core:

拷貝 CPSR 到 SPSR_<mode>
設置適當的 CPSR 位: 
改變處理器狀態進入 ARM 態
改變處理器模式進入相應的異常模式
設置中斷禁止位禁止相應中斷 (如果需要)
保存返回地址到 LR_<mode>
設置 PC 爲相應的異常向量
返回時, 異常處理需要:
從 SPSR_<mode>恢復CPSR
從LR_<mode>恢復PC 

Note:這些操作只能在 ARM 態執行.
這裏寫圖片描述

總結:

異常處理中有一些是硬件自動做的,有一些是程序員需要自己做的。需要搞清楚哪些是需要自己做的,才知道如何寫代碼。
以上說的是CPU設計時提供的異常向量表,一般成爲一級向量表。有些CPU爲了支持多箇中斷,還會提供二級中斷向量表,處理思路類似於這裏說的一級中斷向量表。

發佈了70 篇原創文章 · 獲贊 21 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章