我正在使用一个非常定制的非公共安全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 回答
NMI就像其他任何中断一样 .
来自Cortex-M Generic Device User Guide:
这是说除非你清除产生中断请求的硬件状态,否则中断将再次挂起 .
清除中断暂挂状态仅允许您在已经清除请求时禁用IRQ .
有关安全设备如何运行的详细信息,您需要与供应商联系 . 他们可能对你在这里讨论他们的产品感到不满......