ARM の Event と Interrupt の違い
ARM (Coretex-M4とか) の基本命令に wfi と wfe というのがある、いずれもCPUを省電力モードにして、
Hardware から wakeされるのを待つ命令であるが、wfiはWait For Interrupt (割り込み待ち)wfe はWait ForEvent で
それぞれ、Interrupt と Event という別の概念を参照するのだが、それらはどう違うのか・・・・というのを
検索すると、(英語で「私には違うようにしか見えないから説明しないよ」的な)まともでない説明ばかりに
ヒットするのに気づいたので書いておく。
Event は、 WFE命令でCPUが省電力モード(要するにスリープ)しているときだけに意味がある。
ハードウェアから電気的にトリガされたら、省電力モードから復帰するだけのしくみである。
電気的にトリガされたら、なんの信号でWakeさせるのかは、SoC の設計しだいなので、ARM じゃなくて実装メーカのDatasheetを確認。
Interrupt はスリープ中だろうが、通常状態だろうが、ハードウェアから電気的にトリガされたら指定のプログラム
を実行するしくみ。
そのInterrupt ついでにWake してしまえというのがWFIという命令。