tiny4412 linux-4.2 移植(三)GIC中断

GIC介绍

GIC(全称Genetic Interrupt Controller)是ARM公司提供的一个通用的中断控制器。它可以管理4种类型的中断:
1、外设中断(Peripheral Interrupt)
外设中断包含内部中断和外部中断。定时器、i2c这些属于内部中断,外部管脚引发的中断例如下降沿中断属于外部中断。
外设中断分为PPI(Private Peripheral Interrupt)和SPI(share Peripheral Interrupt)。PPI只能分配给指定的CPU核心,而SPI可以分配给所有的CPU核心,并由其中一个去处理。这里用得比较多的是SPI。比如i2c的中断用的就是SPI

        i2c_3: i2c@13890000 {
   
        	...
            interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;   /* SPI中断 */
        };

还有定时器中断也是用GIC_SPI

   backlight_demo_dts@139D0000{
    //名字无所谓
   		...
        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;  
    };

2、软件触发的中断SGI(Software-generated interrupt)
软件可以通过写GICD_SGIR寄存器来触发一个中断事件。
3、虚拟中断
4、Maintenance interrupt

GIC中断号

比如tiny4412的背光驱动中需要定时器去模拟pwm信号然后设置背光值。这里需要用到定时器3,查看确定datasheet对应的中断号。
在这里插入图片描述
可以看出中断号是40,所以dts可以这样来表示

 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; 

GIC_SPI表示这是一个共享的外设中断,40表示中断号,IRQ_TYPE_LEVEL_HIGH表示中断高优先级

DTS

描述中断连接需要4个属性
1、interrupt-controller : 一个空的属性定义, 该节点作为一个接收中断信号的设备。
2、#interrupt-cells :中断控制器节点的属性。它声明了该中断控制器的后续的中断指示符中 cell 的个数。一般来说定时器中断、i2c中断这些中断的cell为<3>;外部引脚中断的cell为

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值