Linux 中断子系统(四):GIC中断初始化
以我手中的 imx6ull开发板
为例。
如果使用设备树的话就需要在设备树中设置好中断属性信息
,Linux 内核通过读取设备树中的中断属性信息来配置中断。对于中断控制器而言,设备树绑定信息参考文档 Documentation/devicetree/bindings/arm/gic.txt。
打开 imx6ull.dtsi
文件,其中的 intc 节点就是 I.MX6ULL 的中断控制器节点。
在设备树文件 kernel4.14/arch/arm/boot/dts/imx6ull.dtsi 中有
第 2 行,compatible 属性值为arm,cortex-a7-gic
在 Linux 内核源码中搜索arm,cortex-a7- gic
即可找到 GIC 中断控制器驱动文件。
第 3 行,#interrupt-cells
和 #address-cells、#size-cells 一样。表示此中断控制器下设备的 cells 大小,对于设备而言,会使用 interrupts 属性描述中断信息,#interrupt-cells 描述了 interrupts 属性的 cells 大小,也就是一条信息有几个 cells。每个 cells 都是 32 位整形值,对于 ARM 处理的 GIC 来说,一共有 3 个 cells,这三个 cells 的含义如下:
第一个 cells:中断类型,0 表示