之前的文章分析过没使用设备树时,中断是如何初始化的
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 number。CPU需要为每一个外设中断编 ,我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID,和硬件无关,仅仅是被CPU用来标识一个外设中断。
- HW interrupt ID。对于interrupt controller而言,它收集了多个外设的interrupt request line并向上传递,因此&
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!