Armadilloフォーラム

Armadillo-IoT A6 で WDTは使えますか

sisyphus

2024年9月1日 1時50分

A6で Reboot 時に、終了途中でハングアップするようで、再起動にいたらないことがたまにあります。
ユーザーアプリのせいかもしれないので解析は進めるとして、暫定対策で WDT を使用できれば、上記状態でも再起動されると思います。
WDT を使う方法についてお教えください。(マニュアルやWeb上にも情報がないようなので)

よろしくお願いします。

コメント

at_dominique.m…

2024年9月2日 15時21分

sisyphusさん

お世話になっています、
マルティネです。

> A6で Reboot 時に、終了途中でハングアップするようで、再起動にいたらないことがたまにあります。
> ユーザーアプリのせいかもしれないので解析は進めるとして、暫定対策で WDT を使用できれば、上記状態でも再起動されると思います。

確認のため利用中のカーネルのバージョンを教えていただけますか。

> WDT を使う方法についてお教えください。(マニュアルやWeb上にも情報がないようなので)

情報が少なくてすみません。
Armadillo IoT A6 では WDT がカーネルで常にキックされるはずです。
再起動の際にユーザーランドで固まってる場合にカーネルが継続にキックしますので、リセットされません…
ユーザーランドでも /etc/systemd/system.conf のデフォルトでは /dev/watchdog を使って停止できなかった場合にタイマーを設けていますが、こちらも systemd がまだ生きている状態では意味ないですね。
(そこはちょっと確認不足ですが、ShutdownWatchdogSec を 2min 以下にしないと影響ないかもしれません。使っている WDT は 128秒までしか制御できないためデフォルトの 10min でどう動くかは確認してません。)

また、watchdog コマンドなどで設定してもコマンドが停止するとカーネルがキックの引き継ぎされますので、そちらの対応も難しいかと思います。

ユーザーランドの問題を疑う場合は systemd-system.conf(5) のマニュアルに説明されているとおりに shutdown.target の JobTimeoutSec=1min と JobTimeoutAction=force-reboot 等設定してみていかがでしょうか。

よろしくお願いします。

マルティネさん

> 確認のため利用中のカーネルのバージョンを教えていただけますか。

linux-v4.14-at65 です。その後の検討でハングアップではなくU-Bootが保守モードで立ち上がっているのではないかと疑っています。
ただし、コンソール用のシリアル(CON3)を外部接続用に変更しているため確認はできていません。

別の通信を拡張インターフェース(SubのCON3)の 9pin 11pin UART にて実施していますが、通信中に reboot したときのみ発生するようです。
マニュアルにはSW1を押したまま起動すると保守モードで立ち上がるとありますが、他に保守モードで立ち上がる条件はありますか?

> Armadillo IoT A6 では WDT がカーネルで常にキックされるはずです。
> 再起動の際にユーザーランドで固まってる場合にカーネルが継続にキックしますので、リセットされません…

わかりました。ありがとうございます。U-Bootが保守モードで立ち上がって "boot" 待ちになっている場合はそもそも WDTの対象外ですね...

reboot の前に外部からシリアルが来ないように外部機器をA6から制御した後 rebootするか、
デバイスツリーを変更して オートブートモードでしか立ち上がらないようにするか、検討したいと思います。
後者のやり方を解説している資料とかがあればお教えいただけますか。