在ARM Linux上注册多个快速中断源



我一直在处理ARM:上的Linux中断

  • CCD_ 1可用于注册中断

在一条中断线上,您可以用SHA_SHIRQ注册多个中断,即正常IRQ。

  • Linux是否允许在特定的中断线上注册多个SA_interrupt
  • 也就是说,我们可以为ARM快速中断或FIQ s注册多个中断处理程序吗

IRQ一样,FIQ也有一个来自矢量表的入口点。您必须根据位/数字检查中断控制器和分支,以处理特定的FIQ。对于FIQ,这往往会否定存储体寄存器,因为两个例程都必须共享它们。可以让一个FIQ例程拥有存储体寄存器,其他例程显式保存它们。

当前的Linux FIQ代码支持FIQ处理程序的堆叠,而不支持多个同时的FIQ源。您的代码可以使用set_fiq_regs()初始化request_irq()0寄存器。您可以分配一个中断控制器基地址,并将检查interrupt source和分支的代码分配给适当的处理程序注意:,内核不提供任何与FIQ的通信机制。您必须编写自己的联锁。我认为FIFO实现应该是FIQ安全的,以及其他无锁内核模式。

编辑:这是主线代码中FIQ的示例。它是一个IMX SSI驱动程序。SSI汇编程序,符号接口,主文件。FIQ也称为软DMAFIQ延迟非常小,并且应当允许高服务频率。通常只有一个设备需要这种关注。您可以在处理程序中解复用(分支/函数调用/源编号上的指针)。FIQ经常用汇编程序编写的原因是,如果使用它,性能是隐含的。此外,FIQ通常不会被屏蔽,并且它会增加系统其余部分的IRQ延迟。通过在汇编程序中进行编码使其更快,可减少IRQ延迟

另请参阅:FIQ-IRQ差异

所有在同一IRQ上注册的中断处理程序都被放在列表中。当中断触发时,内核会依次调用每个中断处理程序(要么是最后一次先注册,要么是第一次先注册—我记不起是哪一个)。FAST_IRQ在这方面并不特别。

每个中断处理程序的职责是检查其硬件,看看是否需要处理任何事情。如果没有,只需返回以便下一个处理程序可以查看。

相关内容

  • 没有找到相关文章

最新更新