dotsuru
2024年5月21日 14時12分
お世話になっております。
Armadillo-IoT G3Lを使用しております。
Armadillo-IoT ゲートウェイ G3L製品マニュアル(Debian GNU/Linux9 対応)の
8.3.17. ウォッチドッグタイマー を読んでいるのですが、
弊社で作成したCのプログラムに、どのようなコードで
Watchdog TimerをSTARTし、どのようなコードでRESETするのかがわかりません。
「何らかの要因でウォッチドッグタイマーのキックができなくなり」
という一文を、「Watchdog TimerをRESETすることができなくなり」
と理解しているのですが、この考え方は間違っていますでしょうか?
もし、サンプルプログラムなどあれば、ご提示願えると嬉しいです。
at_shinya.koga
2024年5月21日 14時41分
アットマークテクノの古賀です。
dotsuruさん:
>Armadillo-IoT G3Lを使用しております。
>Armadillo-IoT ゲートウェイ G3L製品マニュアル(Debian GNU/Linux9 対応)の
>8.3.17. ウォッチドッグタイマー を読んでいるのですが、
マニュアルの、ここですね:
https://manual.atmark-techno.com/armadillo-iot-g3l/armadillo-iotg-g3l_p…
ここでは、Linux カーネル標準のウォッチドッグタイマー機能を、Armadillo-IoT G3L 搭載の SoC が持つウォッチドッグタイマーを使って有効にするカーネルコンフィグレーションを説明しています。ソースコードは、マニュアルにも記載されているように、Linux カーネルのソースツリーの drivers/watchdog/ にあります:
https://elixir.bootlin.com/linux/v4.9.337/source/drivers/watchdog/watch…
https://elixir.bootlin.com/linux/v4.9.337/source/drivers/watchdog/watch…
>弊社で作成したCのプログラムに、どのようなコードで
>Watchdog TimerをSTARTし、どのようなコードでRESETするのかがわかりません。
アプリケーションからは、何もする必要がありません。ウォッチドッグタイマーのキックは、カーネルスレッドが自動的に行います。
つまり、Linux カーネルがハングアップしてシステム全体が動作停止すると、SoC 内蔵のウォッチドッグタイマーが満了して SoC がリセットされる、という仕組みです。
>「何らかの要因でウォッチドッグタイマーのキックができなくなり」
>という一文を、「Watchdog TimerをRESETすることができなくなり」
>と理解しているのですが、この考え方は間違っていますでしょうか?
いえ。「キック」と「RESET」の対応については、それで合っています。
>もし、サンプルプログラムなどあれば、ご提示願えると嬉しいです。
上述したように、マニュアルの「ウォッチドッグタイマー」で説明しているのは、Linux カーネルの機能であり、アプリケーションからウォッチドッグタイマーのキック/RESET を行う必要がありません。そのため、サンプルプログラムもありません。
いかがでしょうか?