ARM中有5種異常模式,有7種中斷源。這7種中斷源中有些中斷是我們希望發(fā)生的,但有些中斷是我們不希望發(fā)生的。
我們希望發(fā)生的中斷:
軟中斷:屬于svc模式,通過(guò)SWI指令便可以產(chǎn)生軟中斷,進(jìn)入到svc模式。
irq中斷:屬于irq模式,當(dāng)產(chǎn)生普通的外部中斷時(shí),處理器便進(jìn)入到IRQ模式。
fiq中斷:屬于fiq模式,當(dāng)產(chǎn)生高優(yōu)先級(jí)外部中斷時(shí),處理器便進(jìn)入到FIQ模式。
我們不希望發(fā)生的中斷:
復(fù)位:屬于svc模式,當(dāng)系統(tǒng)上電時(shí)便會(huì)產(chǎn)生復(fù)位中斷,系統(tǒng)進(jìn)入到svc模式。復(fù)位中斷不需要中斷返回。
取指中止中斷:屬于abt模式,當(dāng)預(yù)取指發(fā)生錯(cuò)誤時(shí),便產(chǎn)生取指中止中斷,進(jìn)入到abt模式。
數(shù)據(jù)中止中斷:屬于abt模式,當(dāng)訪問(wèn)數(shù)據(jù)存儲(chǔ)器時(shí),便產(chǎn)生數(shù)據(jù)中止中斷,進(jìn)入到abt模式。
未定義指令中斷:屬于und模式,當(dāng)執(zhí)行到一條未定義指令時(shí),便產(chǎn)生未定義指令中斷,系統(tǒng)進(jìn)入到und模式。
中斷的優(yōu)先級(jí):
ARM中有6個(gè)優(yōu)先級(jí)。各個(gè)中斷的優(yōu)先級(jí)順序如下:(1 6 6s 5 2 4 3)
復(fù)位: 1
關(guān)于各種中斷在中斷返回時(shí)還需要給LR減去一個(gè)不同的偏移量的問(wèn)題我覺(jué)得沒(méi)必要深入研究了,這還要涉及到ARM指令的流水線技術(shù),平時(shí)寫(xiě)中斷代碼都是用C寫(xiě)的,沒(méi)必要知道這個(gè)。用到時(shí)再去查表即可。

處理器在進(jìn)入異常和退出異常時(shí)所做的工作:
進(jìn)入異常時(shí):
1、將要返回處的地址保存在對(duì)應(yīng)異常模式的LR中。(復(fù)位不需要保存返回地址)2、將cpsr的內(nèi)容復(fù)制到對(duì)應(yīng)異常模式的spsr中。3、強(qiáng)制修改cpsr的內(nèi)容,進(jìn)入到相應(yīng)異常模式以及根據(jù)需要修改某些位。4、強(qiáng)制PC從相應(yīng)的中斷向量地址處進(jìn)行取址。
注:以上這些步驟都是有cpu自動(dòng)完成的,也就是當(dāng)有中斷產(chǎn)生時(shí),硬件就會(huì)自動(dòng)完成上述步驟。
退出異常時(shí):
1、將LR中保存的地址賦給PC。2、將spsr的內(nèi)容恢復(fù)給cpsr。3、將irq中斷禁止位清零。
注:只需要在異常處理程序中寫(xiě)一句返回指令(如上面的表4.1所示)即可全部實(shí)現(xiàn)上述的步驟。
-
ARM
+關(guān)注
關(guān)注
134文章
9207瀏覽量
371071 -
中斷
+關(guān)注
關(guān)注
5文章
900瀏覽量
41990
原文標(biāo)題:ARM中的異常和中斷
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ARM異常處理流程
淺談ARM體系CPU的7種工作模式
簡(jiǎn)述ARM的2種工作狀態(tài)和7種工作模式
ARM的2種工作狀態(tài)和7種工作模式。[附帶文檔下載]
教你一種ARM處理異常中斷的方法
在SWI軟中斷指令中LR中放的是異常模式下的返回地址求解
ARM處理器7種工作模式
arm處理器異常模式有哪些

評(píng)論