当前位置: 代码迷 >> 驱动开发 >> ARM_linux中SD卡读写过慢怎么解决
  详细解决方案

ARM_linux中SD卡读写过慢怎么解决

热度:298   发布时间:2016-04-28 09:59:38.0
ARM_linux中SD卡读写过慢如何解决
Linux version 2.6.35.7,用脚本命令测试SD卡读写速度(time dd if=/dev/zero of=/sdcard/test.txt bs=512 count=204800),一张class10的卡只有300KB/S的读写速度,太慢了。网上找了很多资料,说是在fat32的文件系统SD卡不能采用同步的方式。具体如下:
原因出在了SD卡的挂载方式上
在这个/bin/hotplug.sh文件中
mount -o sync -o noatime -o nodiratime -t vfat /dev/$DEVNAME $MOUNTPOINT > /dev/null 
只要把-o sync 这几个字去掉就好了
注意:去掉这几个字后,SD卡或者U盘就不能热拔插了,必须使用umount命令卸载之后,才能拔出,否则可能造成损坏。
重新制作ARM根文件系统,烧录至开发板,用同一脚本测试结果如下:
204800+0 records in
204800+0 records out
104857600 bytes (100.0MB) copied, 4.785159 seconds, 20.9MB/s
real 0m 4.78s
user 0m 0.10s
sys 0m 1.62s
速度是上去了,但是编写代码操作SD卡时问题来了,纯写入是没有问题的,但是在写入的同时进行读取,就发现,节点写入到SD卡中了,但是文件大小是零,数据没有写入进去。可能是数据还在内存中,没有写入SD卡,于是在文件写入完后,执行sync()或者fsync();结果还是一样。如何解决写入的同时还读取?问题出在哪里?
------解决思路----------------------
为什么不写完再读?sd卡读写不用切换地址吗?
  相关解决方案