设备树的中断属性

在设备树里面,中断使用interrupts来描述,interrupts属性会有两种不同的参数: 有时是两个参数,有时是三个参数。

两个的时候一般是这样出现:

interrupt-parent = <&gpio2>;
interrupts = <29 0>;

一般这样表明:中断控制器是GPIO2,然后使用它的29号中断。(这里的29号,就是指29号引脚),0是指触发的方式(上升沿、下降沿等)。

或者:

interrupt-parent = <&gpio2>;
interrupts = <5 1>;

表示中断控制器是GPIO2,使用GPIO2的第5号中断,这里的第5号中断指的是5号引脚,1是指中断触发的方式为上升沿触发。

三个的时候一般是这样出现:

interrupts = <0 37 1>;
interrupts = <GIC_SPI 37 1>;
interrupts = <GIC_PPI 37 1>;

先了解一下中断的类型

  • IPI:inter-processer interrupt 中断号0~15
  • PPI:per processor interrupts 中断号16~31
  • SPI:shared processor interrupts 中断号 32 ~32+224
  • SGI:software generated interrupts (SGI).

三个的时候:

  • 第一个参数表示是IPI、PPI、SPI、SGI其中的一个
  • 第二个参数表示:是第一个参数里面的第几个
  • 第三个参数表示:中断触发的类型。(上升沿、下降沿等)

以下例子:

interrupts = <GIC_SPI 66 1>;

上述示例表示中断类型为共享处理器中断(SPI),中断号为SPI中断类型中的第66号中断号,计算出来的实际中断号即为32+66=98号中断,1表示上升沿触发中断。

中断类型的值:

#define IRQ_TYPE_NONE        0            //内核不改变它,开机或uboot设置它是什么样就什么样。
#define IRQ_TYPE_EDGE_RISING    1         //上升沿触发
#define IRQ_TYPE_EDGE_FALLING    2        //下降沿触发
#define IRQ_TYPE_EDGE_BOTH    (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)    //双边沿触发
#define IRQ_TYPE_LEVEL_HIGH    4          //电平触发-高电平
#define IRQ_TYPE_LEVEL_LOW    8           //电平触发-低电平

我们使用的外部中断均属于SPI中断类型。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值