首页 文章

ARM Cortex M NonMaskable中断也是NonClearable?

提问于
浏览
0

我正在使用一个非常定制的非公共安全IC,它具有ARM Cortex M3内核 .

在hw安全违规的情况下,这个IC会触发一个NMI中断,所以它很好,我正在做我需要的任何违规行为 .

但是当发生违规时,它总是一次又一次地进入NMI Handler .

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

我还尝试使用NVIC_ClearPendingIRQ()清除挂起的标志,但是当NMI是-14时它不接受负的IRQ值 .

我试着手动设置NVIC-> ICPR [0] =(1 << 2);像制造商的例子(但制造商的例子重置NMI处理程序中的设备,这是不同的情况),但它不起作用 .

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

谢谢

1 回答

  • 1

    NMI就像其他任何中断一样 .

    来自Cortex-M Generic Device User Guide

    对于电平敏感中断,当处理器从ISR返回时,NVIC对中断信号进行采样 . 如果信号有效,则中断状态变为未决状态,这可能导致处理器立即重新进入ISR . 否则,中断状态变为非活动状态 . 对于脉冲中断,NVIC继续监视中断信号,如果是脉冲中断,则中断状态变为挂起和激活 . 在这种情况下,当处理器从ISR返回时,中断状态变为未决状态,这可能导致处理器立即重新进入ISR .

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

    清除中断暂挂状态仅允许您在已经清除请求时禁用IRQ .

    有关安全设备如何运行的详细信息,您需要与供应商联系 . 他们可能对你在这里讨论他们的产品感到不满......

相关问题