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=中断源声明中断请求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优先级
SUBSRCPND 0X4100 0018 R/W 同SRCPND
INTSUBMSK 0X4100 001C R/W 同INTMASK