ARM 7 嵌套中断混乱
ARM 7 nested interrupts confusion
我一直在阅读经典的 ARM 7 微控制器。有两种类型的中断:IRQ 和 FIQ。 FIQ 允许更快的中断处理并具有比 IRQ 更高的优先级。
它指出现代 ARM 版本具有嵌套中断。
这是否实际上意味着 ARM 7 只能处理分配给 MCU 的 2 个中断,例如来自外部源的 2 个边沿触发中断,仅此而已?
提前致谢
ARM7 很可能与矢量中断控制器一起使用 - 一个与内核紧密耦合的组件,但不像使用或集成 Cortex-M (ARMv6-M) 的现代中断控制器那样紧密耦合, ARMv7-M 和 ARMv8-M) - 集成到异常模型或 A-class 中断控制器中。
这种较旧类型的矢量中断控制器将提供多个输入、屏蔽和优先级。它会向内核发出一个 IRQ 输入,并提供一个地址,内核可以将其作为通用中断处理程序的一部分读取 - 然后分支到异常特定处理程序。请注意,在体系结构级别,只有一个 IRQ 中断 - 包含硬件辅助跳转 table.
ARM7 还允许 更简单的中断架构 - 为应用程序定制的确切实现。最微不足道的(可能不常见的)是将所有中断放在一起,并要求中断处理程序读取每个外设的中断状态以发现待处理的内容。这在今天看起来可能很粗糙,但在某种程度上仍然是这样做的——你可以为每个 I/O 外围设备分配 Rx 和 Tx 中断,但将所有 error/overflow 中断组合起来(因为任何这些都意味着game-over).
软件和专用硬件处理功能之间的 trade-off 是不断变化的实施成本如何影响设计决策的一个例子。
我一直在阅读经典的 ARM 7 微控制器。有两种类型的中断:IRQ 和 FIQ。 FIQ 允许更快的中断处理并具有比 IRQ 更高的优先级。
它指出现代 ARM 版本具有嵌套中断。
这是否实际上意味着 ARM 7 只能处理分配给 MCU 的 2 个中断,例如来自外部源的 2 个边沿触发中断,仅此而已?
提前致谢
ARM7 很可能与矢量中断控制器一起使用 - 一个与内核紧密耦合的组件,但不像使用或集成 Cortex-M (ARMv6-M) 的现代中断控制器那样紧密耦合, ARMv7-M 和 ARMv8-M) - 集成到异常模型或 A-class 中断控制器中。
这种较旧类型的矢量中断控制器将提供多个输入、屏蔽和优先级。它会向内核发出一个 IRQ 输入,并提供一个地址,内核可以将其作为通用中断处理程序的一部分读取 - 然后分支到异常特定处理程序。请注意,在体系结构级别,只有一个 IRQ 中断 - 包含硬件辅助跳转 table.
ARM7 还允许 更简单的中断架构 - 为应用程序定制的确切实现。最微不足道的(可能不常见的)是将所有中断放在一起,并要求中断处理程序读取每个外设的中断状态以发现待处理的内容。这在今天看起来可能很粗糙,但在某种程度上仍然是这样做的——你可以为每个 I/O 外围设备分配 Rx 和 Tx 中断,但将所有 error/overflow 中断组合起来(因为任何这些都意味着game-over).
软件和专用硬件处理功能之间的 trade-off 是不断变化的实施成本如何影响设计决策的一个例子。