commit
4d4597aa6c
@ -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
|
|||||||
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
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 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
|
|||||||
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
|
|||||||
}
|
}
|
||||||
|
|
||||||
__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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user