Armadilloフォーラム

ソフトウェアウォッチドッグタイマのタイムアウト時間設定方法について

kudo_k

2018年11月7日 18時09分

いつもお世話になっております。
Armadillo-IoT G3 にてソフトウェアウォッチドッグの使用を試みております。

以下を参考にLinuxカーネルのコンフィギュレーションを変更し、
/dev/watchdogへのアクセスでタイムアウトによるリブートが発生することまでは確認できました。

https://users.atmark-techno.com/blog/53/1319
http://lists.atmark-techno.com/pipermail/armadillo/2013-November/009308…

ただ、タイムアウト時間の変更方法が分かりません。

上記URLではhermitプロンプトでsetenvコマンドを用いて変更するようになっておりますが、
Armadillo-IoT G3でhermitプロンプトを表示する方法が見当たりません。

タイムアウト時間の変更は可能でしょうか?
また、可能な場合変更方法を教えていただければ幸いです。

コメント

at_keitaro.takahashi

2018年11月9日 18時49分

高橋です。

> タイムアウト時間の変更は可能でしょうか?
> また、可能な場合変更方法を教えていただければ幸いです。

可能です。

softdogドライバを、Linuxカーネルイメージに組み込んだ場合、モジュールとして組み込む場合、カーネルのソースコードを変更した場合、それぞれの手順を説明します。

まず、Linuxカーネルイメージに組み込んだ場合は、カーネルコンフィギュレーションを変更した状態のArmadilloを保守モードで起動し、以下のようにコマンドを実行することによりタイムアウト時間を設定することができます。

=> setenv optargs softdog.soft_margin=30 
=> saveenv

この場合、ソフトウェアウォッチドッグのタイムアウト時間は30秒に設定されます。

次に、モジュールとして組み込む場合です。カーネルコンフィギュレーションを以下のように設定してください。

Linux Kernel Configuration Device Drivers --->
 
[*] Watchdog Timer Support
  <M>   Software watchdog        # Mにする

上記の設定をしてカーネルをビルドしたら、drivers/watchdog/softdog.koをArmadillo上にコピーしてください。

その後、Armadillo上で以下のコマンドを実行することにより、タイムアウト時間を設定することができます。

[armadillo ~]# insmod softdog.ko soft_margin=30

最後に、Linuxカーネルのソースコードを変更する場合です。drivers/watchdog/softdog.c の以下の行を修正してください。

#define TIMER_MARGIN 60 /* Default is 60 seconds */

以上のようにソフトウェアウォッチドッグのタイムアウト時間を変更した後、以下のコマンドでウォッチドッグタイマのスタート、定期的なキック、停止が可能です。

・スタート、定期的なキック

echo > /dev/watchdog1

・停止

echo V > /dev/watchdog1

※末尾の数字は環境によって異なります。