本文介绍了FIQ&安培;中断服务例程 - ARM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来武装和放大器;有相关的IRQ和放一些杜省; FIQ。请尝试澄清这些。结果
有多少FIQ和放大器的数量; IRQ通道手臂有哪些?结果
我们可以写什么号码的处理程序为每个通道?结果
此外,如果我们能为单中断通道注册多个操作臂如何来知道要运行的处理程序。

I am new to arm & have some doubs related to IRQ & FIQ. Please try to clarify these.
How many number of FIQ & IRQ channel arm have ?
And what number of handlers can we write for each channel ?
Also if we can register multiple handler for single interrupt channel how arm comes to know which handler to run.

推荐答案

IRQ 之间的区别和 FIQ 进入正确的方式回到ARM的初期,当它通过橡果国际的设计。它总是,该 IRQ 线被连接到中断控制器多路复用大量的中断源一起的情况。这是precisely什么在所有现代兵种发生

The distinction between IRQ and FIQ goes right the way back to early days of ARM when it was designed by Acorn. It was always the case that the IRQ line was attached to an interrupt controller that multiplexed a large number of interrupt sources together. This is precisely what happens in all modern ARMs

在FIQ背后的理由是提供最大优先级的极低的延迟反应(它可以安全地pre抢先 IRQ 处理)。较为大量的影子寄存器便于储存处理程序的状态,CPU寄存器和不打堆写作处理程序。

The rationale behind the FIQ was to provide an extremely low latency response with maximum priority (it can safely pre-empt the IRQ handler). The comparatively large number of shadow registers facilitate writing handlers that store the handler's state in CPU registers and not hitting the stack.

影子寄存器几乎相反设置为那些函数调用常用的APCS,所以在写C处理,会造成一推,多达8个非影子寄存器的最终流行。有任何中断解复用抹了任何性能优势 FIQ 有可能给。

The shadow registers are almost of the opposite set to those commonly used by APCS for function call, so writing handlers in C, would cause a push and eventual pop of up to 8 non-shadowed registers. Having any kind of interrupt demultiplexing wipes out any performance advantage that FIQ might have given.

所有这一切都意味着,只有真正使用任何好处 FIQ 对于需要一个中断的设备真的很难实时中断响应非常特殊的应用程序,以及你愿意写你的处理程序汇编。你也可以留下工作如何与系统的其他部分同步 - 其中一些将依靠禁用 IRQ 来保持同步的数据。

All of this means that there is only really any benefit in using FIQ for very specialised applications where really hard-real time interrupt response is required for one interrupting device, and you're willing to write your handler in assembler. You'll also be left with working out how to synchronise with the rest of the system - some of which would rely on disabling IRQ to keep data synchronised.

这篇关于FIQ&安培;中断服务例程 - ARM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-31 01:43