0

如果一个中断服务程序足够大,以至于 MCU 在另一个(相同)中断发生之前无法处理它,并且中断控制器是非嵌套的,那么是否有最大数量的中断可以保持挂起?以 LPC2368 为例,数据表仅列出以下内容

高级向量中断控制器 (VIC),最多支持 32 个向量中断

这是否意味着如果我继续增加中断发生的频率,CPU 将丢弃第 33 个中断,并且 CPU 无法在另一个中断发生之前处理 ISR

4

1 回答 1

0

这不是矢量控制器的工作方式。矢量控制器消除了中断源的歧义;将多个中断源多路复用到 CPU 的一条线上。中断多路复用器的常见示例是 intel 8259、ARM 通用中断控制器 (GIC) 和 intel APIC。

中断激活通常由边缘或总线协议定义。边缘协议意味着从未断言到断言的转换会向 CPU 产生中断事件。这需要很少的硬件支持,因为断言中断的外设只需向向量中断控制器发出一个脉冲。缺点是边缘没有内存,因此您无法在多个源之间实际共享边缘中断,这可能需要额外的硬件来消除源的歧义。

相比之下,电平中断在中断条件有效时断言,在条件无效时取消断言;因此多个中断源可以连接到单个中断(逻辑上是线或),因此中断将持续影响操作系统,直到条件得到解决。

现代的大型系统显然更喜欢电平中断。较小的系统可能更喜欢边缘中断以降低系统成本。

于 2020-12-07T02:49:29.373 回答