我正在为 Linux 主机中的 FatFs 编写测试。
我正在尝试测试具有多线程支持的 FatFs(FF_FS_REENTRANT 为 1),ffsystem.c 已被移植到 Linux 主机,并使用 pthread_mutex 作为同步。
以下有 2 个 pthread 做同样的事情,
- 为 pthread 创建一个文件(例如,在同一分区“0:”中的 file_0.bin、file_1.bin)。
- 将模式写入其文件,
- 关闭文件,
- 重新打开文件,
- 读取文件,
- 检查模式是否与正在编写的相同。
通过上述步骤,有时我在第二个 pthread 尝试创建要写入的文件时遇到一个错误,像这样,f_open create failed: 0xD, (0xD 表示在磁盘中打开/创建文件时 NO_FILESYSTEM。)
在创建 2 个 pthread 之前,我调用了 f_disk() 和 f_mkfs() 将磁盘格式化为 exFat 格式,所以我认为磁盘中没有文件系统。
FatFs 似乎会读取磁盘分区表并对其进行解析,如果有任何错误,它会发出 NO_FILESYSTEM 错误。
所以我的问题是用多线程测试 FatFs 的正确方法是什么?