Armadilloフォーラム

Armadillo-IoT G3 のシャットダウン

y.nakamura

2017年1月25日 23時34分

中村です。

無意識に(いつもの癖で) shutdown -h now とやったら、、

systemd-shutdown[1]: Powering off.
imx2-wdt 30280000.wdog: Device shutdown: Expect reboot!
reboot: Power down

という表示がでて、IoT-G3の自身の電源がOFFになりました。
LANのLEDも消えています。
128秒以上経過しても勝手に起動することもありません。
が、SW1を押すと再起動してくれました。

haltで停止させた場合は、次のような表示で、
128秒くらい経過すると勝手に(WDTで)再起動します。

systemd-shutdown[1]: Halting system.
imx2-wdt 30280000.wdog: Device shutdown: Expect reboot!
reboot: System halted

マニュアルやフォーラムの投稿によると、
Armadillo-IoT G3ではhaltしたあと放置すると128秒後に
自動再起動してしまうという制約があるということでしたが、
shutdonw -h now を使うことで(U-Bootにパッチをあてて
WDTを無効化する方法以外で)、この制約はなくなった
(回避できる)ということで、いいのでしょうか?

このあたりの話です。
7.3.19. ウォッチドッグタイマー
http://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_prod…

大野さんのフォーラム投稿
https://armadillo.atmark-techno.com/forum/armadillo/2147

(フォーラムや更新情報の見落としがあるかもしれませんが・・・)

--
なかむら

コメント

古関です。

回答が遅くなってしまい申し訳ありません。

poweroff(shutdown -h now)とhaltよる挙動差となります。

poweroffコマンドやshutdown -h nowを実行すると、Linuxカーネルの終了後、i.MX7 Dual(CPU)の電源をOFFします。
その後、SW1を押すとi.MX7 Dual(CPU)の電源がONになりLinuxカーネルが起動します。
※ Linuxカーネル v3.14-x1-at7、ボード情報 v2.0以降で対応

haltコマンドはLinuxカーネルの終了は行いますが、i.MX7 Dual(CPU)の電源はOFFしません。

ウォッチドックタイマのキック(クリア)はLinuxカーネルにて定期的に行いますが、
haltをすると、Linuxカーネルが終了、i.MX7 Dual(CPU)の電源がONの状態となり、
ウォッチドックタイマのキック(クリア)ができず、ウォッチドックリセットがかかってしまい、結果リブートが起きます。

i.MX7 Dual(CPU)の仕様で、ウォッチドックタイマは一度動かすと止めることができないため、
Linuxカーネルの動作中はウォッチドックリセット時間は10秒で動作しているところを、
halt実行時には128秒(設定可能な最大値)に再設定します。
※ ウォッチドックの停止はできないが、設定変更は可能

poweroffとhaltの仕様は、Armadillo-IoT G3、Armadillo-IoT G3L、Armadillo-X1で共通です。

poweroffの仕様について製品マニュアルに記載されていないため
今後の製品アップデートでマニュアルに記載させて頂きます。

よろしくおねがいします。

中村です。

古関さん、
詳しい説明、ありがとうございました。

> poweroff(shutdown -h now)とhaltよる挙動差となります。
...
> poweroffの仕様について製品マニュアルに記載されていないため

poweroff(shutdown -h now)のコマンドとしての説明は
現在のマニュアルには記載はないですけど、
CPUの電源OFFの仕組みの説明としては、
↓これのことと思います。
14.1. i.MX 7Dual 自身による制御
http://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_prod…

> 今後の製品アップデートでマニュアルに記載させて頂きます。

よろしくお願いいたします。

--
なかむら

古関です。

> poweroff(shutdown -h now)のコマンドとしての説明は
> 現在のマニュアルには記載はないですけど、
> CPUの電源OFFの仕組みの説明としては、
> ↓これのことと思います。
> 14.1. i.MX 7Dual 自身による制御
> http://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_prod…; ch14.html#sct.control-by-gpio

はい。ご指摘の通りです。

上記、GPIOによる電源OFFはこのpoweroff仕様に対応したLinuxカーネルではエラーになります。
(LinuxカーネルがこのGPIOをにぎっているため、gpio-sysfsのexportでエラーになる)

マニュアルとの不整合が起きています。申し訳ありません。
こちらもあわせて修正させて頂きます。

i.MX 7Dual 自身で電源を切るには、poweroffコマンドを実行してください。

poweroffコマンドを実行すると、eMMC等のストレージのアンマウント、
Linuxカーネルの終了後このGPIOを使用してi.MX7 Dualの電源をOFFを行います。

overlayFSを有効にする等の対応を行わずに、マニュアル記載の手順でGPIOによる電源OFFを行うと、
eMMC等のストレージに構築されているルートファイルシステムの破壊につながる可能性があります。
(ext4ですのであまり破壊は起きにくいとは思うのですが)

よろしくおねがいします。

中村です。

追加の説明・解説、ありがとうございます。

> 上記、GPIOによる電源OFFはこのpoweroff仕様に対応したLinuxカーネルではエラーになります。
> (LinuxカーネルがこのGPIOをにぎっているため、gpio-sysfsのexportでエラーになる)

どのカーネルだったのか確認もしていないのですが、
だいぶ前にこれを試そうとしたときにexortで失敗して、
そのまま原因調べもせずに、作業放置になってました。
これが原因だったようですね。

> overlayFSを有効にする等の対応を行わずに、マニュアル記載の手順でGPIOによる電源OFFを行うと、
> eMMC等のストレージに構築されているルートファイルシステムの破壊につながる可能性があります。

はい、これ、動作中の電源ブチ切りと同じなので、
書こうかなぁと思いながらも書かずにいました。

--
なかむら