Howto

ウォッチドッグタイマを使用する

ウォッチドッグタイマを使用する方法を紹介します。ウォッチドッグタイマには、ソフトウェアウォッチドッグタイマとハードウェアウォッチドッグタイマがありあすが、今回はハードウェアウォッチドッグタイマを使用します。

おおまかな手順は下記のようになります。

  1. ウォッチドッグタイマデバイスドライバを有効にする
  2. watchdogアプリケーションを有効にする
  3. 実行する
  4. タイムアウト時間を変更する

なお、本 Howto では、以下の環境を想定しています。ご利用の環境に合わせて適宜読みかえてください。

  • 対象製品:300, 500
  • atmark-dist:v20081022
  • Armadillo-300用のlinux-kernel: v2.6.12.5-at6
  • Armadillo-500用のlinux-kernel: v2.6.18-at8

1. ウォッチドッグタイマデバイスドライバを有効にする

1.1. Armadillo-300, Armadillo-500の場合

Armadillo-300, Armadillo-500で使用するLinuxカーネル(linux-2.6.12.5, linux-2.6.18)には、ハードウェアウォッチドッグタイマのドライバが含まれており、デフォルトの設定で有効になっていますので、特別な設定は必要ありません。

2. watchdogアプリケーションを有効にする

atmark-distにはウォッチドッグタイマを指定された間隔で定期的にリフレッシュするwatchdogというアプリケーションが含まれていますので、それを使用します。

make menuconfig を使用した場合の設定は下記のようになります。

[PC ~/atmark-dist]$ make menuconfig

Main Menu では、下記のように設定してください。(プロダクトは使用するものに合わせて適切に選択してください。)

Main Menu

Vendor/Product Selection  ---> 
--- Select the Vendor you wish to target
(AtmarkTechno) Vendor
--- Select the Product you wish to target
(Armadillo-300.Base) AtmarkTechno Products 

Kernel/Library/Defaults Selection  --->
--- Kernel is linux-2.6.x
(default) Cross-dev
(None) Libc Version
[ ] Customize Kernel Settings (NEW)
[*] Customize Vendor/User Settings (NEW)

次に、ユーザランドの設定をおこないます。

Userland Configuration

 Miscellaneous Applications  --->
   [*] watchdog                                    <-チェックをいれます

以上の設定をおこない、makeしてください。

3. 実行する

1.及び2.の手順で作成したカーネル及びユーザランドイメージを対象のArmadilloに書き込み、起動してください。

ウォッチドッグタイマの動作を確認するには、以下のようにします。ウォッチドッグタイマが動作を開始し、所定の時間を経過するとリセットがかかります。

[armadillo ~]# echo a > /dev/watchdog

ウォッチドッグタイマを定期的にリフレッシュする場合には、以下のコマンドを実行してください。watchdogアプリケーションが動作不能になり、ウォッチドッグタイマのリフレッシュができなくなると、リセットがかかります。

[armadillo ~]# watchdog -t 10 /dev/watchdog

4. タイムアウト時間を変更する

ウォッチドッグタイマのタイムアウト時間はドライバによって異なり、デフォルトで60sec(Armadillo-300, 500の場合)に設定されています。タイムアウト時間は、各デバイスドライバのデフォルト値を変更するか、カーネルのブートパラメータを設定することで変更できます。ブートパラメータは、hermitのsetenvコマンドで指定することができます。

各デバイスドライバごとのブートパラメータの設定は以下のようになります。

  • Armadillo-300の場合
hermit> setenv console=ttyAM0 ns9750_wdt.heartbeat=60
  • Armadillo-500の場合
hermit> setenv console=ttymxc0 mxc_wdt.timer_margin=60