arm开发板断电后重启,fat32格式的tf卡变只读,有什么方法避免?

arm开发板跑的是linux系统,支持tf卡热拔插。重启断电后低概率出现tf卡变为read-only,执行mount -o rw,remount /mnt/sdcard后正常了。出错原因应该是断电导致fat32格式的tf卡的簇出错了,加上linux的保护机制使其只读。软件或者硬件上有什么方法避免???

这是硬件原理造成的,SD卡或TF卡如果突然掉电时还在写数据,是很不安全的。最根本的解决办法是在供电电路上加一个大电容,延长掉电时间,存储卡尽快读完数据。软件上尽量避免长时间写数据。

可以用支持容错的 exfat代替 fat32

加上大电容以后,可以延长供电时间,让程序有机会做一些掉电之前的处理,前提是在加上大电容以后,还要配合掉电检测电路才能实现刚才说的做掉电之前的处理程序。这是配合的设计。

用带自校验的文件系统,比如ext4,这个加载时会自检并恢复。

使用fsck_modos进行修复。因为fat文件系统的特性,异常掉电是有一定概率会损坏文件系统的。