OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4730|回复: 4

littlefs文件系统,写没有问题,读有问题是什么原因

[复制链接]

15

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
299
金钱
299
注册时间
2021-9-8
在线时间
54 小时
发表于 2022-10-13 14:06:17 | 显示全部楼层 |阅读模式
100金钱
int32_t i,j,k;
lfs_ret = lfs_file_open(&lfs, &hfile,"test",LFS_O_WRONLY|LFS_O_CREAT);
k=sizeof (WriteBuffer);
i=lfs_file_write(&lfs, &hfile, &WriteBuffer,sizeof (WriteBuffer));//返回的数值和k一样
j=lfs_file_close(&lfs, &hfile);//返回的0,正常关闭
lfs_ret = lfs_file_open(&lfs, &hfile,"test",LFS_O_RDONLY);//返回-84
i的值和k一样,j是0,后面读的时候返回-84,什么问题?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2070
金钱
2070
注册时间
2021-7-17
在线时间
647 小时
发表于 2022-10-13 15:18:06 | 显示全部楼层
自己写了一个测试,是可以正常读写的
FATFS文件读写.jpg
回复

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
773
金钱
773
注册时间
2021-4-15
在线时间
304 小时
发表于 2022-10-13 19:12:01 | 显示全部楼层
ChenRyan 发表于 2022-10-13 15:18
自己写了一个测试,是可以正常读写的

你这是不一样的文件系统吧!
日常敲键--头秃一片
回复

使用道具 举报

15

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
299
金钱
299
注册时间
2021-9-8
在线时间
54 小时
 楼主| 发表于 2022-10-14 08:32:30 | 显示全部楼层
ChenRyan 发表于 2022-10-13 15:18
自己写了一个测试,是可以正常读写的

对,正常这个应该是没有问题的,我另一个程序也用了这个,就可以正常读写。这个不知道怎么回事就不行,还有在debug调试时多复位几次,第一次读和写都没有问题,第二次就有问题了, 找了好久的问题了,大佬想想大概是什么问题
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2019-2-15
在线时间
33 小时
发表于 2022-10-16 22:23:30 | 显示全部楼层
求解: 我用 littlefs 驱动 AT24C32 ,都能跑起来了,官方的实例 boot_count 一直在++,但是一直发现 只是在读写 eeprom的0x00-0xFF 的地址,eeprom 0x100地址都没有读写到,没有达到磨损均衡

请问这些参数该如何配置

const struct lfs_config cfg = {
    // block device operations
    .read = lfs_deskio_read,
    .prog = lfs_deskio_prog,
    .erase = lfs_deskio_erase,
    .sync = lfs_deskio_sync,

    // block device configuration
    .read_size = 8, // 最小读取字节数,所有的读取操作字节数必须是它的倍数(影响内存消耗)
    .prog_size = 8, // 最小写入字节数,所有的读取操作字节数必须是它的倍数(影响内存消耗)

    //擦除块字节数 不会影响内存消耗;这个数值可以比物理擦除地址大,但是这个数值应该尽可能小,
    //因为每个文件至少占用一个块;值必须是读取和编程粒度的整数倍;
    .block_size = 128,
    .block_count = 4096, // 可以被擦除的块数量,取决于设备容量
    .cache_size = 16,
    .lookahead_size = 16,

    //littlefs逐出元数据日志并将元数据移动到另一个块之前的擦除周期数。 建议值在
        //100-1000范围内,较大的值具有较好的性能,但是会导致磨损分布不均匀。
        // -1 禁用块级磨损均衡
    .block_cycles = 500,

    //
    // 使用静态内存必须设置这几个缓存
    //
    .read_buffer = read_buffer,
    .prog_buffer = prog_buffer,
    .lookahead_buffer = lookahead_buffer,
};
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 02:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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