fiq&irq handler - arm

All*_*lan 1 arm

我是新手,有一些与IRQ和FIQ有关的doubs.请尝试澄清这些.
FIQ和IRQ频道有多少个?
我们可以为每个频道编写多少个处理程序?
此外,如果我们可以为单个中断通道注册多个处理程序,arm将如何知道要运行哪个处理程序.

mar*_*rko 6

之间的区别IRQFIQ进入权的方式回到ARM的初期,当它由橡果设计.始终如此,该IRQ线路连接到一个中断控制器,该控制器将大量中断源复用在一起.这正是所有现代ARM中发生的情况

FIQ背后的基本原理是提供具有最高优先级的极低延迟响应(它可以安全地抢占IRQ处理程序).相对大量的影子寄存器有助于编写处理程序,将处理程序的状态存储在CPU寄存器中而不是访问堆栈.

影子寄存器几乎与APCS常用于函数调用的设置相反,因此在C中编写处理程序将导致最多8个非阴影寄存器的推送和最终弹出.任何类型的中断解复用都会消除FIQ可能带来的任何性能优势.

所有这些意味着使用FIQ非常专业的应用程序只有一个好处,在这些应用程序中,一个中断设备需要真正的实时中断响应,并且您愿意在汇编程序中编写处理程序.您还将了解如何与系统的其余部分同步 - 其中一些将依赖于禁用IRQ以保持数据同步.