【问题标题】:arm7tdmi IRQ and FIQ priorityarm7tdmi IRQ 和 FIQ 优先级
【发布时间】:2012-03-09 11:28:12
【问题描述】:

您好,我目前正在使用在“裸机”上运行的 AT91SAM7X256。我已经彻底阅读了数据表和架构手册,考虑到这一点,我得出的结论是 FIQ 的优先级高于 IRQ,因此 FIQ 不应被 IRQ 抢占

但在实践中,我注意到 IRQ 暂停了我的 FIQ 处理程序的执行,即使我没有触及 CPSR 中的 F 位。假设不应该暂停 FIQ 以服务 IRQ 是否不正确?

我需要做些什么来确保我的 FIQ 服务程序不会被中断?

谢谢你

【问题讨论】:

    标签: assembly arm irq arm7


    【解决方案1】:

    当您进入 FIQ 处理程序时,ARM 内核通过设置 CPSR 中的“I”和“F”位自动禁用更多中断,包括 FIQ 和 IRQ。这让您感觉没有任何东西可以抢占 FIQ。但是 SW 可以覆盖这种行为!所以我猜你的代码的某些部分正在触摸 CPSR 并重置“I”位。因此,即使您的 FIQ 正在运行,也可能会触发 IRQ 中断。

    补充上面的解释,FIQ 看起来特别的原因是当输入一个 IRQ 处理程序时,只有通过禁用更多的 IRQ 来设置“I”位。 'F' 位未设置,因此进一步的 FIQ 可以中断正在运行的 IRQ 处理程序,而无需 SW 干预。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-07
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      相关资源
      最近更新 更多