0
点赞
收藏
分享

微信扫一扫

两类中断控制器处理流程

进击的铁雾 2022-04-16 阅读 91

下级中断控制器的类别

中断控制器可以分为两类:链式(chained)、层级(hierarchy)。100ask的分类,用来更好理解结构

在这里插入图片描述

  1. 链式中断控制器
    上图左边是chained intc就是链式中断控制器。只要其中4个中触发了一个,那么33号中断被触发。
    当33号中断触发时,需要判断是哪个触发了33中断。这时就需要读取 chained intc中的寄存器。

  2. 层级中断控制器
    右边是hierarchy intc 是层级中断控制器。
    每个中断都又一一对应,GIC处理中断号时,不需要读取hierarchy intc寄存器来分辨哪个触发中断。

链式中断控制器的处理流程

在这里插入图片描述

  • 当GIC触发33中断号时,通过GIC的irq_domain找到对应的处理函数
  • 处理函数会做3件事,屏蔽中断、处理中断、恢复屏蔽。其中屏蔽中断、恢复屏蔽都是由GIC控制处理
  • 处理中断时,通过GPIO的irq_domain来先判断对应的中断源,然后再进GPIO的中断处理程序
  • GPIO处理中断,通过GPIO的irq_domain,找到对应的处理函数。
  • 函数处理前后,还是会屏蔽和恢复中断

屏蔽和恢复中断都在irq_desc中的irq_data->irq_chip对应的函数

层级中断控制器的处理流程

在这里插入图片描述

  • 当GIC触发SPI中断时,当触发100中断号后
  • GIC irq_domain和GPIO irq_domain都对应,为同一个irq_desc
  • 同样使用irq_data中的irq_chip函数,处理屏蔽和恢复中断,并处理函数。
  • 再调用irq_data时,还会调用父类的irq_data,不仅屏蔽GPIO中孤单,还用来屏蔽GIC中断

处理流程对比

在这里插入图片描述

链式使用GIC和GPIO 层层调用才处理中断函数
层级就是直接调用GPIO,再调用parent来处理

举报

相关推荐

0 条评论