我有一个在 STM32F7 上运行的数据记录系统,它使用 ChaN 的 FatFs 将数据存储到 SD 卡: http ://elm-chan.org/fsw/ff/00index_e.html
每组新数据都存储在带有目录的单独文件中。在设备上进行后处理期间,会读取每个文件,然后将其删除。在测试了包含 5000 个文件的目录中的打开、读取、删除序列后,我发现我扫描的目录越远,它的速度就越慢。
一开始这个循环大约需要 100-200 毫秒,2000 个文件,现在需要 700 毫秒。有没有更快的存储、读取、删除数据的方法?或配置 FatFs?
编辑:抱歉应该指定,我使用 FAT32 作为 FAT 文件系统
f_opendir(&directory, "log");
while(1) {
f_readdir(&directory, &fInfo);
if(fInfo.fname[0] == 0) {
//end of the directory
break;
}
if(fInfo.fname[0] == '.') {
//ignore the dot entries
continue;
}
if(fInfo.fattrib & AM_DIR) {
//its a directory (shouldnt be here), ignore it
continue;
}
sprintf(path, "log/%s", fInfo.fname);
f_open(&file, path, FA_READ);
f_read(&file, rBuf, btr, &br);
f_close(&file);
//process data...
f_unlink(path); //delete after processing
}