设备树中有很多描述中断的地方例如
axi_timer@42800000 {
compatible = "xlnx,axi_timer-1.03.a";
reg = <0x42800000 0x10000>;
interrupts = <0 37 1>;
interrupt-parent = <&gic>;
};
一开始搞不清楚中断号37从哪里来的,根据网上资料现在整理一下思路。
先看几个缩写
IPI:inter-processer interrupt 中断号0~15
PPI:per processor interrupts 中断号16~31
SPI:shared processor interrupts 中断号 32 ~32+224
SGI:software generated interrupts (SGI).
设备树是用来描述硬件信息的,因此里面不涉及软件中断SGI,从设备树包含的头文件可以看出这一点:
在arm-gic.h文件中定义的只有SPI和PPI
#define GIC_SPI 0
#define GIC_PPI 1
一般设备树中的中断都是SPI,那么 interrupts = <0 37 1>;形式中的<X Y Z>
都是什么呢
X:GIC_SPI或者GIC_PPI
Y:物理中断号-32
Z:触发方式
1 = low-to-high edge triggered2 = high-to-low edge triggered (invalid for SPIs)4 = active high level-sensitive8 = active low level-sensitive (invalid for SPIs).