硬汉嵌入式论坛

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

[FatFs] 反复读写的文件内容首字节出错

[复制链接]

27

主题

183

回帖

264

积分

高级会员

积分
264
发表于 2025-4-28 09:17:42 | 显示全部楼层 |阅读模式
ST官方生成的代码,fatfs应该是0.12版本的,新建一个log.xt,在这个文件中记录另外的文件的大小,另外的文件增大后,这个log.txt就改写,比如里面是20250428之类的记录,后面跟上长度信息,像20250428就不更改了,只更改后面的长度信息,结果现在出现这种现象,20250428变成了00250428。用了FREE RTOS,FATFS也适配了操作系统,读写也做了信号量互斥。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2025-4-28 10:01:05 | 显示全部楼层
有个关键的地方,你的程序里面log.txt是逐步往后面添加内容,还是动态修改部分内容,动态修改部分内容必须固定长度。
回复

使用道具 举报

27

主题

183

回帖

264

积分

高级会员

积分
264
 楼主| 发表于 2025-4-28 10:17:13 | 显示全部楼层
本帖最后由 ccschen 于 2025-4-28 10:18 编辑
eric2013 发表于 2025-4-28 10:01
有个关键的地方,你的程序里面log.txt是逐步往后面添加内容,还是动态修改部分内容,动态修改部分内容必须 ...

肯定是固定长度,用的结构体,1字节对齐,现在还有个没注意到的地方,整体少了一个字节。是局部修改。不是顺序写。定位到要写的地方直接写。打算这样试下,直接整个结构体扔进去,现在是结构体部分位置修改,定位到结构体相对位置的。
回复

使用道具 举报

27

主题

183

回帖

264

积分

高级会员

积分
264
 楼主| 发表于 2025-4-29 00:22:23 | 显示全部楼层
eric2013 发表于 2025-4-28 10:01
有个关键的地方,你的程序里面log.txt是逐步往后面添加内容,还是动态修改部分内容,动态修改部分内容必须 ...

现在最大的问题是,文件明明存在,打开也正常,读的时候却 FR_INVALID_OBJECT
回复

使用道具 举报

27

主题

183

回帖

264

积分

高级会员

积分
264
 楼主| 发表于 2025-4-29 08:58:25 | 显示全部楼层
ccschen 发表于 2025-4-29 00:22
现在最大的问题是,文件明明存在,打开也正常,读的时候却 FR_INVALID_OBJECT

现在是打开文件正常,才定位文件中的读写位置,如果定位没问题才写,现在写是整个结构体写,因为读写不在一个地方,当然做了互斥的,整个结构体写目前没出问题,定位到某个字节写,估计和字节对齐有关系,只是猜测。
回复

使用道具 举报

27

主题

183

回帖

264

积分

高级会员

积分
264
 楼主| 发表于 2025-4-30 22:51:01 | 显示全部楼层
目前跑了一天没出现象了,把SDIO的DMA开到最高了,毕竟系统主频很低。后续有问题再反馈。
回复

使用道具 举报

27

主题

183

回帖

264

积分

高级会员

积分
264
 楼主| 发表于 2025-5-2 21:44:28 | 显示全部楼层
应该和这个文章最后一句一个意思。https://blog.csdn.net/zuoxi4621/article/details/132497410
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-11 04:23 , Processed in 0.245817 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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