Armadilloフォーラム

SDカードの抜き挿し対応

oshiro

2021年12月22日 20時04分

質問ではありませんが、うまくいったので参考になればと投稿です。

Armadillo G3 のプログラム実行中に、アンマウントせずにSDカードを抜いた場合、ファイルの書き込み中の場合ファイルシステムの破損することがある(どうやら、ダーティビットが立ったままになる事があるもよう)ようで、その回避策です。
(マウントポイントは、 /mnt/sdcard とした場合。root権限でないと失敗すると思います。)

// 起動時、書き込みエラー時、ファイルオープンエラー時等に実行
umount("/mnt/sdcard");
system("fsck.vfat -y /dev/mmcblk0p1"); // 破損ファイルシステムの自動修復 (書き込み中に抜いたファイルが 読み取り専用 になったりすることがある) すぐ~数秒で終わる
mkdir("/mnt/sdcard", 666);
int mount_err = mount("/dev/mmcblk0p1", "/mnt/sdcard", "vfat", 0, NULL);

以上で、mount_err が 0なら正常

コメント

続報です。
電源入れっぱなしで1週間くらいの後、一旦抜き挿ししないと、何故かマウント失敗する現象が起きていました。
(一時的に、容量一杯になった可能性はある?)
いずれにしても、高信頼性を要求する方は、OS側まで踏み込んで対策しないといけないかもしれません。
ご参考までに。