日期:2014-05-16  浏览次数:20904 次

linux内核中的中断向量号是如何与硬件的中断Pin关联的?
C/C++ code
  
#define TOUCH_IRQ_LINE 42
  if(request_irq(TOUCH_IRQ_LINE, tpd_handler, 0, "mtk_tpd", NULL))
        TPD_DMESG("request_irq failed.\n");


请问request_irq是否是将中断向量号TOUCH_IRQ_LINE与中断处理函数tpd_handler关联起来了?
中断向量号TOUCH_IRQ_LINE是如何与硬件中的中断标志位或者说是硬件的中断Pin脚关联起来的呢?

------解决方案--------------------
请问request_irq是否是将中断向量号TOUCH_IRQ_LINE与中断处理函数tpd_handler关联起来了
-------------------


中断向量号TOUCH_IRQ_LINE是如何与硬件中的中断标志位或者说是硬件的中断Pin脚关联起来的呢
------------------------------
具体的硬件相关,负责中断派发的程序检查中断控制器,检测到这个引脚有了中断,就do_irq(42)
这个关联是程序员自己定的
------解决方案--------------------
你可以在tpd_handler开头加入一句
dump_stack();

就会把tpd_handler的调用栈打出来,就能找到调用tpd_handler的源头,看一看就能有所收获
------解决方案--------------------
中断向量号TOUCH_IRQ_LINE是如何与硬件中的中断标志位或者说是硬件的中断Pin脚关联起来的呢?
这可以查询硬件的datasheet,里面会有描述中断号和中断pin脚的对应关系。