图片:
图片:
对于2440的中断系统我不是很了解,望各位指教一个。。
到底2440什么条件下才响应ISR中断?
A:当CPSR位的 I 位被置0;当INTMSK相应的中断位未被屏蔽;当INTMOD相应中断位被置0(ISR模式);中断源出现(这时SRCPND相应位被置位);
这时候就CPU就会响应中断(这是我之前的理解)
B:当CPSR位的 I 位被置0;当INTMSK相应的中断位未被屏蔽;当INTMOD相应中断源位被置0(ISR模式);中断源出现(这时SRCPND相应位被置位);
并且 优先级仲裁器PRIORITY设置为当前中断源优先级为最高,这时INTPND相应的中断源位就会被置1。CPU会跟据INTPND相应的中断源位响应中断。
我想应该按B的理解才是正确的吧。但我想不通一个问题,就是优先级仲裁器PRIORITY中有两个位的优先级顺序是不可改变的(相对于5个优先级顺序来说)。对仲裁器ARBITER6来说,它管着仲裁器ARBITER0~ARBITER5,其中ARBITER0的优先级总是最高,ARBITER5的优先级总是最低,那么。。。ARBITER0管着的中断源EIT0~EIT3总是比ARBITER2管着的TIMER0~UART2高。
那么,如果从B去理解,问题顺之而来,就是TIMER0如何才能产生中断呢?它的优先级永远不可能最高,这时INTPND就不会置位,CPU就不会响TIMER0的中断。。。
求各位大侠解答在下的疑难,谢谢
