File and Path name on the FatFs module

The format of file and path name on the FatFs module is similer to MS-DOS. However it does not have a concept of current directory, all objects on the drive are specified in full path name from the root directory.


 "[drive#:][/]directory/file"

 "file1.txt"           a file on drive 0
 "/file1.txt"          (same as above)
 "dir1/dir2/file1.txt" a file on drive 0
 "2:dir3/file2.txt"    a file on drive 2
 "2:/dir5"             a directory on drive 2
 ""                    the root directory on drive 0
 "/"                   (same as above)
 "2:"                  the root directory on drive 2

The FatFs module supports only 8.3 format file name and long file name is currentry not supported. For directory separator, a '/' is used, not a '\'. Heading '/' is ignored and can be omitted.

The logical drive number is specified in a numeral with a colon. When the drive number is omitted, it means the default drive (0). As for the Tiny-FatFs, it has only one logical drive and always works as drive 0. Any drive number cannot be contained in the path name.


Correspondence between logical/physical drive

In default, the FatFs module has work areas that called `file system object' for each logical drive. The logical drive is bound simply to the physical drive that has same drive number, and first partition is mounted. When _MULTI_PARTITION is specified in configuration option, each individual logical drive can be bound to any physical drive/partition. In this case, a drive number resolution table must be defined as follows:

Example: Logical drive 0-2 are assigned to three pri-partitions on the physical drive 0 (fixed disk)
         Logical drive 3 is assigned to physical drive 0 (removable disk)

const PARTITION Drives[] = {
    {0, 0},     /* Logical drive 0 ==> Physical drive 0, 1st partition */
    {0, 1},     /* Logical drive 1 ==> Physical drive 0, 2nd partition */
    {0, 2},     /* Logical drive 2 ==> Physical drive 0, 3rd partition */
    {1, 0}      /* Logical drive 3 ==> Physical drive 1 */
};

There are some consideration when use _MULTI_PARTITION configuration.