S3C2410(IRQ)中断处理
S3C2410(IRQ)中断处理过程:
在此要注意的是区别中断向量表和异常向量表。中断发生后总是从
IRQ 或者 FIQ 异常入口
处进入,然后跳转到相应的异常处理程序处执行,这个异常处理程序一般都是进行查找
中断向量表的操作,然后调用中断处理程序。
以下是在应用中中断处理实现的过程:从中不难体会到中断的处理过程。
定义中断向量表的物理地址:
代码
.equ pISR_DABORT , (_ISR_STARTADDRESS 0x10)
.equ pISR_RESERVED, (_ISR_STARTADDRESS 0x14)
.equ pISR_IRQ , (_ISR_STARTADDRESS 0x18)
.equ pISR_FIQ , (_ISR_STARTADDRESS 0x1c) //异常向量表
……………………………………………………………………
.equ pISR_EINT0 , (_ISR_STARTADDRESS 0x20) //中断向量表
.equ pISR_EINT1 , (_ISR_STARTADDRESS 0x24)
.equ pISR_EINT2 , (_ISR_STARTADDRESS 0x28)
.equ pISR_EINT3 , (_ISR_STARTADDRESS 0x2c)
将中断处理程序入口地址放入中断向量表:
代码
pISR_EINT0 = (unsigned int)isrEINT0; // isrEINT0 中断处理程序
pISR_EINT1 = (unsigned int)isrEINT1;
定义中断处理程序:
代码
.extern Interrupt_Rbutton
.global isrEINT0
isrEINT0:
IRQHandle Interrupt_Rbutton
定义异常向量表: