天天看點

S5PV210中斷處理的主要寄存器

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

學習位址:www.zhulaoshi.org

中斷相關的寄存器

VICnINTENABLE

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

VICnINTENCLEAR

也就是interrupt enable clear,負責相應中斷的禁止。

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

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

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

通過讀,改,寫來完成。

S5PV210中斷處理的主要寄存器

VICnINTSELECT

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

irq和fiq有什麼差別?

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

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

S5PV210中斷處理的主要寄存器

CPU如何保證fiq比irq快啊?

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

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

S5PV210中斷處理的主要寄存器
S5PV210中斷處理的主要寄存器

VICnIRQSTATUS和VICnFIQSTATUS

中斷狀态寄存器,是隻讀的,當發生中斷時,硬體會自動将該位的寄存器置為1,表示中斷發生,

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

S5PV210中斷處理的主要寄存器

VICnVECTPRIORITY0~VICnVECTPRIORITY31

中斷優先級設定寄存器,設定多個中斷同時發生時先處理誰後處理誰得問題,

一般來說高優先級的中斷,可以打斷低優先級的中斷,進而嵌套中斷,

不過也可以設定不支援嵌套中斷。

S5PV210中斷處理的主要寄存器

VICnVECTADDR0~VICnVECTADDR31,VICnADDR

一共有32*4+4個寄存器,

210的尋找isr的機制,就是通過這些寄存器來實作的,

每一個中斷源都有一個VECTADDR寄存器,把中斷ISR位址直接放入這個寄存器接口即可,

VICnADDR這個寄存器是隻讀的,隻需要讀的,裡面的内容是由硬體自動設定的,

當發生了相應的中斷時,硬體會自動識别中斷編号,并且會自動找到這個中斷的VECTADDR寄存器,

然後将其讀出複制到VICnADDR中,我們直接讀出使用即可。

通過硬體實作,避免了軟體查找中斷源和ISR,提高了響應速度。

S5PV210中斷處理的主要寄存器

繼續閱讀