我在基于 Cortex M4 的平台上运行的 C++ 应用程序中集成了 FatFS。
我的应用程序包括将数据记录到称为MDF的数据格式。
在实现方面,我将数据(到给定文件)成批地记录在缓冲区中;缓冲区的数量取决于我获取数据的速度: log batch of one buffer 。. . 做其他事情。. . 日志批处理五个缓冲区。. . 做其他事情。. . 等等
还有一个 24 字节的标头,包含数据的字节数。在 PC 上,我只会在测量结束时保存标头,但这是一种嵌入式产品,可以随时断电。如果我不定期保存标题,文件就会“损坏”。
因此,为了保持一致性,我需要在保存每批数据后重新保存标题,这就是我的问题所在。
这意味着我必须f_lseek
在写标题之前调用,然后再写这批数据。
我正在使用f_cache_fptr
所以f_lseek
速度并不慢,但我想避免需要f_lseek
如此频繁地打电话。
问题
是否有可能以某种方式拥有 2 个搜索位置,这样我就不需要f_seek
在标题位置和数据位置之间调用乒乓球?
我愿意修改 FatFS。
在底层,问题更简单,因为标头只与数据共享一个512 字节的扇区:24 字节的标头,然后是 488 字节的数据。