硬汉嵌入式论坛

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

[RL-FlashFS] 文件夹内文件全部消失

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2023-10-19 10:57:36 | 显示全部楼层 |阅读模式
单片机H723,sdsave线程里5ms一个周期循环用fprintf写入,fflush和fclose结束,创建sec、min、min10、min20、hour、date文件夹,文件按日期存储,sec:86400行,min:1440行,min10:144行,min20:72行,date:24行,开始时采用当前系统时间赋初始值,后模拟自增时间日期,一晚上大概跑了一个半月的数据,第二天来时先屏蔽写入函数后断电拔出tf卡查看数据,发现sec文件夹下所有文件全部没有了,其他文件夹全部正常,卡在电脑端显示的内存为500M左右,但是去除sec文件夹其他文件夹文件加在一起只有20M,秒钟单个文件大小15M左右,只跑7天左右的数据按以上操作拔下tf卡是没有问题的,文件都在,找不到问题所在,drive cache size 给了4K,Filename cache size 给了800,用的短文件名,命名长度8
d40313cd2a006c4e77acc049caad086.png
620760f2b228f5eb95986b29dff2120.png
3c271b31126664623669d44ea4ad30c.png
b41f8f15533a9c5ea81e66c75459763.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-10-19 12:12:53 | 显示全部楼层
楼主这个是怎么个意思,没看懂。

60秒以内的存到SEC文件夹?
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-10-19 12:53:55 | 显示全部楼层
eric2013 发表于 2023-10-19 12:12
楼主这个是怎么个意思,没看懂。

60秒以内的存到SEC文件夹?

正常是每秒钟的秒钟值存在sec文件夹里,每一分钟的分钟值存在min1文件夹里,发现了bug就开始模拟运行,通过线程刷新时间提速,缩短排查周期,大概是现实的1秒可以写入秒钟文件60s左右的数据,一秒一行
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-10-19 12:58:28 | 显示全部楼层
这是秒钟文件的数据
e7e65fd7646225c92d06270e54a7176.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-10-20 01:18:42 | 显示全部楼层
Hc_IpxZerg 发表于 2023-10-19 12:58
这是秒钟文件的数据

有可能是后面写入速度慢了。你当前一直都是sdsave线程里5ms一个周期循环用fprintf写入,fflush和fclose结束吗。

如果这样的话,可以考虑测试下写入速度,就按照你当前的方式,看看是不是越来越大,导致到后面5ms已经远不够用了。FAT类文件系统容易有这种问题。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-10-20 17:51:21 | 显示全部楼层
eric2013 发表于 2023-10-20 01:18
有可能是后面写入速度慢了。你当前一直都是sdsave线程里5ms一个周期循环用fprintf写入,fflush和fclose结 ...

这个应该不是写入过程的问题吧,用的append模式,fprintf、fflush、fclose,sdmmc时钟频率是200MHz,不分频,这边用了ffind一直在扫描卡里的sec文件夹,每分钟输出发送到串口显示,在断电前一分钟,所有的文件名称还是可以扫出来的,断电前屏蔽了所有sd卡写入操作,断电后把卡插入电脑sec文件夹就啥都没了,有时候有,有时候显示未知名文件RRaA
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-10-21 01:41:54 | 显示全部楼层
Hc_IpxZerg 发表于 2023-10-20 17:51
这个应该不是写入过程的问题吧,用的append模式,fprintf、fflush、fclose,sdmmc时钟频率是200MHz,不分 ...

你这么描述的话,那是断电前操作不合理导致的? 有点不太理解你的问题了,断电前1分钟正常,断电前屏蔽了所有sd卡写入操作后查看不正常了? 这有点太诡异了,把SD卡所以使用RAM空间的Cache全关闭了看下。-
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-10-25 11:37:21 | 显示全部楼层
eric2013 发表于 2023-10-21 01:41
你这么描述的话,那是断电前操作不合理导致的? 有点不太理解你的问题了,断电前1分钟正常,断电前屏蔽了 ...

经测试,修改了以下两点,文件不会全部消失了
1.晶振配置错了,无源改成有源
2.关闭CUBEMX MPU配置里的Speculation default mode,重新配置一遍mpu
但是现在会出现写着写着当前秒钟文件消失并且以后的文件无法写进去无法创建这个问题,但写完的文件可以保存下来了,程序上写入一直fsok,请问硬汉哥这会是哪些问题导致的啊,找BUG仿真时间自增,延时5ms,大概每秒写入60行,每行写入200-300个字节,一天文件15M,是写入速度太快导致的吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 21:51 , Processed in 0.248025 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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