Armadilloフォーラム

ハードウェアウォッチドッグタイマーとSDカード ファイルエラーに関して

hiroyuki0113

2016年10月13日 14時06分

お世話になっております。
河合といいます。
下記の件に関して確認、および質問させていただきますのでご返信いただきたくよろしくお願いいたします。

①ノイズ試験により再起動がかかった場合、SDカード内にある一部のファイルがReadOnlyとなり、正常な動作となりません。
 よって、起動時に下記コマンドを並べてシェル化しました。
 内容的にいかがでしょうか?ご意見いただければと思います。

umount /mnt 
fsck -fy /dev/mmcblk0p1

mount -t vfat /dev/mmcblk0p1 /mnt
rm -rf /mnt/FOUND.*
mount -o rw,remount /mnt

chmod -R +w /mnt/Data/Tags/*.*
chmod -R +w /mnt/Data/IoTs/*.*
chmod -R +w /mnt/Data/Logs/*.*
※書き込み権限を与える。

②ハードウェアウォッチドッグタイマー

ノイズ試験実施後、下記の症状に陥ってしまいます。
症状:カーネル含め動作が固まる。コンソールで入ってもコマンドが打てない状況。SW1(リセットスイッチ)押下で再起動はできる。
   ※SW1による再起動をした際に上記①の症状になるため、記載したシェルで解決すると考えています。

質問1:この症状に陥った時にHWウォッチドッグタイマーによるリセットがかかると思っていたのですがかかりません。
   かかる認識で合っていますか?

質問2:HWウォッチドッグタイマーがかかる認識で質問します。
   現状、かからないのはなぜでしょうか? Linux/arm 3.4-at19 Kernel Configurationでは以下のように設定しています。

# MODULbus GPIO expanders:
#
CONFIG_HAS_SGX540=y
CONFIG_GPU=y
CONFIG_GPU_EURASIA_SGX540=y
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_THERMAL is not set
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set

#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=y
# CONFIG_DW_WATCHDOG is not set
# CONFIG_MAX63XX_WATCHDOG is not set
CONFIG_SH_MOBILE_WATCHDOG=y

この他に必要な設定があるのであればご教授願います。

以上、よろしくお願いいたします。   

コメント

at_takashi.sasayama

2016年10月13日 18時06分

笹山です。

> ①ノイズ試験により再起動がかかった場合、SDカード内にある一部のファイルがReadOnlyとなり、正常な動作となりません。
>  よって、起動時に下記コマンドを並べてシェル化しました。
>  内容的にいかがでしょうか?ご意見いただければと思います。

スクリプトは特に問題ないかと思います。
ただ、SDカード内の一部ファイルが再起動後に勝手にReadOnlyとなるのは異常な動作ですので、
スクリプトが必要になってしまう今の状況が問題と考えます。

ファイルが ReadOnly になる際に何かエラーログなどは出力されていないでしょうか?

> 質問1:この症状に陥った時にHWウォッチドッグタイマーによるリセットがかかると思っていたのですがかかりません。
>    かかる認識で合っていますか?

はい、そのような状況ではハードウェアウォッチドッグタイマーによるリセットがかかるはずです。
しかしコンソールが反応しなくても何らかの理由でカーネルが動作し続けた場合、リセットがかからず動作し続ける場合も考えられます。

> 質問2:HWウォッチドッグタイマーがかかる認識で質問します。
>    現状、かからないのはなぜでしょうか? Linux/arm 3.4-at19 Kernel Configurationでは以下のように設定しています。

カーネルコンフィギュレーションには特に問題は無いように見受けられます。
こちらでも再現試験を実施してみたいのですが、可能であればどのようなノイズ試験を実施されているか
教えていただけないでしょうか?

お手数ですがどうぞよろしくお願い致します。

河合です。
返信ありがとうございます。
追記、および再確認をさせてください。

> スクリプトは特に問題ないかと思います。
> ただ、SDカード内の一部ファイルが再起動後に勝手にReadOnlyとなるのは異常な動作ですので、
> スクリプトが必要になってしまう今の状況が問題と考えます。
>
> ファイルが ReadOnly になる際に何かエラーログなどは出力されていないでしょうか?

上記症状の発生は突然の電源断(停電試験)でも発生します。恐らくログ書き込み、またはデータリスト更新時に発生しやすいです。
なのでReadOnlyになってしまうことはしょうがないと考えていましたが、本来はそうならないはずでしょうか?
エラーログは特になく、アプリがファイルにアクセスするとReadOnlyのため、拒否されているという状況です。

> > 質問1:この症状に陥った時にHWウォッチドッグタイマーによるリセットがかかると思っていたのですがかかりません。
> >    かかる認識で合っていますか?
>
> はい、そのような状況ではハードウェアウォッチドッグタイマーによるリセットがかかるはずです。
> しかしコンソールが反応しなくても何らかの理由でカーネルが動作し続けた場合、リセットがかからず動作し続ける場合も考えられます。

「コンソールが反応しなくても何らかの理由でカーネルが動作し続けた」という状況であれば逆にソフトウェアウォッチドッグタイマーをかけて
カーネルの再起動を促すことできないでしょうか?
手法あればご教授いただきたいです。

> > 質問2:HWウォッチドッグタイマーがかかる認識で質問します。
> >    現状、かからないのはなぜでしょうか? Linux/arm 3.4-at19 Kernel Configurationでは以下のように設定しています。
>
> カーネルコンフィギュレーションには特に問題は無いように見受けられます。
> こちらでも再現試験を実施してみたいのですが、可能であればどのようなノイズ試験を実施されているか
> 教えていただけないでしょうか?

カーネルコンフィギュレーションの他にハードウェアウォッチドッグタイマーを制限する設定はありますでしょうか?
例えばブートローダ部分などです。

具体的な試験は、電気的ファストトランジェント・バーストになります。IEC/EN 61000-4-4のレベル3で症状が発生します。
電源ブロックですが、COSEL製SW電源LFA15F-5-J1を使用し、Armadillo-840に5V供給しています。

以上、お手数かけますがよろしくお願いいたします。

at_takashi.sasayama

2016年10月17日 9時27分

笹山です。

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

> 具体的な試験は、電気的ファストトランジェント・バーストになります。IEC/EN 61000-4-4のレベル3で症状が発生します。
> 電源ブロックですが、COSEL製SW電源LFA15F-5-J1を使用し、Armadillo-840に5V供給しています。

下記の試験ですね。
試験報告書:JIS C 61000-4-4:2007 電気的ファストトランジェント/バーストイミュニティ試験
https://users.atmark-techno.com/system/files/protected_files/A8400-U00Z…

> 上記症状の発生は突然の電源断(停電試験)でも発生します。恐らくログ書き込み、またはデータリスト更新時に発生しやすいです。
> なのでReadOnlyになってしまうことはしょうがないと考えていましたが、本来はそうならないはずでしょうか?
> エラーログは特になく、アプリがファイルにアクセスするとReadOnlyのため、拒否されているという状況です。

ファイル書き込み中に電源断が発生し、ファイルシステムが破損。結果、ファイルシステム全体が ReadOnly でマウントされる現象は
何度か見たことがあります。しかし、今回のように特定のファイルのみが ReadOnly になるというのは見たことがありません。
(当方が見たことないだけで、電源断のタイミングによってはあり得る現象かもしれません)

> 「コンソールが反応しなくても何らかの理由でカーネルが動作し続けた」という状況であれば逆にソフトウェアウォッチドッグタイマーをかけて
> カーネルの再起動を促すことできないでしょうか?
> 手法あればご教授いただきたいです。

はい、ソフトウェアウォッチドッグタイマーにより再起動させることは可能だと思います。
使用方法に関しましては、以下が参考になると思います。

ソフトウェアウォッチドッグタイマーの使用方法
https://users.atmark-techno.com/blog/53/1319

> カーネルコンフィギュレーションの他にハードウェアウォッチドッグタイマーを制限する設定はありますでしょうか?
> 例えばブートローダ部分などです。

「ハードウェアウォッチドッグタイマーを制限する」とは、ハードウェアウォッチドッグタイマーによるリセットを
無効化するという意味でしょうか?
その場合でしたら、ブートローダ部分で無効化するには以下のコンフィグを行ってください。

Hermit-At Configuration
Target Configurations  --->
  Support Devices  --->
    [ ]   Support for RMA1 Watchdog Timer (RWDT)    ← 無効化

Hermit-Atのビルドは、「Armadillo-840 製品マニュアル」の
「ブートローダーをビルドする」をご参照ください。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

河合です。
ご返信ありがとうございました。

> > 具体的な試験は、電気的ファストトランジェント・バーストになります。IEC/EN 61000-4-4のレベル3で症状が発生します。
> > 電源ブロックですが、COSEL製SW電源LFA15F-5-J1を使用し、Armadillo-840に5V供給しています。
>
> 下記の試験ですね。
> 試験報告書:JIS C 61000-4-4:2007 電気的ファストトランジェント/バーストイミュニティ試験
> https://users.atmark-techno.com/system/files/protected_files/A8400-U00Z…

上記提示の試験で認識合っています。

> ファイル書き込み中に電源断が発生し、ファイルシステムが破損。結果、ファイルシステム全体が ReadOnly でマウントされる現象は
> 何度か見たことがあります。しかし、今回のように特定のファイルのみが ReadOnly になるというのは見たことがありません。
> (当方が見たことないだけで、電源断のタイミングによってはあり得る現象かもしれません)

上記の件ですが、情報が誤っていました。記載されている通りファイルシステムエラーです。
ファイルにアクセスできないので特定のファイルだと思い込んでました。
この時に復旧する方法はありますでしょうか?

> > 「コンソールが反応しなくても何らかの理由でカーネルが動作し続けた」という状況であれば逆にソフトウェアウォッチドッグタイマーをかけて
> > カーネルの再起動を促すことできないでしょうか?
> > 手法あればご教授いただきたいです。
>
> はい、ソフトウェアウォッチドッグタイマーにより再起動させることは可能だと思います。
> 使用方法に関しましては、以下が参考になると思います。
>
> ソフトウェアウォッチドッグタイマーの使用方法
> https://users.atmark-techno.com/blog/53/1319

上記マニュアルに沿って使用しているはずなのですが。再確認致します。

> 「ハードウェアウォッチドッグタイマーを制限する」とは、ハードウェアウォッチドッグタイマーによるリセットを
> 無効化するという意味でしょうか?
> その場合でしたら、ブートローダ部分で無効化するには以下のコンフィグを行ってください。
>

> Hermit-At Configuration
> Target Configurations  --->
>   Support Devices  --->
>     [ ]   Support for RMA1 Watchdog Timer (RWDT)    ← 無効化
> 

>
> Hermit-Atのビルドは、「Armadillo-840 製品マニュアル」の
> 「ブートローダーをビルドする」をご参照ください。
> http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

上記の質問の意図はカーネルコンフィギュレーション以外でハードウェアウォッチドッグタイマーによるリセットの有効/無効化の
設定があるのかという意味です。
前回メールでカーネルコンフィギュレーションは問題ないとご返信いただいていますが、その他の部分で誤った設定になっていれば
でハードウェアウォッチドッグタイマーによるリセットが有効化されないといった設定ミスを危惧しました。

at_takashi.sasayama

2016年10月18日 9時09分

笹山です。

> 上記の件ですが、情報が誤っていました。記載されている通りファイルシステムエラーです。
> ファイルにアクセスできないので特定のファイルだと思い込んでました。
> この時に復旧する方法はありますでしょうか?

お使いのシステムはvFAT(FAT32)だと思われますので、以下の様に実行すると良いかと思います。

[Armadillo]# umount /mnt
[Armadillo]# fsck.vfat -a /dev/mmcblk0p1

とりあえず、上記のコマンドでファイルシステムのエラーは修復されるかと思います。

なお試験時は、デバッグ用のシリアルケーブルは接続されたままでしょうか?
といいますのも、ファーストトランジェントバースト試験等のノイズ試験時に
デバック用のシリアルケーブルをPC等の外部機器に接続したままノイズを印加すると、
シリアルケーブルからPC側へノイズが逃げてコンソールがフリーズすることがあります。

つまり、コンソールだけが固まり、アプリ、カーネルが動き続ける現象が発生する可能性があります。
この際は、ソフトウェア、ハードウェアともにウォッチドッグタイマーによるリセットはかかりません。

もしも同じ原因でしたら、試験中はシリアルケーブルを接続せず、試験完了後にシリアルケーブルを接続すると、
コンソールが固まる現象は発生しなくなると思いますのでお試しください。
もしくはSSHなどによるネットワーク経由での操作をご検討いただければと思います。

河合です。

上記の件、コメントさせていただきます。

まずは、最初の方の文面にある「再現試験をおこないたい」との返信を頂きましたがその後いかがだったのでしょうか?
試験結果を共有していただければ幸いです。

笠山様が危惧されているデバッグ用のシリアルケーブルですが、接続しての試験はしていません。
独自の樹脂ケースに入れて試験をしています。
インターフェースとして出ているケーブルはLANとACコードのみとなっています。
※5Vはケース内部で電源回路を組んで供給しています。

合せてファイルシステムエラーに関して、解決しました。
ありがとうございます。

以上、お手数ですが再度返信いただきたくよろしくお願いいたします。

at_takashi.sasayama

2016年11月7日 18時00分

笹山です。

> 試験結果を共有していただければ幸いです。

申し訳ございません、再現試験の方はまだ進展がなく、共有できる情報がございません。

> 笠山様が危惧されているデバッグ用のシリアルケーブルですが、接続しての試験はしていません。
> 独自の樹脂ケースに入れて試験をしています。

上記の件、承知しました。

> インターフェースとして出ているケーブルはLANとACコードのみとなっています。
> ※5Vはケース内部で電源回路を組んで供給しています。

インターフェースとしてLANが出ているということは、ネットワークからの確認が可能だと思います。
コンソールが固まった際に Armadillo に対して ping を実行すれば、
コンソールだけが固まっているのか、カーネルも固まっているのか切り分けができると思います。
(ping が返ってくれば、カーネルは動作しています。)

上記を試していただくことは可能でしょうか?

どうぞよろしくお願い致します。

笠山 様

回答ありがとうございました。
内容確認した上で、以下記載します。お手数ですが再度ご確認ください。

再現試験に関してですが、共有できる情報を展開できるのはいつごろになりそうでしょうか?

ping、およびTelnetでのログイン等、一切できない状況ですので、カーネルが固まっていると思われます。
私の認識ではこの状態に陥ればハードウォッチドッグタイマーによるリセットが生じると思っていますが、
かからない状況です。※数分待ってもリセットかからず。

ソフトウェアウォッチドッグタイマーも入っていますが、当然ながらかかりません。
※下記のコマンドで確認しています。
 psでプロセス確認。
 killでプロセス停止。
 リセット発生。

以上です。
よろしくお願いいたします。