シャットダウンモードへ遷移するには、poweroffコマンド、またはaiot-alarm-poweroffコマンドを実行します。
poweroffコマンドを実行してシャットダウンモードに遷移した場合、電源の切断・接続のみでアクティブモードに遷移が可能です。
poweroffコマンドの実行例を次に示します。
[armadillo ~]# poweroff
[ OK ] Stopped target Timers.
[ OK ] Stopped Daily man-db regeneration.
[ OK ] Stopped Daily rotation of log files.
※省略
[39578.876586] usb usb1: USB disconnect, device number 1
[39578.882754] ci_hdrc ci_hdrc.0: USB bus 1 deregistered
[39578.888133] reboot: Power down
8.2.2. aiot-alarm-poweroffコマンド
aiot-alarm-poweroffコマンドを実行することで、シャットダウンモードに遷移後、
RTCのアラーム割り込みをトリガで起床(アクティブモードに遷移)することができます。
なお、RTC を起床要因に使って間欠動作させる場合は、 「RTC」 を参考に、必ず RTC の日時設定を行ってください。
| |
---|
RTC 未設定によるエラーが発生した場合、シャットダウンモードへの遷移は行われません。 |
シャットダウンモードに遷移し、300秒後にアラーム割り込みを発生させるには、次のようにコマンドを実行します。
[armadillo ~]# aiot-alarm-poweroff +300
aiot-alarm-poweroff: alarm_timer +300 second
現在時刻からの経過秒数は180秒以上を指定する必要があります。
aiot-sleepコマンドを実行することで、スリープモードに遷移することができます。
スリープモードからの起床(アクティブモードに遷移する)条件は、aiot-sleepコマンドを実行する前にaiot-set-wake-triggerコマンドで事前指定します。
ユーザースイッチによる起床は標準で有効になっています。また、起床条件はOR条件での設定が可能です。
aiot-set-wake-triggerコマンドの書式と設定可能なパラメータを以下に示します。
表8.1 aiot-modem-control TRIGGER一覧
TRIGGER | 説明 |
---|
usb | CON5(USB ホストインターフェース)にUSBデバイスを挿抜したとき |
uart3 | CON3(シリアルインターフェース /dev/ttymxc2)にデータ受信があったとき |
rs485 | UART5(シリアルインターフェース /dev/ttymxc4)にデータ受信があったとき |
gpio | GPIO 割り込みが発生したとき |
sw1 | SW1 が押下されたとき |
ain [] | アナログ入力電圧閾値割り込み発生時 |
コンソール(/dev/ttymxc2)から入力があった場合にスリープモードから起床するには、次に示すコマンドを実行します。
[armadillo ~]# aiot-set-wake-trigger uart3 enabled
aiot-set-wake-trigger: uart3 enabled
[armadillo ~]# aiot-sleep
aiot-sleep: Power Management suspend-to-ram
[ 1767.050404] PM: suspend entry (deep)
[ 1767.054019] PM: Syncing filesystems ...
[ 1767.236546] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full -
flow control rx/tx
[ 1767.428714] done.
[ 1767.431262] Freezing user space processes ... (elapsed 0.001 seconds) done.
[ 1767.439582] OOM killer disabled.
[ 1767.442834] Freezing remaining freezable tasks ... (elapsed 0.001
seconds) done.
[ 1767.451485] Suspending console(s) (use no_console_suspend to debug)
※ コンソールに入力
[ 1767.567686] OOM killer enabled.
[ 1767.570875] Restarting tasks ... done.
[ 1767.606048] PM: suspend exit
aiot-sleep: change mode CPU Idle
RTCアラーム割り込みでの起床を行う場合、パラメーター設定が異なります。
なお、RTC を起床要因に使って間欠動作させる場合は、 「RTC」 を参考に、必ず RTC の日時設定を行ってください。
現在時刻からの経過秒数 は60秒以上を指定する必要があります。
300秒後にRTCアラーム割り込みを発生させ、スリープモードから起床させるコマンド実行例を以下に示します。
[armadillo ~]# aiot-set-wake-trigger rtc enabled +300
aiot-set-wake-trigger: rtc enabled
aiot-set-wake-trigger: alarm_timer +300 second
[armadillo ~]# aiot-sleep
aiot-sleep: Power Management suspend-to-ram
[ 1767.050404] PM: suspend entry (deep)
[ 1767.054019] PM: Syncing filesystems ...
[ 1767.236546] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full -
flow control rx/tx
[ 1767.428714] done.
[ 1767.431262] Freezing user space processes ... (elapsed 0.001 seconds) done.
[ 1767.439582] OOM killer disabled.
[ 1767.442834] Freezing remaining freezable tasks ... (elapsed 0.001
seconds) done.
[ 1767.451485] Suspending console(s) (use no_console_suspend to debug)
※ 約300秒待つ
[ 1767.567686] OOM killer enabled.
[ 1767.570875] Restarting tasks ... done.
[ 1767.606048] PM: suspend exit
aiot-sleep: change mode CPU Idle
| |
---|
アラーム割り込みは分単位(毎分00秒)で発生します。そのため、300秒(5分)を指定した場合、実際に割り込みが発生するまでの時間は5分00秒〜5分59秒の間となります。 |
すべての起床要因をクリアするには次に示すコマンドを実行します。ユーザースイッチによる起床設定は無効化できません。
[armadillo ~]# aiot-set-wake-trigger all disabled
aiot-set-wake-trigger: clear_all disabled
8.4. スリープ(SMS 起床可能)モードへの遷移と起床
aiot-sleep-smsコマンドを実行することで、スリープ(SMS 起床可能)モードに遷移することができます。
スリープモードからの起床(アクティブモードに遷移する)条件は、aiot-sleep-smsコマンドを実行する前にaiot-set-wake-triggerコマンドで事前指定します。
ユーザースイッチによる起床は標準で有効になっています。aiot-sleep-smsコマンドを実行した場合SMS受信による起床は強制的に有効になります。
また、起床条件はOR条件での設定が可能です。
aiot-sleep-smsコマンドの実行例を次に示します。
[armadillo ~]# aiot-sleep-sms
aiot-sleep-sms: Power Management suspend-to-ram
AT+CMGF=1
OK
AT^SIND="message",0
^SIND: message,0,0
OK
AT+CMGD=1,4
OK
AT+CMGL="ALL"
OK
[ 3508.609638] PM: suspend entry (deep)
^SIND: message,1,0
OK
[ 3508.613982] PM: Syncing filesystems ... done.
[ 3508.637946] Freezing user space processes ... (elapsed 0.001 seconds) done.
[ 3508.646276] OOM killer disabled.
[ 3508.649527] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[ 3508.658161] Suspending console(s) (use no_console_suspend to debug)
※ SMS受信
[ 1767.567686] OOM killer enabled.
[ 1767.570875] Restarting tasks ... done.
[ 1767.606048] PM: suspend exit
aiot-sleep: change mode CPU Idle
8.5. 状態遷移トリガにコンテナ終了通知を利用する
動作中のコンテナの終了をトリガに、省電力状態のモードへの遷移を行うことができます。
| |
---|
コンテナの終了契機は「/etc/atmark/containers/*.confファイルの set_command で指定したコンテナ起動時に実行するコマンド」のプロセスが終了した時」となります。
ファイルの詳細は 「コンテナの自動起動」 を参照してください。 |
遷移先の動作モードと起床条件は設定ファイルで指定し、
コンテナが終了すると指定した動作モードへ遷移、指定した起床条件が発生すると
省電力モードから復帰します。また、その際自動的にコンテナも開始します。
コンテナ終了時に遷移する動作モードと起床条件については、設定ファイル(/etc/conf.d/power-utils.conf)で指定します。
設定ファイルは下記の通り、 TARGET , MODE , WAKEUP を指定します。
[armadillo ~]# cat /etc/conf.d/power-utils.conf
TARGET='a6e-gw-container'
MODE='NONE'
WAKEUP='SW1', 'USB', 'UART', 'GPIO', 'SMS', 'RTC:60', 'AIN'
設定ファイルの概要を以下に示します。
表8.2 設定パラメーター
パラメーター名 | 意味 |
---|
TARGET | 状態遷移トリガの対象となるコンテナ名 |
MODE | 遷移先の動作モード |
WAKEUP | 起床条件 |
表8.3 遷移先の動作モード
モード名 | 設定値 |
---|
省電力・間欠動作OFF | NONE (初期値) |
シャットダウンモード | SHUTDOWN |
スリープモード | SLEEP |
表8.4 起床条件
起床条件 | 設定値 |
---|
RTC | RTC:[コンテナ終了からの経過秒数[]] |
SW1 押下 | SW1 |
GPIO 割り込み | GPIO |
USB デバイス接続 | USB |
UART データ受信 | UART |
SMS 受信 | SMS |
AIN [] | アナログ入力電圧閾値割り込み発生時 |
| |
---|
Cat.1 モデルで SMS 受信を起床条件に指定すると、間欠動作が正常に動作しません。SMS はデフォルトで起床条件に含まれているため、 Cat.1 モデルで間欠動作を実施する際は WAKEUP から削除してください。 |
以下は遷移する動作モードがシャットダウンモード、起床条件が RTC(300秒後起床) のパターンです。
なお、デフォルトでは省電力・間欠動作は OFF (MODE=NONE) となっています。
[armadillo ~]# vi /etc/conf.d/power-utils.conf
TARGET='a6e-gw-container'
MODE='SHUTDOWN'
WAKEUP='RTC:300'
設定ファイル(/etc/conf.d/power-utils.conf)変更後、変更内容を永続化するには図8.5「状態遷移トリガにコンテナ終了通知を利用する場合の設定値を永続化する」に示すコマンドを実行してください。
状態遷移トリガの対象はデフォルトでゲートウェイコンテナが指定されていますが、任意のコンテナを指定することも可能です。
ここでは、 "my_container" というコンテナを状態遷移トリガの対象にする場合の設定を記載します。
|
設定ファイル(/etc/conf.d/powerutils.conf)を編集します。
|
|
コンテナ名 my_container を指定します。
|
|
設定内容を永続化します。
|
|
コンテナの設定ファイル(/etc/atmark/containers/my_container.conf)を編集します。記載内容の詳細は「コンテナの自動起動」を参照してください。
|
|
コンテナの終了を検知するため、フックを設定します。
|
|
コンテナの設定内容を永続化します。
|