硬汉嵌入式论坛

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

[LittleFS] littlefs写小文件遇到LFS_BLOCK_INLINE断言???

[复制链接]

4

主题

5

回帖

17

积分

新手上路

积分
17
发表于 2021-7-31 21:17:21 | 显示全部楼层 |阅读模式
目前用的最新版本2.4
当我新建一个文件,并尝试写入一段小数据的时候,必然会遇到lfs_bd_prog函数中第200行的断言:
  1. LFS_ASSERT(block == LFS_BLOCK_INLINE || block < lfs->cfg->block_count);
复制代码
稍微调试了一下,发现是数据只要小于块/8的时候就会遇到这个问题. 有老铁指导一下,为嘛出现这种情况吗? 之前用的2.0倒是好好的.
我用的配置如下:
#define MEM_LFS_TOTAL_SIZE      (1024*1024)      #define FLASH_SECTOR_SIZE   0x1000    .read_size = 256,    .prog_size = 256,    .block_size = FLASH_SECTOR_SIZE,    .block_count = (MEM_LFS_TOTAL_SIZE/FLASH_SECTOR_SIZE),    .cache_size = 4096, //must be mul of read_size/prog_size size    .lookahead_size = 16,    .block_cycles = 500,
track log:
do write
lfs.c:5185:trace: lfs_file_write(0x5644c292e040, 0x7fffe42691c0, 0x5644c3b3b6b0, 512, 0x100103)
lfs.c:2946:trace: pos:0 size:512 csize:0
lfs.c:2979:trace: max:512, min:512
lfs.c:2981:trace: 4096 0 4096
lfs.c:3028:trace: set LFS_BLOCK_INLINE for off 0
lfs.c:199:trace: block=0xfffffffe,oft=0x0
ASSERT:lfs.c 200

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116196
QQ
发表于 2021-8-1 08:31:56 | 显示全部楼层
帮顶。
回复

使用道具 举报

69

主题

478

回帖

690

积分

金牌会员

积分
690
发表于 2021-8-4 09:34:29 | 显示全部楼层
硬汉研究下这个小FS吧,也出个教程
回复

使用道具 举报

24

主题

133

回帖

205

积分

高级会员

积分
205
发表于 2025-1-3 13:39:39 | 显示全部楼层
这个属于flash读写擦接口问题。
1 - 把timeout时间调大一点。线程多的时候写擦时间会变大;
2 - 步骤1失败后直接while(1)等待看门狗复位,不要返回err,不然还是会触发断言。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 18:52 , Processed in 0.238579 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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