ARM中有5種異常模式,有7種中斷源。這7種中斷源中有些中斷是我們希望發生的,但有些中斷是我們不希望發生的。
我們希望發生的中斷:
軟中斷:屬于svc模式,通過SWI指令便可以產生軟中斷,進入到svc模式。
irq中斷:屬于irq模式,當產生普通的外部中斷時,處理器便進入到IRQ模式。
fiq中斷:屬于fiq模式,當產生高優先級外部中斷時,處理器便進入到FIQ模式。
我們不希望發生的中斷:
復位:屬于svc模式,當系統上電時便會產生復位中斷,系統進入到svc模式。復位中斷不需要中斷返回。
取指中止中斷:屬于abt模式,當預取指發生錯誤時,便產生取指中止中斷,進入到abt模式。
數據中止中斷:屬于abt模式,當訪問數據存儲器時,便產生數據中止中斷,進入到abt模式。
未定義指令中斷:屬于und模式,當執行到一條未定義指令時,便產生未定義指令中斷,系統進入到und模式。
中斷的優先級:
ARM中有6個優先級。各個中斷的優先級順序如下:(1 6 6s 5 2 4 3)
復位: 1
關于各種中斷在中斷返回時還需要給LR減去一個不同的偏移量的問題我覺得沒必要深入研究了,這還要涉及到ARM指令的流水線技術,平時寫中斷代碼都是用C寫的,沒必要知道這個。用到時再去查表即可。
![](http://file.elecfans.com/web1/M00/61/44/o4YBAFuDyCuAHrBCAACFKeuIpPw875.png)
處理器在進入異常和退出異常時所做的工作:
進入異常時:
1、將要返回處的地址保存在對應異常模式的LR中。(復位不需要保存返回地址)2、將cpsr的內容復制到對應異常模式的spsr中。3、強制修改cpsr的內容,進入到相應異常模式以及根據需要修改某些位。4、強制PC從相應的中斷向量地址處進行取址。
注:以上這些步驟都是有cpu自動完成的,也就是當有中斷產生時,硬件就會自動完成上述步驟。
退出異常時:
1、將LR中保存的地址賦給PC。2、將spsr的內容恢復給cpsr。3、將irq中斷禁止位清零。
注:只需要在異常處理程序中寫一句返回指令(如上面的表4.1所示)即可全部實現上述的步驟。
-
ARM
+關注
關注
134文章
9165瀏覽量
369192 -
中斷
+關注
關注
5文章
900瀏覽量
41751
原文標題:ARM中的異常和中斷
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
簡述ARM的2種工作狀態和7種工作模式
ARM的2種工作狀態和7種工作模式。[附帶文檔下載]
在SWI軟中斷指令中LR中放的是異常模式下的返回地址求解
ARM處理器7種工作模式
arm處理器異常模式有哪些
![<b class='flag-5'>arm</b>處理器<b class='flag-5'>異常模式</b>有哪些](https://file1.elecfans.com//web2/M00/A6/DB/wKgZomUMQOeAZmVyAAA9MiRIIZQ555.png)
評論