1. 程式人生 > >S5PV210中斷處理的主要暫存器

S5PV210中斷處理的主要暫存器

《朱老師物聯網大講堂》學習筆記

學習地址:www.zhulaoshi.org

中斷相關的暫存器

VICnINTENABLE

也就是interruptenable,負責相應中斷的使能,

VICnINTENCLEAR

也就是interruptenableclear,負責相應中斷的禁止。

有些CPU上面兩個功能是用一個暫存器實現的,

這樣的話中斷使能要小心,

對它們的操作,要像操作cp15暫存器一樣,

通過讀,改,寫來完成。


VICnINTSELECT

設定為irq或者fiq,一般設定為irq。

irq和fiq有什麼區別?

irq是普通中斷,fiq是快速中斷,

fiq有更快的中斷響應通道,但是隻能有一個被設定為fiq。


CPU如何保證fiq比irq快啊?

1.fiq模式有專用的r8~r12,可以直接使用,不像其它模式,還要儲存暫存器,

2.fiq的中斷處理程式直接在異常向量表中,因為它是異常向量表中最後一個異常。



VICnIRQSTATUS和VICnFIQSTATUS

中斷狀態暫存器,是隻讀的,當發生中斷時,硬體會自動將該位的暫存器置為1,表示中斷髮生,

軟體在處理第二階段第一階段適時,就是靠查詢這個暫存器來得到中斷編號的。


VICnVECTPRIORITY0~VICnVECTPRIORITY31

中斷優先順序設定暫存器,設定多箇中斷同時發生時先處理誰後處理誰得問題,

一般來說高優先順序的中斷,可以打斷低優先順序的中斷,從而巢狀中斷,

不過也可以設定不支援巢狀中斷。


VICnVECTADDR0~VICnVECTADDR31,VICnADDR
一共有32*4+4個暫存器,
210的尋找isr的機制,就是通過這些暫存器來實現的,
每一箇中斷源都有一個VECTADDR暫存器,把中斷ISR地址直接放入這個暫存器介面即可,
VICnADDR這個暫存器是隻讀的,只需要讀的,裡面的內容是由硬體自動設定的,
當發生了相應的中斷時,硬體會自動識別中斷編號,並且會自動找到這個中斷的VECTADDR暫存器,
然後將其讀出複製到VICnADDR中,我們直接讀出使用即可。
通過硬體實現,避免了軟體查詢中斷源和ISR,提高了響應速度。