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

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

評論