这一篇主要说说中断控制器,及GPIO中断触发与中断号的识别,为什么GPIO引脚的触发最后调用特定的中断例程,这中间是怎么联系起来的。现在知道的是request_irq只是在特定的中断号
链表中注册了一个中断例程,那这个中断号哪儿来的呢?其次,GPIO引脚的专用功能是特定的,当被触发后,就会通过VIC通知CPU去读取对应的中断号信息,所以要想让GPIO引脚上的触发
让cpu去调用特定的中断子程序,必须把中断服务子程序放在特定的中断号下面。
VIC接收来自中断源的中断信号,并判别出所有中断信号中的优先级,按优先级次序发送给CPU。CPU通过访问VIC的中断向量寄存器可以快速跳转到中断服务程序。
简单说下中断号的产生流程:
可以看出是中断控制器就算出的中断号,最后通过这个中断号找到中断例程,所以呢,想在一个中断触发的时候执行什么,就把中断例程写到相应的中断号下面去。
VIC计算出了中断号,也可以计算出这个中断的偏移地址,加上IRQ的基址,就可以跳转到中断服务程序,如果这个中断不是共享型的,就可以直接执行中断服务例程了。很方便啊!