Armadilloフォーラム

SDカードのデータ破壊

hakamata

2014年7月7日 14時27分

いつもお世話になっております.
hakamataと申します.

Armadillo-840でマウントしているSDカードの中のデータの一部が壊れて,
一部読み書きができなくなってしまう現象が,たまに出ています.

SDカードにはプログラムの実行ファイルを入れており,
Armadilloの電源を入れると,自動的にSDカード内のプログラムを実行します.
プログラムは同じSDカード内にある動画ファイルの再生をします.
システムの終了は電源をぬくことで行っています.
SDカードにデータを書き込んでいる最中に電源を抜くことはありません.

自分で考えたデータ破壊の理由としましては,
SDカード内に入れてあるプログラムを実行中に電源の供給を停止するため,
もしくは,SDカード内の動画を再生中に電源の供給を停止するため,
SDカード内の破壊が起こっているのかと考えています.

SDカード使用中に電源を抜くと,SDカード内のデータ破壊の可能性は高いでしょうか?
よろしくお願いします.

コメント

at_daisuke.sasaki

2014年7月23日 14時11分

佐々木大輔です。

> SDカード使用中に電源を抜くと,SDカード内のデータ破壊の可能性は高いでしょうか?
> よろしくお願いします.

理屈的には、SDカードへの書き込みを一切行なっておらず、
読み出しだけしかしていなければ、アクセス中に電源断となっても
データは壊れないと思います。

但し、SDカード内のファームウェアの作り次第(SDカードベンダー、型番毎に異なる)で、
壊れてしまうような実装になっている可能性も無いとは言い切れません。
(例えば、ウェアレベリングがどのタイミングで行われるか?など)

ご使用のSDカードベンダーに、仕様を確認してみるのがいいと思います。

at_daisuke.sasaki

2014年7月23日 14時51分

佐々木大輔です。

> SDカードにデータを書き込んでいる最中に電源を抜くことはありません.

一点補足です。

明示的にSDカードへの書き込みアクセスを行なっていなくても、
SDカードへの書き込みが行われるケースがあります。
例えば、ファイルの読み出し時に、そのファイルのアクセスタイムを更新する場合などです。

もし、このような明示的でない、
SDカードへの書き込みアクセスを考慮されていないのであれば、
SDカードをRead Onlyでマウントし評価を行うと、
電源断による影響があるかどうかの切り分けができると思います。

SDカードのマウント時「-o ro」または「-r]オプションを付加し
Read Onlyでマウントし評価してみてください。

以下は、マウントコマンドの一例です。

[armadillo ~]# mount -o ro -t vfat /dev/mmcblk0p1 /mnt