ARM Cortex中的事件和中断之间有什么区别?

nra*_*aud 6 microcontroller arm

我在想,因为它似乎有所不同(例如WFI和WFE是单独的指令),但我无法确切地指出这一点.

nra*_*aud 7

几年之后,我看到这个问题很受欢迎,同时我通过经验理解答案.

事件被实现为进入MCU ARM内核的线路,以及内存总线(实际上内核也可以生成事件,线路是单向的,点对点专用,这不是总线),因此外设或其他内核可以引发即使MCU中没有总线仲裁器(我猜它们的总线频率也是时钟),这些线路可以实时告诉内核到任何内存总线管理或指令执行之外的内核.

那些事件然后由内核处理,并且通过提升中断(更准确地说,将线路插入NVIC,可以将其解释为中断),通过翻转一点来使事件进入程序世界的一种方式核心寄存器之一,通过重新启动核心时钟,或者可以将它们插入DMA外设以启动或停止传输.整个逻辑部分专用于核心中的事件管理,掩盖它们,将它们用作异常源或DMA动作源.

事件列表由MCU实现者决定,他们可以决定使用NVIC,DMA或将它们连接到PLD逻辑(某些cypress MCU可以触发DMA或来自PLD部分的中断).

处理事件的绝对最常见的方法是忽略它,第二种最常见的方法是发送异常来执行某些代码.


Nic*_*rth 3

这两个指令均用于电源管理/节省。虽然WFI应该暂停核心直到发生中断或异常,WFE但也会等待可以由SEV指令发送的“事件”。

指令执行到哪个级别是由实现定义的,它们可能只是 NOP。例如,您不能相信 WFE 返回时确实发生了中断或“事件”。

  • @nraynaud:尽管如此,答案包含了您问题的答案。事件不是中断,但中断就是事件。 (2认同)