【问题标题】:ARM Cortex M NonMaskable Interrupt is NonClearable also?ARM Cortex M NonMaskable 中断也是 NonClearable 吗?
【发布时间】:2017-09-25 22:25:27
【问题描述】:

我正在使用具有 ARM Cortex M3 内核的非常定制的非公共安全 IC。

如果发生硬件安全违规,该 IC 会触发 NMI 中断,所以没关系,我正在做任何我需要违规的事情。

但它总是在发生违规时一次又一次地进入NMI Handler。

我们可能需要清除中断挂起标志不确定但应该直接清除。 因为 SCB->ICSR bit31 表示“进入处理程序会清除该位为 0”。

我还尝试使用 NVIC_ClearPendingIRQ() 清除挂起标志,但它不接受负 IRQ 值,而 NMI 为 -14。

我尝试手动设置 NVIC->ICPR[0] = (1

触发通用 Cortex M NMI 中断的自定义 IC 和自定义外部事件可能是 IC 的特定情况,但 NMI 是否有任何限制,例如“您无法清除 NMI 挂起标志,您必须将其重置 bla bla “?

谢谢

【问题讨论】:

  • 与任何中断一样,您需要从源中清除它,否则它可能会重新触发,具体取决于中断管理器/处理程序 cpu 内核等的设计......
  • 这将在你的 IC 部分,而不是 arm IP。

标签: arm interrupt-handling cortex-m3


【解决方案1】:

NMI 的行为就像这里的任何其他中断一样。

来自Cortex-M Generic Device User Guide

  • 对于电平敏感中断,当处理器从 ISR 返回时,NVIC 对中断信号进行采样。如果信号是 断言,中断的状态更改为挂起,这可能 使处理器立即重新进入 ISR。否则,该 中断状态变为非活动状态。
  • 对于脉冲中断,NVIC 继续监视中断信号,如果这是脉冲的,则中断状态变为 待定和活跃。在这种情况下,当处理器从 ISR 中断状态变为挂起,这可能会导致 处理器立即重新进入 ISR。

这是说除非你清除产生中断请求的硬件状态,否则中断将再次挂起。

清除中断挂起状态仅允许您在请求已被清除时禁用 IRQ。

有关您的安全设备如何运行的详细信息,您需要咨询您的供应商。他们可能对您在这里讨论他们的产品不满意...

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 2015-03-10
    • 2015-04-20
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多