當異常產生時,arm core會完成以下流程:
1.拷貝cpsr到spsr_mode
2.設定適當的cpsr位:
改變處理器狀態進入arm態
改變處理器模式進入相應的異常模式
設定中斷禁止位禁止相應中斷(如果需要)
3.儲存返回位址到lr_mode
4.設定pc為相應的異常向量
返回時,異常處理需要:(此時,需要程式設計師編寫相應**)
1.從spsr_mode恢復cpsr
2.從lr_mode恢復pc
注意:這些操作只能在arm態執行,但是中斷處理函式中,處理器可以切換到thumb態,但中斷返回時必須是arm態
vector table
0x00 reset
0x04 undefined instruction
0x08 swi
0x0c prefetch abort
0x10 data abort
0x14 (reserved)
0x18 irq
0x1c fiq
當外部中斷產生的時候,pc指標會自動跳轉到異常向量表,執行該位址的跳轉指令
異常處理過程
首先,它會使用new建立乙個異常物件,然後在產生異常的位置終止程式,並且從當前環境中彈出對異常物件的引用,這時。異常處理機制就會接管程式,並開始尋找乙個恰當的地方來繼續執行程式,這個恰當的地方就是異常處理程式。總的來說異常處理機制就是當程式發生異常時,它強制終止程式執行,記錄異常資訊並將這些資訊反饋...
ARM中斷處理過程
以s3c2440arm9核為例 1 s3c2440支援60個中斷源,含子中斷源 2 arm9採用五級流水線方式 3 支援外部中斷和內部中斷 24個外部中斷占用gpf0 gpf7 eint0 eint7 gpg0 gpg15 eint8 eint23 用這些腳做中斷輸入,則必須配置引腳為中斷,並且不要...
ARM的中斷處理過程
1.首先就是知道 arm狀態下的通用暫存器和程式計數器,綠顏色的就是相應模式下的私有暫存器。就是說程式一般執行在系統和使用者模式下,使用的是系統和使用者模式下的通用暫存器,當有異常發生時,比如 fiq,那麼系統將切換到 fiq模式下,相應的就會採用 fiq模式下的暫存器,其中綠顏色的就是只在 fiq...