嵌入式系統 第二章

堆棧指針—R13/sp
這樣,當程序的運行進入異常模式時,可以將需要保護的寄存器放入R13所指向的堆棧,而當程序從異常模式返回時,則從對應的堆棧中恢復。

5.寫出ARM處理器異常中斷的類型
ARM中有5種異常模式,有7種中斷源。這7種中斷源中有些中斷是我們希望發生的,但有些中斷是我們不希望發生的。
我們希望發生的中斷:
軟中斷:屬於svc模式,通過SWI指令便可以產生軟中斷,進入到svc模式。
irq中斷:屬於irq模式,當產生普通的外部中斷時,處理器便進入到IRQ模式。
fiq中斷:屬於fiq模式,當產生高優先級外部中斷時,處理器便進入到FIQ模式。
我們不希望發生的中斷:
復位:屬於svc模式,當系統上電時便會產生復位中斷,系統進入到svc模式。復位中斷不需要中斷返回。
取指中止中斷:屬於abt模式,當預取指發生錯誤時,便產生取指中止中斷,進入到abt模式。
數據中止中斷:屬於abt模式,當訪問數據存儲器時,便產生數據中止中斷,進入到abt模式。
未定義指令中斷:屬於und模式,當執行到一條未定義指令時,便產生未定義指令中斷,系統進入到und模式。

6.發生異常中斷時ARM處理器如何響應?
1.CPSR->spsr_mode
2.設置當前狀態寄存器CPSR的值
設置CPSR的M0-M4的5個位,進入相應工作模式。同時也可以設置F,I,T來禁止允許相應中斷,例:設置I=0禁止IRQ中斷;
設置F=1進入復位模式或者FIQ模式以禁止FIQ中斷。
3.將引起異常指令的下一條地址(斷點地址)保存到新的異常工作模式的LR(R14_mode,程序鏈接寄存器)中,
使得異常處理程序執行完後能正確返回原來的程序處繼續執行。
例如異常中斷髮生,R13_mode存放堆棧指針,R14_mode存放斷點地址。
4.給程序計數器PC強制賦值,轉入表1所示的向量地址,以便執行相應的處理程序。

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