ARM2440中斷

CPSR中的F和I位,分別對應的是FIRQ和IRQ,如果被置爲1,CPU不會接受對應的請求,可以通過設置對應的位爲0,並設置MASK,分別允許對應的請求.
 INT_MODE,分別爲IRQ和FIRQ模式,是對應中斷的觸發方式,0=IRQ,1=FIRQ.

中斷優先級
每個仲裁器可以處理基於 1 位仲裁器模式控制(ARB_MODE)和選擇控制信號(ARB_SEL)的 2 位的 6 箇中
斷請求,如下:
– 如果 ARB_SEL 位爲 00b,優先級順序爲 REQ0、REQ1、REQ2、REQ3、REQ4 和 REQ5。
– 如果 ARB_SEL 位爲 01b,優先級順序爲 REQ0、REQ2、REQ3、REQ4、REQ1 和 REQ5。
– 如果 ARB_SEL 位爲 10b,優先級順序爲 REQ0、REQ3、REQ4、REQ1、REQ2 和 REQ5。
– 如果 ARB_SEL 位爲 11b,優先級順序爲 REQ0、REQ4、REQ1、REQ2、REQ3 和 REQ5。
請注意仲裁器的 REQ0 的優先級總是最高並且 REQ5 的優先級總是最低。此外,通過改變 ARB_SEL 位,可
以輪換 REQ1 到 REQ4 的順序。
此處,如果 ARB_MODE 位被設置爲 0,ARB_SEL 位不能自動改變,這使得仲裁器操作在固定優先級模式中
(注意即使在此模式中,也不能通過手動改變 ARB_SEL 位來重新配製優先級)

中斷偏移(INTOFFSET)寄存器
中斷偏移寄存器中的值表明了是哪個 IRQ 模式的中斷請求在 INTPND 寄存器中。此位可以通過清楚 SRCPND
和 INTPND 自動清除
 
1,ARB_SEL 位會被輪換方式而改變,例如如果 REQ1 被服務,ARB_SEL 位被自動改爲 01b 以便 REQ1 進入到
最低的優先級。ARB_SEL 改變的詳細結果如下:
– 如果 REQ0 或 REQ5 被服務,ARB_SEL 位不會改變
– 如果 REQ1 被服務,ARB_SEL 位被改爲 01b。
– 如果 REQ2 被服務,ARB_SEL 位被改爲 10b。
– 如果 REQ3 被服務,ARB_SEL 位被改爲 11b。
– 如果 REQ4 被服務,ARB_SEL 位被改爲 00b。
SRCPEND          0X4A00 0000  R/W    0表示中斷未被請求,1表示中斷被請求(當寫入數據時,只會清楚帶1的位,所以可以通過對對應位賦予1來清除數據)
INTMOD             0X4A00 0004  R/W    0=IRQ  1=FIRQ
INTMASK           0X4A00 0008  R/W    0=中斷服務可用  1=不可用
PRIORITY          0X4A00 000C R/W    IRQ優先級 
INTPND              0X4A00 0010 R/W    0=未請求中斷,1=中斷源聲明中斷請求
SUBSRCPND     0X4100 0018 R/W    同SRCPND
INTSUBMSK       0X4100 001C R/W   同INTMASK

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章