WFE指令是如何工作的? 据我所知,它会使处理器等待IRQ / FIQ / 事件等...
但当你收到一个IRQ时,irq_fault_handler向量是否会执行中断或在WFE指令后执行?
WFE指令是如何工作的? 据我所知,它会使处理器等待IRQ / FIQ / 事件等...
但当你收到一个IRQ时,irq_fault_handler向量是否会执行中断或在WFE指令后执行?
WFE的概念与
while (!event_has_occurred) /*do nothing*/;
除了关闭CPU而非运行紧密循环之外,它与其他操作相同。
有几件事情可以中断WFE,包括不仅是中断,还有来自另一个CPU的显式唤醒事件(在多核处理器中)。
如果在WFE期间发生中断,则通常会发生以下事情。 处理器切换到IRQ或FIQ模式,跳转到IRQ或FIQ处理程序,并将WFE指令的地址(加上8的常规偏移量)放置在lr
中。
如果CPU被明确唤醒事件唤醒,则执行将在WFE之后的下一条指令进行。
将WFE视为仅在发生某些外部事件时才完成的非常长的NOP。
WFE
不会从外部SDRAM等处获取信息,并且可以节省电力;许多设计都使用此功能进入不同的睡眠状态。许多程序员关心功耗;但是这方面取决于SOC。从执行角度来看,“WFE”就像是一个扩展的“NOP”。 (+1) - artless noise