本帖最后由 ctsdswk 于 2016-5-21 19:04 编辑
最新版本的RT thread只支持0.08的ELMFS,我在st网站上下了最新的0.11版并移植到了DFS下。主要改动是DFS与ELMFS之间的接口层文件dfs_elm.c。另外需要在0.11版的ff.c中加入以下代码:
#if _VOLUMES > 1
int elm_get_vol(FATFS *fat)
{
int vol;
for (vol = 0; vol < _VOLUMES; vol ++)
{
if (FatFs[vol] == fat) return vol;
}
return -1;
}
#endif
FRESULT f_seekdir(
DIR *dj, /* Pointer to the open directory object */
int offset /* the seek offset */
)
{
int i = 0;
if (dir_sdi(dj, 0) != FR_OK || offset < 0)
return FR_INT_ERR;
while(i < offset)
{
if(dir_read(dj, 0) != FR_OK || dir_next(dj, 0) != FR_OK)
return FR_INT_ERR;
i++;
}
return FR_OK;
}
由于时间有限,我只测试了创建长名称的目录。支持_LFN_UNICODE的0或1,_STRF_ENCODE的0或3,_VOLUMES的1或4。及其它们的组合。使用者需要仔细测试自己的环境,以免我没测试到的bug带来损失。
|