ARM_linux中SD卡读写过慢如何解决

ctlu2ct2t 2015-06-09 03:02:58
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();结果还是一样。如何解决写入的同时还读取?问题出在哪里?
...全文
840 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctlu2ct2t 2015-06-10
  • 打赏
  • 举报
回复
是写完再去读取的,问题找到了,再去读取的时候open函数的属性设置错了,加了O_TRUNC属性,文件清零了。
worldy 2015-06-09
  • 打赏
  • 举报
回复
为什么不写完再读?sd卡读写不用切换地址吗?

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧