ARM中斷異常及其處理器模式
1.復(fù)位(包括上電)
本文引用地址:http://m.butianyuan.cn/article/201611/316918.htm2.FIQ(快速中斷)
3.IRQ(一般中斷)
4.SWI(軟件中斷)
5.預(yù)取址中止
6.數(shù)據(jù)中止
7.未定義指令異常
ARM核發(fā)生以上異常時(shí),便會(huì)進(jìn)入相應(yīng)的處理器模式進(jìn)行相應(yīng)的異常處理。
其中ARM的處理器模式有以下7種:
1.管理模式(SVC):Supervisor也是處理器上電默認(rèn)的運(yùn)行模式,可由復(fù)位(包括上電)和SWI(軟件中斷)觸發(fā)進(jìn)入
2.快速中斷模式(FIQ):由快速中斷異常異常觸發(fā)進(jìn)入進(jìn)行相應(yīng)的中斷處理子程序
3.一般中斷模式(IRQ):由一般中斷異常觸發(fā)進(jìn)入進(jìn)行相應(yīng)的中斷處理
4.中止模式(abort):由預(yù)取址中止異常和數(shù)據(jù)中止異常觸發(fā)進(jìn)入的
5.未定義模式:由未定義指令異常觸發(fā)進(jìn)入
6.用戶(hù)模式(user):用戶(hù)軟件修改CPSR進(jìn)入
7.系統(tǒng)模式(system):用戶(hù)軟件修改CPSR進(jìn)入
由此可見(jiàn),處理器模式是相應(yīng)的處理器異常的處理模式,但是用戶(hù)模式和系統(tǒng)模式并不能由異常觸發(fā)進(jìn)入,而必須是由軟件修改CPSR的值進(jìn)入的。此外系統(tǒng)模式和用戶(hù)模式共用15個(gè)寄存器和CPSR??偨Y(jié)處理器異常和處理器模式的關(guān)系為:7 TO 5。
當(dāng)一個(gè)異常觸發(fā)觸發(fā)模式的改變時(shí),CPU內(nèi)核自動(dòng)(硬件)做如下動(dòng)作:
1.把CPSR保存到相應(yīng)的異常模式下的SPSR(除了系統(tǒng)模式和用戶(hù)模式?jīng)]有自己的SPSR)
2.把PC保存到相應(yīng)的異常模式下的LR(各個(gè)模式都有自己的LR寄存器,系統(tǒng)模式和用戶(hù)模式共用)
3.設(shè)置CPSR為相應(yīng)的異常模式。
4.設(shè)置PC為相應(yīng)的異常處理程序的入口地址。
值得注意的是所有的處理器模式都可以通過(guò)修改CPSR來(lái)進(jìn)入(即使沒(méi)有發(fā)生處理器異常),但是僅僅是進(jìn)入模式而已,并沒(méi)有發(fā)生上面的三個(gè)步驟即:把CPSR保存到SPSR中,把PC保存到LR中,設(shè)置PC為相應(yīng)的異常處理向量,這些都沒(méi)有發(fā)生,而僅僅是處于該模式而已。這可以用來(lái)在系統(tǒng)初始化時(shí)給各個(gè)模式的堆棧指針(R13)進(jìn)行初始化.
評(píng)論