提交 4d4597aa 编写于 作者: B Bernard Xiong 提交者: GitHub

Merge pull request #742 from yygg/master

[dfs] fix f_mount error
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
* 2014-01-26 Bernard Check the sector size before mount. * 2014-01-26 Bernard Check the sector size before mount.
* 2017-02-13 Hichard Update Fatfs version to 0.12b, support exFAT. * 2017-02-13 Hichard Update Fatfs version to 0.12b, support exFAT.
* 2017-04-11 Bernard fix the st_blksize issue. * 2017-04-11 Bernard fix the st_blksize issue.
* 2017-05-26 Urey fix f_mount error when mount more fats
*/ */
#include <rtthread.h> #include <rtthread.h>
...@@ -114,11 +115,13 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d ...@@ -114,11 +115,13 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
FRESULT result; FRESULT result;
int index; int index;
struct rt_device_blk_geometry geometry; struct rt_device_blk_geometry geometry;
char logic_nbr[2] = {'0',':'};
/* get an empty position */ /* get an empty position */
index = get_disk(RT_NULL); index = get_disk(RT_NULL);
if (index == -1) if (index == -1)
return -DFS_STATUS_ENOENT; return -DFS_STATUS_ENOENT;
logic_nbr[0] = '0' + index;
/* save device */ /* save device */
disk[index] = fs->dev_id; disk[index] = fs->dev_id;
...@@ -140,7 +143,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d ...@@ -140,7 +143,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
} }
/* mount fatfs, always 0 logic driver */ /* mount fatfs, always 0 logic driver */
result = f_mount(fat,"", (BYTE)index); result = f_mount(fat,(const TCHAR*)logic_nbr, 1);
if (result == FR_OK) if (result == FR_OK)
{ {
char drive[8]; char drive[8];
...@@ -150,7 +153,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d ...@@ -150,7 +153,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
dir = (DIR *)rt_malloc(sizeof(DIR)); dir = (DIR *)rt_malloc(sizeof(DIR));
if (dir == RT_NULL) if (dir == RT_NULL)
{ {
f_mount(RT_NULL,"",(BYTE)index); f_mount(RT_NULL,(const TCHAR*)logic_nbr,1);
disk[index] = RT_NULL; disk[index] = RT_NULL;
rt_free(fat); rt_free(fat);
return -DFS_STATUS_ENOMEM; return -DFS_STATUS_ENOMEM;
...@@ -168,7 +171,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d ...@@ -168,7 +171,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
} }
__err: __err:
f_mount(RT_NULL, "", (BYTE)index); f_mount(RT_NULL, (const TCHAR*)logic_nbr, 1);
disk[index] = RT_NULL; disk[index] = RT_NULL;
rt_free(fat); rt_free(fat);
return elm_result_to_dfs(result); return elm_result_to_dfs(result);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册