Armadilloフォーラム

ハードウェアウォッチドッグタイマのタイムアウト時間の変更

saigusa

2020年7月13日 17時21分

お世話になります。三枝です。

Armadillo-X1のハードウェアウォッチドッグに関して、質問させてください。
「Armadillo-X1 製品マニュアル」のP.109に、
「WDOGドライバーの終了処理では、タイムアウト時間をWDOGの最大値である128秒に設定します。」
と記載されていますが、上記の「128秒」を任意に設定することは可能でしょうか。
(デフォルトでは、haltコマンドを実行して、Linuxカーネルを停止してから128秒後にリセットしていますが、この時間を短くしたいと考えています。)

Armadillo-300,Armadillo-500の場合では、下記サイトで設定変更可能なようでしたが、
Armadillo-X1で設定変更可能か分かりませんでした。
https://armadillo.atmark-techno.com/howto/watchdog

ご回答のほど、よろしくお願い致します。

コメント

at_makoto.sato

2020年7月14日 10時05分

佐藤です。

任意の時間待ってから再起動したいということであれば、以下のようにするのが簡単かと思います。
5秒待つ例

[ax1]# sleep 5; reboot

あくまで、WDOGのタイムアウト時間を変えたいというのであれば、以下のソースを修正後カーネルを再ビルドする必要があります。
drivers/watchdog/imx2_wdt.c 内の以下の関数内で IMX2_WDT_MAX_TIME としている箇所を変更します。

static void imx2_wdt_shutdown(struct platform_device *pdev)
{
	struct watchdog_device *wdog = platform_get_drvdata(pdev);
	struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog);
 
	if (imx2_wdt_is_running(wdev)) {
		/*
		 * We are running, configure max timeout before reboot
		 * will take place.
		 */
		imx2_wdt_set_timeout(wdog, IMX2_WDT_MAX_TIME);
		imx2_wdt_ping(wdog);
		dev_crit(&pdev->dev, "Device shutdown: Expect reboot!\n");
	}
}

saigusa

2020年7月14日 15時20分

佐藤様

ご回答ありがとうございます。

関数内の「IMX2_WDT_MAX_TIME」を「10」に変更し、
カーネルをビルドして確認したところ、
10秒後に起動を開始することが確認できました。
(希望通りの動作になっておりました。)

ありがとうございました。