This program is an example of of using the MSCUSBHost code with a raw build of ELM Chan Fat Fs. This was done to add both Long File Name Support along with proper time/date stamps (assuming you have a battery hooked up to keep time). This code exposes the Chan API (see main.cpp) and is NOT a c++ class: http://elm-chan.org/fsw/ff/00index_e.html The diskio.c file has the mapping needed to link the filesystem to the MSC stuff

Dependencies:   mbed

Committer:
emh203
Date:
Sun Jan 23 18:35:43 2011 +0000
Revision:
0:2dbbafe1b1fb
1st test version.   Test with raw mbed and Samtec USB-RA type A connector wired directly to pins.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emh203 0:2dbbafe1b1fb 1 /*---------------------------------------------------------------------------/
emh203 0:2dbbafe1b1fb 2 / FatFs - FAT file system module configuration file R0.07e (C)ChaN, 2009
emh203 0:2dbbafe1b1fb 3 /----------------------------------------------------------------------------/
emh203 0:2dbbafe1b1fb 4 /
emh203 0:2dbbafe1b1fb 5 / CAUTION! Do not forget to make clean the project after any changes to
emh203 0:2dbbafe1b1fb 6 / the configuration options.
emh203 0:2dbbafe1b1fb 7 /
emh203 0:2dbbafe1b1fb 8 /----------------------------------------------------------------------------*/
emh203 0:2dbbafe1b1fb 9 #ifndef _FFCONFIG
emh203 0:2dbbafe1b1fb 10 #define _FFCONFIG 0x007E
emh203 0:2dbbafe1b1fb 11
emh203 0:2dbbafe1b1fb 12
emh203 0:2dbbafe1b1fb 13 /*---------------------------------------------------------------------------/
emh203 0:2dbbafe1b1fb 14 / Function and Buffer Configurations
emh203 0:2dbbafe1b1fb 15 /----------------------------------------------------------------------------*/
emh203 0:2dbbafe1b1fb 16
emh203 0:2dbbafe1b1fb 17 #define _FS_TINY 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 18 /* When _FS_TINY is set to 1, FatFs uses the sector buffer in the file system
emh203 0:2dbbafe1b1fb 19 / object instead of the sector buffer in the individual file object for file
emh203 0:2dbbafe1b1fb 20 / data transfer. This reduces memory consumption 512 bytes each file object. */
emh203 0:2dbbafe1b1fb 21
emh203 0:2dbbafe1b1fb 22
emh203 0:2dbbafe1b1fb 23 #define _FS_READONLY 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 24 /* Setting _FS_READONLY to 1 defines read only configuration. This removes
emh203 0:2dbbafe1b1fb 25 / writing functions, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename,
emh203 0:2dbbafe1b1fb 26 / f_truncate and useless f_getfree. */
emh203 0:2dbbafe1b1fb 27
emh203 0:2dbbafe1b1fb 28
emh203 0:2dbbafe1b1fb 29 #define _FS_MINIMIZE 0 /* 0, 1, 2 or 3 */
emh203 0:2dbbafe1b1fb 30 /* The _FS_MINIMIZE option defines minimization level to remove some functions.
emh203 0:2dbbafe1b1fb 31 /
emh203 0:2dbbafe1b1fb 32 / 0: Full function.
emh203 0:2dbbafe1b1fb 33 / 1: f_stat, f_getfree, f_unlink, f_mkdir, f_chmod, f_truncate and f_rename
emh203 0:2dbbafe1b1fb 34 / are removed.
emh203 0:2dbbafe1b1fb 35 / 2: f_opendir and f_readdir are removed in addition to level 1.
emh203 0:2dbbafe1b1fb 36 / 3: f_lseek is removed in addition to level 2. */
emh203 0:2dbbafe1b1fb 37
emh203 0:2dbbafe1b1fb 38
emh203 0:2dbbafe1b1fb 39 #define _USE_STRFUNC 1 /* 0, 1 or 2 */
emh203 0:2dbbafe1b1fb 40 /* To enable string functions, set _USE_STRFUNC to 1 or 2. */
emh203 0:2dbbafe1b1fb 41
emh203 0:2dbbafe1b1fb 42
emh203 0:2dbbafe1b1fb 43 #define _USE_MKFS 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 44 /* To enable f_mkfs function, set _USE_MKFS to 1 and set _FS_READONLY to 0 */
emh203 0:2dbbafe1b1fb 45
emh203 0:2dbbafe1b1fb 46
emh203 0:2dbbafe1b1fb 47 #define _USE_FORWARD 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 48 /* To enable f_forward function, set _USE_FORWARD to 1 and set _FS_TINY to 1. */
emh203 0:2dbbafe1b1fb 49
emh203 0:2dbbafe1b1fb 50
emh203 0:2dbbafe1b1fb 51
emh203 0:2dbbafe1b1fb 52 /*---------------------------------------------------------------------------/
emh203 0:2dbbafe1b1fb 53 / Locale and Namespace Configurations
emh203 0:2dbbafe1b1fb 54 /----------------------------------------------------------------------------*/
emh203 0:2dbbafe1b1fb 55
emh203 0:2dbbafe1b1fb 56 #define _CODE_PAGE 437
emh203 0:2dbbafe1b1fb 57 /* The _CODE_PAGE specifies the OEM code page to be used on the target system.
emh203 0:2dbbafe1b1fb 58 / Incorrect setting of the code page can cause a file open failure.
emh203 0:2dbbafe1b1fb 59 /
emh203 0:2dbbafe1b1fb 60 / 932 - Japanese Shift-JIS (DBCS, OEM, Windows)
emh203 0:2dbbafe1b1fb 61 / 936 - Simplified Chinese GBK (DBCS, OEM, Windows)
emh203 0:2dbbafe1b1fb 62 / 949 - Korean (DBCS, OEM, Windows)
emh203 0:2dbbafe1b1fb 63 / 950 - Traditional Chinese Big5 (DBCS, OEM, Windows)
emh203 0:2dbbafe1b1fb 64 / 1250 - Central Europe (Windows)
emh203 0:2dbbafe1b1fb 65 / 1251 - Cyrillic (Windows)
emh203 0:2dbbafe1b1fb 66 / 1252 - Latin 1 (Windows)
emh203 0:2dbbafe1b1fb 67 / 1253 - Greek (Windows)
emh203 0:2dbbafe1b1fb 68 / 1254 - Turkish (Windows)
emh203 0:2dbbafe1b1fb 69 / 1255 - Hebrew (Windows)
emh203 0:2dbbafe1b1fb 70 / 1256 - Arabic (Windows)
emh203 0:2dbbafe1b1fb 71 / 1257 - Baltic (Windows)
emh203 0:2dbbafe1b1fb 72 / 1258 - Vietnam (OEM, Windows)
emh203 0:2dbbafe1b1fb 73 / 437 - U.S. (OEM)
emh203 0:2dbbafe1b1fb 74 / 720 - Arabic (OEM)
emh203 0:2dbbafe1b1fb 75 / 737 - Greek (OEM)
emh203 0:2dbbafe1b1fb 76 / 775 - Baltic (OEM)
emh203 0:2dbbafe1b1fb 77 / 850 - Multilingual Latin 1 (OEM)
emh203 0:2dbbafe1b1fb 78 / 858 - Multilingual Latin 1 + Euro (OEM)
emh203 0:2dbbafe1b1fb 79 / 852 - Latin 2 (OEM)
emh203 0:2dbbafe1b1fb 80 / 855 - Cyrillic (OEM)
emh203 0:2dbbafe1b1fb 81 / 866 - Russian (OEM)
emh203 0:2dbbafe1b1fb 82 / 857 - Turkish (OEM)
emh203 0:2dbbafe1b1fb 83 / 862 - Hebrew (OEM)
emh203 0:2dbbafe1b1fb 84 / 874 - Thai (OEM, Windows)
emh203 0:2dbbafe1b1fb 85 / 1 - ASCII only (Valid for non LFN cfg.)
emh203 0:2dbbafe1b1fb 86 */
emh203 0:2dbbafe1b1fb 87
emh203 0:2dbbafe1b1fb 88
emh203 0:2dbbafe1b1fb 89 #define _USE_LFN 1 /* 0, 1 or 2 */
emh203 0:2dbbafe1b1fb 90 #define _MAX_LFN 255 /* Maximum LFN length to handle (12 to 255) */
emh203 0:2dbbafe1b1fb 91 /* The _USE_LFN option switches the LFN support.
emh203 0:2dbbafe1b1fb 92 /
emh203 0:2dbbafe1b1fb 93 / 0: Disable LFN. _MAX_LFN and _LFN_UNICODE have no effect.
emh203 0:2dbbafe1b1fb 94 / 1: Enable LFN with static working buffer on the bss. NOT REENTRANT.
emh203 0:2dbbafe1b1fb 95 / 2: Enable LFN with dynamic working buffer on the STACK.
emh203 0:2dbbafe1b1fb 96 /
emh203 0:2dbbafe1b1fb 97 / The LFN working buffer occupies (_MAX_LFN + 1) * 2 bytes. When enable LFN,
emh203 0:2dbbafe1b1fb 98 / two Unicode handling functions ff_convert() and ff_wtoupper() must be added
emh203 0:2dbbafe1b1fb 99 / to the project. */
emh203 0:2dbbafe1b1fb 100
emh203 0:2dbbafe1b1fb 101
emh203 0:2dbbafe1b1fb 102 #define _LFN_UNICODE 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 103 /* To switch the character code set on FatFs API to Unicode,
emh203 0:2dbbafe1b1fb 104 / enable LFN feature and set _LFN_UNICODE to 1.
emh203 0:2dbbafe1b1fb 105 */
emh203 0:2dbbafe1b1fb 106
emh203 0:2dbbafe1b1fb 107
emh203 0:2dbbafe1b1fb 108 #define _FS_RPATH 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 109 /* When _FS_RPATH is set to 1, relative path feature is enabled and f_chdir,
emh203 0:2dbbafe1b1fb 110 / f_chdrive function are available.
emh203 0:2dbbafe1b1fb 111 / Note that output of the f_readdir fnction is affected by this option. */
emh203 0:2dbbafe1b1fb 112
emh203 0:2dbbafe1b1fb 113
emh203 0:2dbbafe1b1fb 114
emh203 0:2dbbafe1b1fb 115 /*---------------------------------------------------------------------------/
emh203 0:2dbbafe1b1fb 116 / Physical Drive Configurations
emh203 0:2dbbafe1b1fb 117 /----------------------------------------------------------------------------*/
emh203 0:2dbbafe1b1fb 118
emh203 0:2dbbafe1b1fb 119 #define _DRIVES 1
emh203 0:2dbbafe1b1fb 120 /* Number of volumes (logical drives) to be used. */
emh203 0:2dbbafe1b1fb 121
emh203 0:2dbbafe1b1fb 122
emh203 0:2dbbafe1b1fb 123 #define _MAX_SS 1024 /* 512, 1024, 2048 or 4096 */
emh203 0:2dbbafe1b1fb 124 /* Maximum sector size to be handled.
emh203 0:2dbbafe1b1fb 125 / Always set 512 for memory card and hard disk but a larger value may be
emh203 0:2dbbafe1b1fb 126 / required for floppy disk (512/1024) and optical disk (512/2048).
emh203 0:2dbbafe1b1fb 127 / When _MAX_SS is larger than 512, GET_SECTOR_SIZE command must be implememted
emh203 0:2dbbafe1b1fb 128 / to the disk_ioctl function. */
emh203 0:2dbbafe1b1fb 129
emh203 0:2dbbafe1b1fb 130
emh203 0:2dbbafe1b1fb 131 #define _MULTI_PARTITION 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 132 /* When _MULTI_PARTITION is set to 0, each volume is bound to the same physical
emh203 0:2dbbafe1b1fb 133 / drive number and can mount only first primaly partition. When it is set to 1,
emh203 0:2dbbafe1b1fb 134 / each volume is tied to the partitions listed in Drives[]. */
emh203 0:2dbbafe1b1fb 135
emh203 0:2dbbafe1b1fb 136
emh203 0:2dbbafe1b1fb 137
emh203 0:2dbbafe1b1fb 138 /*---------------------------------------------------------------------------/
emh203 0:2dbbafe1b1fb 139 / System Configurations
emh203 0:2dbbafe1b1fb 140 /----------------------------------------------------------------------------*/
emh203 0:2dbbafe1b1fb 141
emh203 0:2dbbafe1b1fb 142 #define _WORD_ACCESS 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 143 /* The _WORD_ACCESS option defines which access method is used to the word
emh203 0:2dbbafe1b1fb 144 / data on the FAT volume.
emh203 0:2dbbafe1b1fb 145 /
emh203 0:2dbbafe1b1fb 146 / 0: Byte-by-byte access. Always compatible with all platforms.
emh203 0:2dbbafe1b1fb 147 / 1: Word access. Do not choose this unless following condition is met.
emh203 0:2dbbafe1b1fb 148 /
emh203 0:2dbbafe1b1fb 149 / When the byte order on the memory is big-endian or address miss-aligned
emh203 0:2dbbafe1b1fb 150 / word access results incorrect behavior, the _WORD_ACCESS must be set to 0.
emh203 0:2dbbafe1b1fb 151 / If it is not the case, the value can also be set to 1 to improve the
emh203 0:2dbbafe1b1fb 152 / performance and code size. */
emh203 0:2dbbafe1b1fb 153
emh203 0:2dbbafe1b1fb 154
emh203 0:2dbbafe1b1fb 155 #define _FS_REENTRANT 0 /* 0 or 1 */
emh203 0:2dbbafe1b1fb 156 #define _FS_TIMEOUT 1000 /* Timeout period in unit of time ticks */
emh203 0:2dbbafe1b1fb 157 #define _SYNC_t HANDLE /* O/S dependent type of sync object. e.g. HANDLE, OS_EVENT*, ID and etc.. */
emh203 0:2dbbafe1b1fb 158 /* The _FS_REENTRANT option switches the reentrancy of the FatFs module.
emh203 0:2dbbafe1b1fb 159 /
emh203 0:2dbbafe1b1fb 160 / 0: Disable reentrancy. _SYNC_t and _FS_TIMEOUT have no effect.
emh203 0:2dbbafe1b1fb 161 / 1: Enable reentrancy. Also user provided synchronization handlers,
emh203 0:2dbbafe1b1fb 162 / ff_req_grant, ff_rel_grant, ff_del_syncobj and ff_cre_syncobj
emh203 0:2dbbafe1b1fb 163 / function must be added to the project. */
emh203 0:2dbbafe1b1fb 164
emh203 0:2dbbafe1b1fb 165
emh203 0:2dbbafe1b1fb 166 #endif /* _FFCONFIG */