在30 个中断源中,对于中断控制器来说有24 个中断源是单独的,4 个外部中断(EINT4/5/6/7)是逻辑或的关系,它们共用同一个中断源,另外两个UART 错误中断(UERROR0/1)也是共用同一个中断控制器。
表6.38 S3C44B0X 的中断源及其向量地址
注意:EINT4、EINT5、EINT6 和EINT7 共享同一个中断请求线,因此,ISR(中断服务程序)通过读EXTINPND[3:0]来区别这4 种中断源。 在ISR 完成之后,ISR 中的EXTINPND[3:0]必须通过写“1”的操作来清除。
(1)中断优先级产生模块
中断优先级产生模块只为IRQ 中断服务,如图6.5 所示。 如果应用向量模式并且在INTMOD 寄存器中一个中断源在INTMOD 寄存器中配置为ISR,则这个中断将被中断优先级产生模块处理。
图6.5 中断优先级产生模块(www.xing528.com)
优先级产生模块包括5 部分,1 个主单元和4 个从单元。 每个从优先级产生单元管理6个中断源。 主优先级产生单元管理4 个从单元和2 个中断源。
每个从单元都有4 个可编程优先级中断源(sGn)和2 个固定的优先级中断源(sGKn)。在每个从单元中的4 个优先级中断源都是可编程的,其余2 个固定优先级在6 个中断源中优先级最低。 主优先级单元决定了4 个从优先级单元和2 个中断源的优先级。 这2 个中断源INT_RTC 和INT_ADC 在26 个中断源中优先级最低。
(2)中断优先级
如果中断源A 设置为FIQ,中断源B 设置为IRQ,则中断源A 的优先级高于中断源B 的优先级,因为FIQ 中断的优先级总是高于IRQ 中断的优先级。 如果中断源A 和中断源B 处于不同的主群中,并且中断源A 所在的主群的优先级高于中断源B 所在的主群的优先级,则中断源A 的优先级高于中断源B 的优先级。 如果中断源A 和中断源B 处于相同的主群中,并且中断源A 的优先级高于中断源B 的优先级,则源A 拥有较高的优先级。
sGA、sGB、sGC 和sGD 的优先级总是高于sGKA 和sGKB。 sGA、sGB、sGC 和sGD 的优先级都是可编程的或可以由轮询方法来决定。 在sGKA 和sGKB 中,sGKA 的优先级高。
由于mGA、mGB、mGC 和mGD 的优先级总是高于mGKA 和mGKB,所以mGKA 和mGKB的优先级在其他中断源中是最低的。 mGA、mGB、mGC 和mGD 的优先级都是可编程的或可以由轮询方法来决定。 在mGKA 和mGKB 中,mGKA 的优先级高。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。