中断共享(硬件角度)
中断共享:
和别人讨论的时候,谈到了中断共享,下面记录下几种不同的情况:
1、一个IP模块中只有一个中断引脚连接到中断控制器,该IP模块中只有一个部件可以产生中断请求;
2、一个IP模块中只有一个中断引脚连接到中断控制器,该IP模块中有多个部件可以产生中断请求;
3、多个IP模块的中断引脚通过电路设计(例如:数字电路中的线与逻辑电路)连接到中断控制器的一个引脚,该中断引脚上对应着多个IP模块的的中断请求。
第一种情形,谈不上中断共享;
第二种情形,这个不好定义,因为(1)可以只有一个中断函数、在中断函数内部判定是何种原因导致了该IP模块产生中断(一般都这样);(2)可以为每种导致该IP模块产生中断的情形各自定义一个中断处理函数,通过irqaction上的链来处理,此时衍化成了第“3”情形,这种处理方式没有见过。记得有次和别人交谈的时候只将了上文中的第“2”中情形,别人很不满意。
第三种情形,中断共享。irq_desc结构体中的irqaction链表使得我们在当该中断线上有中断请求时,可以逐个调用链上的中断处理函数,这就意味着,对于第“3”中情形,在每个中断处理函数中必须判定中断是否来自本IP模块。