【发布时间】:2016-05-16 07:20:34
【问题描述】:
不确定是否有类似的问题。我试图回读但找不到任何内容,所以在这里。
在我使用 ARM Cortex-A9(带 GIC 的双核)的裸机应用程序中,一些中断源是 4 个 FPGA 中断(比如 IRQ ID 58、59、60、61),它们具有相同的优先级和这个想法是所有同时在运行时连续触发。我可以说中断处理程序可能符合条件,但不会很长。
所有中断都会触发并被 GIC 检测到,并且都标记为 PENDING。问题是,只有两个较高 ID 的中断(58、59)由 CPU 处理,而其他两个中断。一旦 58 或 59 完成,它们的源将再次触发并一遍又一遍地抢占 CPU。我的其他中断无限期地被饿死了。
我玩弄了优先级,将更高的中断分配给 60 和 61。果然,60 和 61 触发并由 CPU 处理,但 58 和 59 被饿死了。所以这确实是一个饥饿的问题。
有没有办法离开这里,使得其他两个仍然会被处理,因为它们的触发率?
【问题讨论】:
标签: arm interrupt interrupt-handling