ARM7嵌套中断

ARM7嵌套中断,arm,interrupt,interrupt-handling,irq,arm7,Arm,Interrupt,Interrupt Handling,Irq,Arm7,我一直在读经典的ARM7微控制器。有两种类型的中断:IRQ和FIQ。FIQ允许更快的中断处理,并具有比IRQ更高的优先级 它指出现代ARM版本具有嵌套中断 这实际上是否意味着ARM 7只能处理分配给MCU的2个中断,例如来自外部源的2个边缘触发中断,而不是更多 提前感谢ARM7最有可能与矢量中断控制器一起使用,矢量中断控制器是一个与内核紧密耦合的组件,但没有与集成到异常模型中的Cortex-M(ARMv6-M、ARMv7-M和ARMv8-M)一起使用或集成的现代中断控制器紧密耦合,或A类中断控制

我一直在读经典的ARM7微控制器。有两种类型的中断:IRQ和FIQ。FIQ允许更快的中断处理,并具有比IRQ更高的优先级

它指出现代ARM版本具有嵌套中断

这实际上是否意味着ARM 7只能处理分配给MCU的2个中断,例如来自外部源的2个边缘触发中断,而不是更多


提前感谢

ARM7最有可能与矢量中断控制器一起使用,矢量中断控制器是一个与内核紧密耦合的组件,但没有与集成到异常模型中的Cortex-M(ARMv6-M、ARMv7-M和ARMv8-M)一起使用或集成的现代中断控制器紧密耦合,或A类中断控制器

这种老式的矢量中断控制器将提供多个输入,具有屏蔽和优先级。它将向core发出一个IRQ输入,并提供一个core可以作为公共中断处理程序的一部分读取的地址,然后将其分支到特定于异常的处理程序。请注意,在体系结构级别,只有一个IRQ中断,其中包含一个硬件辅助跳转表

ARM7还允许一种更简单的中断体系结构——具体的实现是为应用程序定制的。最简单的(可能不常见的)是将所有或所有中断放在一起,并要求中断处理程序读取每个外围设备的中断状态,以发现挂起的是什么。这在今天看来可能非常粗糙,但在某种程度上仍然可以做到-您可以为每个I/O外围设备指定Rx和Tx中断,但将所有错误/溢出中断合并到一起(因为任何这些意味着游戏结束)


软件和专用硬件处理功能之间的权衡就是一个例子,说明随着时间的推移,不断变化的实施成本如何影响设计决策。

,,都是一样的;我不知道为什么它们不是同义词。请参阅:。FIQ是一个完全独立的结构,用于几个不同的目的。就像任何其他处理器(包括当前arms)一样,您可以将一个中断多路复用为任意多个中断,并且有空间为其创建逻辑。使用某种形式的中断控制器来实现这一点。ARM7最初/不一定使用/仅限于MCU。看看raspberry pi(基于ARM11),看看它有多少中断为IRQ和FIQ线路供电……显然,超过2.x86的处理器在很长一段时间内只有一个中断,就像许多其他处理器一样,中断控制是在外部完成的。(不包括一个中断中的NMI)我不明白的是,如果没有矢量化中断控制器,这是从我对ARM7没有/没有的理解来看的,我们如何处理多个中断,超过2@Engineer999我对ARM7的理解是,所有IRQ中断都使用相同的向量。在收到中断后,我们的ISR必须检查硬件寄存器,看看究竟是什么导致了中断,然后继续?对于向量化中断控制器,每个中断都使用一个专用的向量?这是否也意味着在ARM7上,中断处理程序必须是可重入的?谢谢,但我认为即使是ARM7中的向量化实现也共享一个公共处理程序(专用向量地址输入后来出现)。是的,您可能会找到需要重新进入处理程序的理由。我记得这是不容易实现的,即使对于验证代码也是如此。