背景:


rtthread 5.1.0 标准版
littleFS 2.11.0,开启了 LFS_THREADSAFE,基于FAL,spi flash驱动采用自己编写的驱动

文件系统做了强度测试(约24小时,创建,写,读,删除多个文件。文件大小随机,内容随机)

现象

线程A定时1秒读取文件1某几个字节内容,线程B手工操作读取文件2,计算文件的CRC32。几乎必现以下错误:
 

..\components\littlefs-2.11.0\lfs.c:1387:error: Corrupted dir pair at {0x1, 0x0}
..\components\littlefs-2.11.0\lfs.c:1387:error: Corrupted dir pair at {0x1, 0x0}
..\components\littlefs-2.11.0\lfs.c:1387:error: Corrupted dir pair at {0x1, 0x0}

文件2 的CRC32计算不对。在线程A不操作文件后,没有出现该问题。

推测可能是多个线程操作引起

结论

采用lfs时,不推荐多线程操作文件系统。
或者引入更高层级的文件系统,例如rtthrea的DFS组件

参考:https://blog.csdn.net/gitblog_00320/article/details/151347698

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐