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

时间:2013-05-03 04:07:00

标签: arm microcontroller

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

2 个答案:

答案 0 :(得分:5)

几年后,我发现这个问题很受欢迎,同时我也从经验中理解了答案。

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

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

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

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

答案 1 :(得分:3)

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

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