通过FATFS同时对多个文件写数据的问题

2019-12-21 12:12发布

我通过RT-Thread开了两个优先级相同的线程。在两个线程中分别用FATFS向U盘中写数据,也是写成两个不同的文件用的独立的文件句柄。数据是从DMA传来的,但是写数据的过程中发现f_write返回的是FR_INT_ERR错误。两个线程如果只开其中一个写数据是正常的,FATFS不能同时向多个文件写数据么。请问出现问题的原因在哪?谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
aozima
2019-12-22 00:06
本帖最后由 aozima 于 2018-2-23 09:34 编辑
  1. /* Reentrancy (thread safe) of the FatFs module.  */
  2. #define RT_DFS_ELM_REENTRANT
复制代码

RT-Thread里面,设置上面的参数,会自动把 FF_FS_REENTRANT  设置为1

另外DMA要特别留意一下buf地址对齐
有些DMA自己支持非对齐拆分(如F4),需要设置为字节传输。
不支持的,如F1,需要自己做判断,有必要的话,本地做一次拷贝。

有cache的硬件上面,还需要做cache line对齐,并手动刷新cache

一周热门 更多>