天天看点

S5PV210中断处理的主要寄存器

《朱老师物联网大讲堂》学习笔记

学习地址:www.zhulaoshi.org

中断相关的寄存器

VICnINTENABLE

也就是interrupt enable,负责相应中断的使能,

VICnINTENCLEAR

也就是interrupt enable clear,负责相应中断的禁止。

有些CPU上面两个功能是用一个寄存器实现的,

这样的话中断使能要小心,

对它们的操作,要像操作cp15寄存器一样,

通过读,改,写来完成。

S5PV210中断处理的主要寄存器

VICnINTSELECT

设置为irq或者fiq,一般设置为irq。

irq和fiq有什么区别?

irq是普通中断,fiq是快速中断,

fiq有更快的中断响应通道,但是只能有一个被设置为fiq。

S5PV210中断处理的主要寄存器

CPU如何保证fiq比irq快啊?

1.fiq模式有专用的r8~r12,可以直接使用,不像其它模式,还要保存寄存器,

2.fiq的中断处理程序直接在异常向量表中,因为它是异常向量表中最后一个异常。

S5PV210中断处理的主要寄存器
S5PV210中断处理的主要寄存器

VICnIRQSTATUS和VICnFIQSTATUS

中断状态寄存器,是只读的,当发生中断时,硬件会自动将该位的寄存器置为1,表示中断发生,

软件在处理第二阶段第一阶段适时,就是靠查询这个寄存器来得到中断编号的。

S5PV210中断处理的主要寄存器

VICnVECTPRIORITY0~VICnVECTPRIORITY31

中断优先级设置寄存器,设置多个中断同时发生时先处理谁后处理谁得问题,

一般来说高优先级的中断,可以打断低优先级的中断,从而嵌套中断,

不过也可以设置不支持嵌套中断。

S5PV210中断处理的主要寄存器

VICnVECTADDR0~VICnVECTADDR31,VICnADDR

一共有32*4+4个寄存器,

210的寻找isr的机制,就是通过这些寄存器来实现的,

每一个中断源都有一个VECTADDR寄存器,把中断ISR地址直接放入这个寄存器接口即可,

VICnADDR这个寄存器是只读的,只需要读的,里面的内容是由硬件自动设置的,

当发生了相应的中断时,硬件会自动识别中断编号,并且会自动找到这个中断的VECTADDR寄存器,

然后将其读出复制到VICnADDR中,我们直接读出使用即可。

通过硬件实现,避免了软件查找中断源和ISR,提高了响应速度。

S5PV210中断处理的主要寄存器

继续阅读