c语言中eint什么意思,系统处理 IRQ_EINT0 IRQ_EINT11 的过程

主要分析系统处理 IRQ_EINT0 IRQ_EINT11 的过程。

2440处理器的中断组织成两层:主中断 和 次中断,一共可以处理60个中断源。

主中断 和 次中断 经过中断构架的抽象之后,编写驱动程序时,我们不用考虑这两层中断,直接使用

request_irq 注册 60个中断源的某个,就可以直接使用中断了。

err = request_irq(button_irqs[i].irq, buttons_interrupt, NULL,

button_irqs[i].name, (void *)&button_irqs[i]);

set_irq_type(button_irqs[i].irq, IRQT_BOTHEDGE);

像上面这样使用中断。

下面是主中断0~31共32个中断源(32bit)

/* main cpu interrupts */

#define IRQ_EINT0      S3C2410_IRQ(0)        /* 16 */

#define IRQ_EINT1      S3C2410_IRQ(1)

#define IRQ_EINT2      S3C2410_IRQ(2)

#define IRQ_EINT3      S3C2410_IRQ(3)

#define IRQ_EINT4t7    S3C2410_IRQ(4)        /* 20 */

#define IRQ_EINT8t23   S3C2410_IRQ(5)

#define IRQ_RESERVED6  S3C2410_IRQ(6)        /* for s3c2410 */

#define IRQ_CAM        S3C2410_IRQ(6)        /* for s3c2440 */

#define IRQ_BATT_FLT   S3C2410_IRQ(7)

#define IRQ_TICK       S3C2410_IRQ(8)        /* 24 */

#define IRQ_WDT           S3C2410_IRQ(9)

#define IRQ_TIMER0     S3C2410_IRQ(10)

#define IRQ_TIMER1     S3C2410_IRQ(11)

#define IRQ_TIMER2     S3C2410_IRQ(12)

#define IRQ_TIMER3     S3C2410_IRQ(13)

#define IRQ_TIMER4     S3C2410_IRQ(14)

#define IRQ_UART2      S3C2410_IRQ(15)

#define IRQ_LCD           S3C2410_IRQ(16)        /* 32 */

#define IRQ_DMA0       S3C2410_IRQ(17)

#define IRQ_DMA1       S3C2410_IRQ(18)

#define IRQ_DMA2       S3C2410_IRQ(19)

#define IRQ_DMA3       S3C2410_IRQ(20)

#define IRQ_SDI           S3C2410_IRQ(21)

#define IRQ_SPI0       S3C2410_IRQ(22)

#define IRQ_UART1      S3C2410_IRQ(23)

#define IRQ_RESERVED24 S3C2410_IRQ(24)        /* 40 */

#define IRQ_NFCON      S3C2410_IRQ(24)        /* for s3c2440 */

#define IRQ_USBD       S3C2410_IRQ(25)

#define IRQ_USBH       S3C2410_IRQ(26)

#define IRQ_IIC           S3C2410_IRQ(27)

#define IRQ_UART0      S3C2410_IRQ(28)        /* 44 */

#define IRQ_SPI1       S3C2410_IRQ(29)

#define IRQ_RTC           S3C2410_IRQ(30)

#define IRQ_ADCPARENT  S3C2410_IRQ(31)

其中IRQ_EINT4t7,IRQ_EINT8t23,IRQ_CAM,IRQ_WDT,IRQ_LCD,IRQ_ADCPARENT,IRQ_UART0,IRQ_UART1,

IRQ_UART2,这9个主中断下面还有次中断,实际的中断源来自次中断,所以要分清到底是硬件的那个部分产生了中断,还要下

潜到次中断,才能查看到底是那里发生了中断。上面的9个主中断并不属于60个中断源之一,因为他们只是表征了次中断的发生

与否。具体的次中断才是60个中断源之一。次中断组织如下。

/* interrupts generated from the external interrupts sources */

#define IRQ_EINT4      S3C2410_IRQ(32)       /* 48 */

#define IRQ_EINT5      S3C2410_IRQ(33)

#define IRQ_EINT6      S3C2410_IRQ(34)

#define IRQ_EINT7      S3C2410_IRQ(35)

#define IRQ_EINT8      S3C2410_IRQ(36)

#define IRQ_EINT9      S3C2410_IRQ(37)

#define IRQ_EINT10     S3C2410_IRQ(38)

#define IRQ_EINT11     S3C2410_IRQ(39)

#define IRQ_EINT12     S3C2410_IRQ(40)

#define IRQ_EINT13     S3C2410_IRQ(41)

#define IRQ_EINT14     S3C2410_IRQ(42)

#define IRQ_EINT15     S3C2410_IRQ(43)

#define IRQ_EINT16     S3C2410_IRQ(44)

#define IRQ_EINT17     S3C2410_IRQ(45)

#define IRQ_EINT18     S3C2410_IRQ(46)

#define IRQ_EINT19     S3C2410_IRQ(47)

#define IRQ_EINT20     S3C2410_IRQ(48)       /* 64 */

#define IRQ_EINT21     S3C2410_IRQ(49)

#define IRQ_EINT22     S3C2410_IRQ(50)

#define IRQ_EINT23     S3C2410_IRQ(51)

#define IRQ_EINT(x)    S3C2410_IRQ((x >= 4) ? (IRQ_EINT4 + (x) - 4) : (S3C2410_IRQ(0) + (x)))

#define IRQ_LCD_FIFO   S3C2410_IRQ(52)

#define IRQ_LCD_FRAME  S3C2410_IRQ(53)

/* IRQs for the interal UARTs, and ADC

* these need to be ordered in number of appearance in the

* SUBSRC mask register

*/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值