Hc_IpxZerg 发表于 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

eric2013 发表于 2023-10-19 12:12:53

楼主这个是怎么个意思,没看懂。

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

Hc_IpxZerg 发表于 2023-10-19 12:53:55

eric2013 发表于 2023-10-19 12:12
楼主这个是怎么个意思,没看懂。

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

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

Hc_IpxZerg 发表于 2023-10-19 12:58:28

这是秒钟文件的数据

eric2013 发表于 2023-10-20 01:18:42

Hc_IpxZerg 发表于 2023-10-19 12:58
这是秒钟文件的数据
有可能是后面写入速度慢了。你当前一直都是sdsave线程里5ms一个周期循环用fprintf写入,fflush和fclose结束吗。

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

Hc_IpxZerg 发表于 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

eric2013 发表于 2023-10-21 01:41:54

Hc_IpxZerg 发表于 2023-10-20 17:51
这个应该不是写入过程的问题吧,用的append模式,fprintf、fflush、fclose,sdmmc时钟频率是200MHz,不分 ...

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

Hc_IpxZerg 发表于 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,是写入速度太快导致的吗?
页: [1]
查看完整版本: 文件夹内文件全部消失