硬汉嵌入式论坛

 找回密码
 立即注册
查看: 810|回复: 2
收起左侧

[FileX] 发现filex的一个问题,小数据读写慢的原因似乎是其本身设计是导致的

[复制链接]

3

主题

9

回帖

18

积分

新手上路

积分
18
发表于 2022-5-13 22:35:20 | 显示全部楼层 |阅读模式
最近在弄filex,使用sd卡做媒介
当 单次写 20K-30k,速度很快,15-18MB/s
但是 当单次写 10-300Bytes时,会很慢--900KB/s
典型为
  for(int i=0;i<10000;i++){
    fx_file_write(fd,buf, 132);     
}
于是我想增大其内部缓存,
UINT fx_media_open(    FX_MEDIA *media_ptr,     CHAR *media_name,    VOID(*media_driver)(FX_MEDIA *),    VOID *driver_info_ptr,    VOID *memory_ptr,     ULONG memory_size);
将 memory_ptr 的buffer给大,给 buffer[(30*1024)];
下面写入还是
  for(int i=0;i<10000;i++){
    fx_file_write(fd,buf, 132);     
}

测试发现  buffer给大,没有太多变化,于是就仔细测了一下
发现 filex 使用缓存,但还是会以1个扇区为单位写入,即512字节。所以会很慢
当 fx_file_write的buf足够大,才会以多扇区一起写入,表现为我们使用大 buffer写入时,速度会很快。
这就尴尬了,我想使用filex记录一下串口数据,每次数据很小,  那么fx_media_open给大buffer也没有用。
难道 我需要自己建一个缓冲,串口数据进来先放自己的buffer里面,当数据够大了,再写入?

不知道坛友是怎样解决该问题的?




回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2022-5-13 22:38:26 | 显示全部楼层
SD 1个扇区的写入很慢,多个扇区一起写才会快
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
发表于 2022-5-14 10:32:56 | 显示全部楼层
jipolun 发表于 2022-5-13 22:38
SD 1个扇区的写入很慢,多个扇区一起写才会快

这才是根本,单个扇区,你的底层代码是single sector函数,多扇区数multi sector,这个才是提速的根本。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-26 22:18 , Processed in 0.162542 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表