之前的文章分析过没使用设备树时,中断是如何初始化的
https://blog.csdn.net/qq_16777851/article/details/82556519
用一句话总结就是,启动过程,通过mach_id找到,machine_desc,之后调用machine_desc->init_irq函数来实现,中断的初始化。
这种方式,因为所有的中断都是在代码中写死的,不易修改。
使用了设备树方式后,所有的中断控制器都是由设备树文件定义,各种级联关系也在设备树文件定义,这样一个内核支持多种SOC的情况才可能实现。
参考博文(蜗窝大神采用的是3.14版本的内核,我下面分析会采用4.19版本的内核)
http://www.wowotech.net/irq_subsystem/irq-domain.html
一、概述
在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断:
- IRQ num