私は S32K311を使用して電力最適化ベアメタルアプリケーションに取り組んでいます。
私たちのシステムは 10ミリ秒ごとに定期的なタスクを実行し、残りの時間はアイドル状態のままです。
現在、アイドル時の電力消費量を削減するための2つの異なる戦略を検討しています。
オプション1 — WFIのみ:
MCUをRUNモードのままにして 、何もすることがないときはメインループの最後に__WFI () を使用してください。
while (1) {
if (task_ready) {
DoSomething();
}
__WFI(); // Sleep during idle
}このアプローチでは、PLLと高速クロックはアクティブのままですが、アイドル時にはCPUコアをゲートします。
オプション 2 – ダイナミック VLSR/実行モードの切り替え:
アイドル時には MCU を VLSR モード (FIRC 3MHz) に切り替え、タスクの準備ができたら RUN モード (PL) に戻します。
while (1) {
if (task_ready) {
ChangeToRunMode();
DoSomething();
} else {
ChangeToVLSRMode();
}
}これにより、アイドル時のクロック ドメイン周波数は低下しますが、MC_ME とクロック ドメイン スイッチングが頻繁に発生します。
RUNモードとVLSRモードを数ミリ秒ごとに切り替えるのは実用的で安全ですか ?
頻繁なモード遷移のオーバーヘッドが、省電力のメリットを上回る可能性はありますか?
NXPは、10ミリ秒の周期的なタスクスケジューリングでは、ある方法を他の方法よりも推奨しますか?
私の主な目標は、システムが不安定になったり、待ち時間が長すぎたりすることなく、最大限の省電力を達成することです。
これについての技術的な意見をいただければ幸いです。
よろしくお願いいたします!
こんにちは、RUNモードとSTANDBYモードの間の移行に関するRTDサポートがあるかどうか尋ねたいです。
そのようなサポートがあれば、PITを使用してこの移行を適切に実装する方法を示すサンプルプロジェクトまたは構成を受け取ることはできますか?
よろしくお願いします!