Armadilloフォーラム

SDカードの相性

vulyokohama

2015年5月21日 22時24分

現在不具合の発生しているSDは
Transcend 8GB MicroSD HC +アダプタ
です。

> -----------------------------------------------------
> FAT: Filesystem panic (dev mmcblk0p1) fat_free_clusters:
> deleting FAT entry beond EOF
> File system has been set read-only
> -----------------------------------------------------

メーカ推奨(相性確認の取れた)のSDカードはあるのでしょうか。

CPU負荷が高い状態で
SDにファイルの書込を頻繁に行うと
以下のエラーになる可能性はありますでしょうか?

> -----------------------------------------------------
> FAT: Filesystem panic (dev mmcblk0p1) fat_free_clusters:
> deleting FAT entry beond EOF
> File system has been set read-only
> -----------------------------------------------------

先程は、
同一ファイルに対する書込と読込が
別プロセスにより同時に行われることが
原因かもしれないと考えましたが、
今回この問題が発生しているテストケースでは
同一ファイルに対する書込と読込は行われていないことが
分かりました。

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

コメント

n.yamamoto

2015年5月22日 9時23分

Yamamotoです。

横から失礼します。

私もSDカードのファイル異常で先日まではまってましたので、
私の場合は、ドライバーレベルのキュー(デバイスにもキューがあれそれもですが)でキューイングされている状態で
物理的なファイルと仮想ファイル(この言い方でよいのか?)が動作中合っていません。

綺麗に同期してから終了すると問題ないのですが、動作中等にリセットとかかけるとファイルと、ファイルインデックス部
が合わない状態でおわるので、再起動時に読み込むと発生しているような状態になりました。

私は、要所要所で同期(sync)して正常終了時は念のため、SDをunmountして回避しました。

参考になりますでしょうか。

kes-konishi

2015年5月22日 11時24分

KES)小西です。

私も横からすみません、見当違いかもしれませんが。。。
電源断での破壊か、負荷での破壊かの切り分けは良いのでしょうか?

・電源断での破壊の場合
瞬断、電源断でのファイル破壊はFATでは回避不能と思っております。
電源電圧の降下をNMI等の割り込みでとって、ハンドラ内で吐き出すにしてもコンデンサ容量が足りませんので。。。

このため、瞬断、電源断では壊れる可能性があると考え、Yamamoto様のように一定のクリティカルな時間で
キャッシュ吐き出しを行うのが妥当と思います。(FATなのでその間での電源断はダメですが。。。)

また、ファイルシステムをext3等のジャーナリングにしてみてはいかがでしょうか?
JFFSや、ubiでフォーマットするのもひとつの手かと思います。

最終の書き込みセクタは壊れる可能性はありますが、そのひとつ前の状態で
起動時にファイルがリストアされる可能性があり、信頼性が少し上がります。
(空き容量によって信頼性が変わります。)
欠点はアクセススピードは少し落ちるのと、windowsからは読めません。。。

・高負荷での書き込みでの破壊の場合
相性というのは、ハード的な話なのか、切り分けを行うために
一度ファイルシステムをFAT→EXT3等に変えて確認してみるのは
いかがでしょうか?
ファイルシステムのフォーマットが変わっても同じ現象がでるのであれば、
SDIOの相性の可能性が高くなりますが、そうでない場合は
FATファイルシステムの問題となります。

あと、他のシステムですが、u-bootで発生した問題ですが、
SDIOのスピード(タイミング)がカーネルはドライバ内で動的に変更してますが、
u-bootは固定のため、特定のSDでは大きなファイルを連続書き込みした場合、
途中で失敗することがありました。
このため、もしかすると、使用しているSDカードのスピードとカーネルが認識している
スピードがあっていないため、大量データアクセスを行った場合、壊れているのかもしれません。
SDIOのドライバにログ入れるとわかると思います。

at_takashi.sasayama

2015年6月5日 10時14分

笹山です。

Yamamoto 様、KES)小西 様 が記載されているもの以外では、
SDカードが書換回数の上限を超えてしまった場合に、本問題が発生する可能性があります。
(書換回数の上限を超えてしまうと、正常にデータが書きこまれない等の現象が発生します。)

> メーカ推奨(相性確認の取れた)のSDカードはあるのでしょうか。

下記、推奨デバイス SDカードの項目で掲載しているものを推奨しています。
http://armadillo.atmark-techno.com/devices

SDカードの選定ポイントについては以下のFAQをご参照ください。
http://armadillo.atmark-techno.com/faq/sd-selection-point

また、可能な限り新しいバージョンのカーネルを使用することも推奨します。
linux-2.6.26-at19以降ではSD通信でCRCエラーが発生した際にリトライする機構等を実装してます。

http://armadillo.atmark-techno.com/news/140411/software-update