第四章 VIC(Vectored Interrupt Controller)
LPC2138微控制器使用ARM7 TDMI-S核和ARM PrimeCell VIC,支持32个中断请求输入。
32个中断请求输入分为三类:
1)FIQ
2)最多16个Vectored IRQ
3)Non-Vectored IRQ
优先级别FIQ > Vectored IRQ > Non-Vectored IRQ。32个中断输入请求中,任意(最多16个)可以配置为任意Vectored IRQ,其中Vectored IRQ 0~15优先级从高到低。
中断和中断向量
中断包括硬件中断IRQ和FIQ,软件中断SWI。
扫描二维码关注公众号,回复:
9231828 查看本文章
中断向量是指中断服务函数(ISR)在内存中的地址。
中断被触发之后,CPU会暂停当前正在执行的任务,进行中断上下文切换,跳转到对应的中断向量执行ISR。其处理过程如下图:
1)用户程序正常执行
2)中断被触发
3)VIC将中断对应的中断向量加载到VICVectAddr寄存器
4)CPU跳转到异常向量表中IRQ或者FIQ处
5)执行指令跳转到VICVectAddr寄存器指向的地址(即ISR所在地址)
6)ISR执行完毕,继续执行用户程序
从上面可以看出,CPU只用区分是FIQ还是IRQ,而不负责判断具体是哪种中断源,具体判断是哪种中断源以及对应的中断向量由VIC代劳。