02.07.2013 Views

kernel 里面的中断代码分析

kernel 里面的中断代码分析

kernel 里面的中断代码分析

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!