kernel 里面的中断代码分析
kernel 里面的中断代码分析
kernel 里面的中断代码分析
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
irq_handler 的作用是什么?<br />
• 它首先通过宏 get_irqnr_and_base 获得中断号,存在 r0,然后把上面建立的 pt_regs 结构的指针,<br />
也就是 sp 值赋给 r1,把调用宏 get_irqnr_and_base 的位置作为返回地址(为了处理下一个中<br />
断???)然后调用 asm_do_IRQ 进一步处理中断,以上这些操作都在建立在获得中断号的前提下,<br />
也就是有中断发生<br />
• 代码实现<br />
.macro irq_handler<br />
1: get_irqnr_and_base r0, r6, r5, lr<br />
movne r1, sp<br />
@<br />
@ routine called with r0 = irq number, r1 = struct pt_regs *<br />
@<br />
adrne lr, 1b<br />
bne asm_do_IRQ<br />
.endm<br />
具体的中断处理会在 asm_do_IRQ 根据中断号调用相应的中断处理程序完成。<br />
----<br />
1.3 s3c2410 里面的中断控制器的细节分析:<br />
从这里:<br />
可以看出: s3c2410a 可以接收 56 个中断源的请求 。<br />
这些中断源来自来自两部分:内部外设,比如 DMA 控制器,uart ,i2c