MA-S1xx シリーズでは、MA-E3xx シリーズで対応していた Standby モードに加えて、電源 OFF 状態で待機する off モードが利用できるようになりました。
これにより、待機時の消費電力の大幅な削減が可能になっています。
shutdown された状態で待機し、対応した入力があった場合に起動するという動作をします。
OS の起動シーケンスすべてが走りますので、起動する頻度が高い場合には不向きです。
1 時間に 1 回など、低頻度でバッテリー駆動する、というような用途に向いています。
※ 電源コードを抜いて電源供給を断ってしまうと起動することはできません。
対応している入力には下記があります。
No. | GPIO Name | 内容 |
---|---|---|
1 | BU_DI0 | DI0 変化検知 |
2 | BU_DI1 | DI1 〃 |
3 | BU_DI2 | DI2 〃 |
4 | BU_DI3 | DI3 〃 |
5 | BU_EXT_RTC_ALARM | 外付け RTC ALARM |
6 | BU_MSP430_IRQ | マイコン割込1) |
7 | BU_XIO_WAKEUP | 拡張ボード割込2) |
8 | - | OPT スイッチ割込3) |
DI の変化のエッジ(立ち上がり/立ち下がり)を設定しておくことで、該当 DI が変化した場合に起動することができます。
起動後は無効化されていますので、sysfs でエッジの極性を設定する必要があります。
root@gemini:~# cd /sys/class/gpio/BU_DI0
root@gemini:/sys/class/gpio/BU_DI0# cat wakeup_pol none <--- 無効化されている
root@gemini:/sys/class/gpio/BU_DI0# echo falling > wakeup_pol root@gemini:/sys/class/gpio/BU_DI0# cat wakeup_pol falling <--- 立ち下がりエッジに設定された root@gemini:/sys/class/gpio/BU_DI0#
外付け RTC にアラームを設定し、指定時刻になったら起動するように設定することができます。
注意点としては、アラームには 日・時・分 しか設定できないので、2ヶ月先のような指定は指定はできません。
また、電源 OFF 中は時刻補正ができませんので、あまり先のアラームを設定すると起動時刻にズレが生じます。
root@gemini:~# rtcwake -d rtc1 -m off -u -t `date +%s -d "2020-08-24 16:30:00"` rtcwake: wakeup from "off" using rtc1 at Mon Aug 24 07:30:01 2020 root@gemini:~# Stopping Session c1 of user root. Stopping Session c2 of user root. [ OK ] Removed slice system-modprobe.slice. [ OK ] Stopped target Multi-User System. [ OK ] Stopped target Login Prompts. [ OK ] Stopped target Timers. ... shutdown [ 1917.951871] systemd-shutdown[1]: Failed to finalize file systems, loop devices, ignoring [ 1918.008126] reboot: Power down AT91Bootstrap 3.9.1-00029-gc1b347d (Sat Jun 27 07:17:07 JST 2020) ACT8865: changed nRSTO trigger to "OSC OK" SF: Got Manufacturer and Device ID: 0xbf 0x26 0x41 0xbf 0x26 SF: Copy 0x80000 bytes from 0x10000 to 0x26f00000 SF: Done to load image
不要な機能を省いた軽量化 Kernel + Alpine Linux を使用することで、15 秒ほどで起動するシステムを作ることも可能です。
これを使用することで、比較的高頻度で Power off モードを使用することも可能になります。
毎回 Linux を起動すると起動・終了に時間がかかり、高頻度でこのモードを利用すると待機時の低消費電力が無駄になってしまいます。
そのため、Linux を必要としないような軽い処理は RTOS(NuttX) で処理を行い、AWS へ通信をするなどの高度な処理をするときだけ
Linux を起動する、というような使い方も可能です。
(将来拡張)
Linux を起動せず、Barebox(ブートローダー) で処理をしてしまうモードです。
NuttX 利用のケースと同様、通信など高度な処理が必要な場合に Linux を起動して処理を行います。