Azure Sphere デバイスの Power Down 状態を管理する

高レベルの Azure Sphere アプリケーションでは、電源管理 API を使用して、デバイスを Power Down 状態にすることができます。 電源ダウン状態は、デバイスが完全に電源オフされる以外に可能な最小の電源状態です。 デバイスは、次の 2 つのイベントのいずれかで起動できます。

  • WAKEUP ピンをトリガーする入力信号の到着。
  • 指定された時間の経過。

この機能を使用するには、次の操作を行う必要があります。

  1. ハードウェアを構成します。
  2. アプリケーション マニフェストPowerControls 機能の ForcePowerDown 値を宣言します。
  3. Power Management API からPowerManagement_ForceSystemPowerDownを使用します。

電源ダウン状態

Power Down 状態には、次の特性があります。

  • リアルタイム クロック (RTC) 以外はすべて電源オフです。 つまり、すべての接続、RAM、フラッシュ、CPU コアなどがすべて電源オフになります。
  • 状態の保持はありません。 Power Down からの復帰は、コールド ブートと同じです。
  • Power Down からのスリープ解除は、リアルタイム クロック アラームが起動したとき (時間ベースのウェイクアップ)、または WAKEUP ピンが低く引っ張られたとき (イベント ベースのウェイクアップ) のいずれか早い方の場合に発生します。

メモ

DAA (顧客) 証明書は永続的に格納されます。 その結果、通常の 24 時間更新の間に発生するコールド ブートまたは電源ダウンのたびに、デバイスは新しい証明書の AS3 に接続しません。 これにより、消費電力とクラウドへの接続に必要な時間の両方が短縮されます。

MT3620 の詳細

MediaTek MT3620 の電源ダウンに関する考慮事項は 、MT3620 ハードウェア ノートに記載されています。

強制的に電源を切り、更新する

警告

このセクションのガイダンスに従わないと、デバイスがアプリケーションまたは OS の更新プログラムをフェッチできず、回復が必要になる可能性があります。 ForcePowerDown を使用する前に、注意深くお読みください。

ForcePowerDown と ForceReboot の両方で、アプリケーションはいつでもデバイスの電源を切ることができるため、ForcePowerDown または ForceReboot を使用するときに、デバイスが更新プログラムを定期的にチェックできることを確認する必要があります。 このシナリオで更新プログラムをチェックしやすくするために、更新プログラムに関連するシステム イベント通知を導入し、更新プロセスに関する情報をアプリケーションに提供することで、アプリがデバイスの電源を切るタイミングに関する情報に基づいた意思決定を行うことができます。 関連する利用可能なシステム イベント通知は次のとおりです。

  • SysEvent_Events_NoUpdateAvailable: 更新プログラムのチェックが完了し、OS またはアプリケーションの更新プログラムは使用できません。
  • SysEvent_Events_UpdateStarted: OS またはアプリケーションの更新プログラムのダウンロードが開始されました。 このイベントの後に、更新プログラムが完全にダウンロードされ、インストールの準備ができたときに、 SysEvent_Events_UpdateReadyForInstall イベントが続きます。 使用可能な更新プログラムがない場合は、このイベントの代わりに SysEvent_Events_NoUpdateAvailable が送信されます。
  • SysEvent_Events_UpdateReadyForInstall: 更新プログラムのダウンロードが完了し、再起動時に適用する準備ができました。

ForcePowerDown を使用するアプリケーションは、デバイスの更新状態に注意する必要があります。 ForcePowerDown を使用するアプリケーションは、常にこれらのイベントに登録し、アプリによって更新が無期限に延期されないように注意する必要があります。

ForcePowerDown を使用するアプリケーションに更新チェックを適切にビルドする方法を示す サンプル アプリケーションを提供します。 ForcePowerDown を使用してアプリを開発するときは、このサンプルから始めておくことを強くお勧めします。

アプリケーションの終了

Power Down 要求が行われた後、SIGTERM シグナルがアプリに送信されます。 アプリがシグナルを処理する場合、クリーンアップ作業を行うには最大 2 秒かかります。 それ以外の場合、アプリはすぐに終了します。 シグナルを適切に処理する方法など、詳細については、「 更新プログラムのアプリの終了」を参照してください。

サンプル アプリケーション

Power Down サンプル アプリケーションでは、ForcePowerDown を適切に使用して電力消費を削減しながら、デバイスが OS とアプリの更新プログラムのチェックに定期的に目を覚まし続ける方法を示します。

このサンプルでは、LED を赤色に点滅させ、デバイスの起動中にアプリで実行する必要がある作業または "ビジネス ロジック" を表し、指定した時間デバイスの電源を切ります。 Nth Power Down/wake サイクルごとに、アプリは、ビジネス ロジックの完了後にすぐに電源を切るのではなく、デバイスの起動時間を長く維持して更新プログラムをチェックします (この場合は赤い LED が点滅します)。 電源を切る前に更新が完了したことを確認するために、サンプル アプリでは、更新プログラムのチェック/ダウンロードの状態をアプリに通知する 3 つのシステム イベント通知 (SysEvent_Events_NoUpdateAvailable、SysEvent_Events_UpdateStarted、SysEvent_Events_UpdateReadyForInstall) を使用します。 サンプル アプリでは、RDB の消費電流を測定して、デバイスが Power Down に入っていることを検証する方法も示しています。