ARM-Linux 中斷分析
4 /* Timer 4 interrupt */ #define IRQ_UART2 15 /* UART 2 interrupt */ #define IRQ_LCD 16 /* reserved for future use */ #define IRQ_DMA0 17 /* DMA channel 0 interrupt */ #define IRQ_DMA1 18 /* DMA channel 1 interrupt */ #define IRQ_DMA2 19 /* DMA channel 2 interrupt */ARM-Linux #define IRQ_DMA3 20 /* DMA channel 3 interrupt */ #define IRQ_SDI 21 ARM-Linux /* SD Interface interrupt */ #define IRQ_SPI0 22 /* SPI interrupt */ #define IRQ_UART1 23 /* UART1 receive interrupt */ #define IRQ_RESERVED24 24 #define IRQ_USBD 25 /* USB device interrupt */ #define IRQ_USBH 26 /* USB host interrupt */ #define IRQ_IIC 27 /* IIC interrupt */ #define IRQ_UART0 28 /* UART0 transmit interrupt */ #define IRQ_SPI1 29 /* UART1 transmit interrupt */ #define IRQ_RTC 30 /* RTC alarm interrupt */ #define IRQ_ADCTC 31 /* ADC EOC interrupt */ #define NORMAL_IRQ_OFFSET 32 這些宏定義在文件irqs.h中,大家ARM-Linux可以看到它的定義取自S3C2410的文檔。 總結(jié): linux在初始化的時候已經(jīng)把每個中斷向量的地址準備好了!就是說添加中斷服務程序的框架已經(jīng)給出,當某個中斷發(fā)生時,將會到確定的地址處去找指令,所以我們做驅(qū)動程序時,只需要經(jīng)過request_irq()來掛接自己編寫的中斷服務ARM-Linux程序即可。 另:對于快速中斷,linux在初始化時是空的,所以要對它掛接中斷處理程序,就需要單獨的函數(shù)set_fiq_handler()來實現(xiàn),此函數(shù)在源文件fiq.c中,有興趣的讀者可進一步ARM-Linux研究。 |