搜索
bottom↓
回复: 5

有坛友在stm32+spi flash上用littlefs么,文件写入耗时有些疑惑

[复制链接]

出130入129汤圆

发表于 2019-8-14 19:34:52 | 显示全部楼层 |阅读模式
本帖最后由 68336016 于 2019-8-14 19:37 编辑

stm32+w25q64

  1. //先建立好文件,只执行一次
  2. lfs_file_open(&g_lfs, &g_file, filename, LFS_O_RDWR | LFS_O_CREAT);

  3. //不断循环执行下面2句,每次写入内容只有20个字节,耗时约200ms,时间几乎就是lfs_file_sync函数占用的。
  4. lfs_file_write(&g_lfs, &g_file, content, strlen(content));
  5. lfs_file_sync(&g_lfs, &g_file);
复制代码


换种方式,每次写入数据后,不去人工调用lfs_file_sync语句,让多次执行lfs_file_write后,自动写入FLASH
  1. //先建立好文件,只执行一次
  2. lfs_file_open(&g_lfs, &g_file, filename, LFS_O_RDWR | LFS_O_CREAT);

  3. //不断循环执行下面1句,每次写入内容只有20个字节,在缓冲区没满时候,没真正写到FLASH,几乎不耗时间。
  4. //每调用20多次后,估计缓冲区满了,这时耗时是3ms,应该就是写入FLASH的时间
  5. lfs_file_write(&g_lfs, &g_file, content, strlen(content));
复制代码



问题:人为每次去调用lfs_file_sync耗时要200ms,而缓冲区满了程序自动写入FLAHS,只需要几个ms时间。
         都有执行写入FLASH操作,时间为何差别那么大呢。

出0入442汤圆

发表于 2019-8-14 19:47:47 来自手机 | 显示全部楼层
你查代码呗。怀疑是把spi给扫描了一遍。

出0入0汤圆

发表于 2019-8-15 08:22:05 | 显示全部楼层
我猜,软件逻辑估计是按页在写,然后你没写满一页,你强行同步,他要先读再写。你看看flash的一页是多少,然后一口气干一页试试

出0入0汤圆

发表于 2019-8-15 11:25:00 | 显示全部楼层
jlhgold 发表于 2019-8-15 08:22
我猜,软件逻辑估计是按页在写,然后你没写满一页,你强行同步,他要先读再写。你看看flash的一页是多少, ...

肯定是这样的,也必须只能这样啊,fatfs也是这么处理的

出0入0汤圆

发表于 2019-8-16 08:10:10 | 显示全部楼层
myxiaonia 发表于 2019-8-15 11:25
肯定是这样的,也必须只能这样啊,fatfs也是这么处理的

那肯定强制同步会变慢啊,哈哈哈
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 11:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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