Overview
Scope
本文主要介绍MSM7201平台中断机制,适合大多数开发平台。开头还介绍了一般ARM中断的原理。另外还分别介绍了MSM7201的PIC和VIC两种控制器来控制中断的原理以及他们的不同部分。
具体的MSM8x60的中断是如何处理的(包括原理、寄存器设置等)相关的文档还没找到。不过原理应该和MSM7201是差不多的。注意MSM7201和MSM8x60不同部分对中断的影响:
1. MSM7201的modem部分用的是ARM926EJ,ARMv5/ARMv4架构。
2. MSM8x60的mdoem部分用的是ARM11, ARMv6架构。
Interrupt overview
IRQ/FIQ handling it ARM processor
在讨论MSM的中断控制器之前,我们先说下一般ARM是如何处理IRQ/FIQ的。
通过上图可知,多种中断源通过中断控制器送到ARM的。寄存器用来保存中断设置、状态等信息。
如果一个中断配置使能而且没有被屏蔽,当其触发时,ARM设置PC跳到异常向量表,表中IRQ或者FIQ地址存放的是一条分支跳转指令,跳转到IRQ/FIQ分支处理程序。由于FIQ是放在异常向量表的最后一个,所以FIQ的处理程序可以直接放在FIQ异常地址的后面,省去跳转所带来的延时。
当IRQ/FIQ跳转到相应处理程序的时候,ARM也会转换成相应的工作模式(IRQ/FIQ)。
如上图所看到的,中断是可以嵌套的。假设中断b优先级比a高