搜索
bottom↓
回复: 10

求助使用littlefs 文件系统如何获取SPI flash 的未使用磁盘大....

[复制链接]

出0入10汤圆

发表于 2019-7-18 13:39:49 | 显示全部楼层 |阅读模式
使用littlefs 文件系统如何获取SPI flash 的未使用磁盘大小?资料太少了,搞不定,求助!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2019-7-18 19:59:16 | 显示全部楼层
已使用块数:
  1. lfs_ssize_t lfs_fs_size(lfs_t *lfs)
复制代码

出0入25汤圆

发表于 2019-7-18 13:39:50 | 显示全部楼层
  1.        

  2. typedef struct
  3. {
  4.         lfs_size_t block_size;
  5.         lfs_size_t block_count;
  6.         lfs_size_t block_use;
  7.         lfs_size_t block_free;
  8.        
  9. }lfs_block_state_t;

  10. static int traverse_df_cb(void *p, lfs_block_t block)
  11. {
  12.     *(lfs_size_t *)p += 1;
  13.     return 0;
  14. }

  15. // all of the files are closed
  16. int lfs_block_state(lfs_t *lfs,lfs_block_state_t *state)
  17. {
  18.         int err;
  19.         memset(state, 0, sizeof(lfs_block_state_t));
  20.         uint32_t allocatedblock = 0;
  21.         err = lfs_traverse(lfs, traverse_df_cb, &allocatedblock);
  22.        
  23.         if(err < 0){
  24.                 return err;
  25.         }
  26.         state->block_size = lfs->cfg->block_size;
  27.         state->block_count = lfs->cfg->block_count;
  28.         state->block_use = allocatedblock;
  29.         state->block_free = lfs->cfg->block_count - allocatedblock;

  30.         return 0;
  31. }

复制代码


  1. lfs_block_state_t state;
  2. lfs_block_state(&lfs, &state);
  3. printf("Flash use_block=%u free_block=%u  free_byte = %u \r\n",state.block_use,state.block_free, state.block_size*state.block_free );
复制代码

出0入0汤圆

发表于 2019-7-24 11:14:23 | 显示全部楼层
又一个研究littlefs的人。

出0入0汤圆

发表于 2019-7-24 14:47:06 | 显示全部楼层
不知道剩余多少,但是有个函数式知道用了多少。

出0入10汤圆

 楼主| 发表于 2019-7-29 09:25:52 | 显示全部楼层

非常感谢

出130入129汤圆

发表于 2019-8-10 17:52:47 | 显示全部楼层
本帖最后由 68336016 于 2019-8-10 17:53 编辑

在stm32f103+W25Q64上试了下,第一次建立个空白文件都需要200多毫秒。

不断建立新文件,每次只写入几十个字节来测试,到第一百个文件时候,建立时间就逐渐增长到1500多毫秒。


出0入0汤圆

发表于 2019-8-24 01:29:42 | 显示全部楼层
68336016 发表于 2019-8-10 17:52
在stm32f103+W25Q64上试了下,第一次建立个空白文件都需要200多毫秒。

不断建立新文件,每次只写入几十个 ...

你用的是什么版本?

出0入10汤圆

 楼主| 发表于 2019-8-31 04:28:07 | 显示全部楼层
相由心生 发表于 2019-8-24 01:29
你用的是什么版本?

下载的最新版

出590入1001汤圆

发表于 2022-1-28 14:58:35 | 显示全部楼层

谢谢,亲测可用!
我用的最新版本:
lfs_traverse要改成:lfs_fs_traverse

出0入4汤圆

发表于 2022-7-19 11:55:21 | 显示全部楼层
68336016 发表于 2019-8-10 17:52
在stm32f103+W25Q64上试了下,第一次建立个空白文件都需要200多毫秒。

不断建立新文件,每次只写入几十个 ...
(引用自7楼)

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

本版积分规则

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

GMT+8, 2024-6-2 00:45

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

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