ffconf.h 12.9 KB
Newer Older
W
wenjun 已提交
1 2 3 4 5 6 7
#ifndef FFCONF_H
#define FFCONF_H

/*---------------------------------------------------------------------------/
/  FatFs Functional Configurations
/---------------------------------------------------------------------------*/

E
evanscjv 已提交
8
#ifndef __LITEOS_M__
W
wenjun 已提交
9 10
#include "los_mux.h"
#include "los_config.h"
E
evanscjv 已提交
11 12
#else
#include "fs_config.h"
13
#include "vfs_config.h"
E
evanscjv 已提交
14
#endif
W
wenjun 已提交
15 16 17 18 19 20 21

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif	/* __cplusplus */
#endif	/* __cplusplus */

F
Far 已提交
22
#define FFCONF_DEF	80196	/* Revision ID */
W
wenjun 已提交
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

/*---------------------------------------------------------------------------/
/ Function Configurations
/---------------------------------------------------------------------------*/

#define FF_FS_READONLY	0
/* This option switches read-only configuration. (0:Read/Write or 1:Read-only)
/  Read-only configuration removes writing API functions, f_write(), f_sync(),
/  f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree()
/  and optional writing functions as well. */


#define FF_FS_MINIMIZE	0
/* This option defines minimization level to remove some basic API functions.
/
/   0: Basic functions are fully enabled.
/   1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename()
/      are removed.
/   2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1.
/   3: f_lseek() function is removed in addition to 2. */


#define FF_USE_STRFUNC	0
/* This option switches string functions, f_gets(), f_putc(), f_puts() and f_printf().
/
/  0: Disable string functions.
/  1: Enable without LF-CRLF conversion.
/  2: Enable with LF-CRLF conversion. */


#define FF_USE_FIND		0
/* This option switches filtered directory read functions, f_findfirst() and
/  f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */


#define FF_USE_MKFS		1
/* This option switches f_mkfs() function. (0:Disable or 1:Enable) */


#define FF_USE_FASTSEEK	0
/* This option switches fast seek function. (0:Disable or 1:Enable) */

E
evanscjv 已提交
65
#ifndef __LITEOS_M__
W
wenjun 已提交
66
#define FF_USE_EXPAND	1
E
evanscjv 已提交
67 68 69
#else
#define FF_USE_EXPAND	0
#endif
W
wenjun 已提交
70 71 72
/* This option switches f_expand function. (0:Disable or 1:Enable) */


E
evanscjv 已提交
73
#ifndef __LITEOS_M__
W
wenjun 已提交
74
#define FF_USE_CHMOD	1
E
evanscjv 已提交
75 76 77
#else
#define FF_USE_CHMOD	0
#endif
W
wenjun 已提交
78 79 80 81
/* This option switches attribute manipulation functions, f_chmod() and f_utime().
/  (0:Disable or 1:Enable) Also FF_FS_READONLY needs to be 0 to enable this option. */


E
evanscjv 已提交
82
#ifndef __LITEOS_M__
W
wenjun 已提交
83
#define FF_USE_LABEL	1
E
evanscjv 已提交
84 85 86
#else
#define FF_USE_LABEL	0
#endif
W
wenjun 已提交
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
/* This option switches volume label functions, f_getlabel() and f_setlabel().
/  (0:Disable or 1:Enable) */


#define	FF_USE_FORWARD	0
/* This option switches f_forward() function. (0:Disable or 1:Enable) */


/*---------------------------------------------------------------------------/
/ Locale and Namespace Configurations
/---------------------------------------------------------------------------*/

#ifdef LOSCFG_FS_FAT_CHINESE
#define FF_CODE_PAGE	936
#else
#define FF_CODE_PAGE	437
#endif

/* This option specifies the OEM code page to be used on the target system.
/  Incorrect code page setting can cause a file open failure.
/
/   437 - U.S.
/   720 - Arabic
/   737 - Greek
/   771 - KBL
/   775 - Baltic
/   850 - Latin 1
/   852 - Latin 2
/   855 - Cyrillic
/   857 - Turkish
/   860 - Portuguese
/   861 - Icelandic
/   862 - Hebrew
/   863 - Canadian French
/   864 - Arabic
/   865 - Nordic
/   866 - Russian
/   869 - Greek 2
/   932 - Japanese (DBCS)
/   936 - Simplified Chinese (DBCS)
/   949 - Korean (DBCS)
/   950 - Traditional Chinese (DBCS)
/     0 - Include all code pages above and configured by f_setcp()
*/

E
evanscjv 已提交
132
#ifndef __LITEOS_M__
W
wenjun 已提交
133 134 135 136 137 138 139 140
#define MMC0_DEVNAME	"mmcblk0"
#define MMC1_DEVNAME	"mmcblk1"
#define USB_DEVNAME		"sda"
#define MMC_LENGTH		7		/* mmcblk0 */
enum STORAGE {
	MMC0,
	MMC1,
};
E
evanscjv 已提交
141
#endif
W
wenjun 已提交
142 143 144 145 146 147

#define FF_USE_LFN		2
#define FF_MAX_LFN		255
/* The FF_USE_LFN switches the support for LFN (long file name).
/
/   0: Disable LFN. FF_MAX_LFN has no effect.
F
Far 已提交
148
/   1: Enable LFN with static  working buffer on the BSS. Always NOT thread-safe.
W
wenjun 已提交
149 150 151
/   2: Enable LFN with dynamic working buffer on the STACK.
/   3: Enable LFN with dynamic working buffer on the HEAP.
/
F
Far 已提交
152 153 154 155 156 157
/  To enable the LFN, ffunicode.c needs to be added to the project. The LFN function
/  requiers certain internal working buffer occupies (FF_MAX_LFN + 1) * 2 bytes and
/  additional (FF_MAX_LFN + 44) / 15 * 32 bytes when exFAT is enabled.
/  The FF_MAX_LFN defines size of the working buffer in UTF-16 code unit and it can
/  be in range of 12 to 255. It is recommended to be set it 255 to fully support LFN
/  specification.
W
wenjun 已提交
158 159
/  When use stack for the working buffer, take care on stack overflow. When use heap
/  memory for the working buffer, memory management functions, ff_memalloc() and
F
Far 已提交
160
/  ff_memfree() exemplified in ffsystem.c, need to be added to the project. */
W
wenjun 已提交
161

E
evanscjv 已提交
162
#ifndef __LITEOS_M__
W
wenjun 已提交
163
#define FF_LFN_UNICODE	0
E
evanscjv 已提交
164 165 166
#else
#define FF_LFN_UNICODE	2
#endif
W
wenjun 已提交
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
/* This option switches the character encoding on the API when LFN is enabled.
/
/   0: ANSI/OEM in current CP (TCHAR = char)
/   1: Unicode in UTF-16 (TCHAR = WCHAR)
/   2: Unicode in UTF-8 (TCHAR = char)
/   3: Unicode in UTF-32 (TCHAR = DWORD)
/
/  Also behavior of string I/O functions will be affected by this option.
/  When LFN is not enabled, this option has no effect. */


#define FF_LFN_BUF		255
#define FF_SFN_BUF		12
/* This set of options defines size of file name members in the FILINFO structure
/  which is used to read out directory items. These values should be suffcient for
/  the file names to read. The maximum possible length of the read file name depends
/  on character encoding. When LFN is not enabled, these options have no effect. */


#define FF_STRF_ENCODE	3
/* When FF_LFN_UNICODE >= 1 with LFN enabled, string I/O functions, f_gets(),
/  f_putc(), f_puts and f_printf() convert the character encoding in it.
/  This option selects assumption of character encoding ON THE FILE to be
/  read/written via those functions.
/
/   0: ANSI/OEM in current CP
/   1: Unicode in UTF-16LE
/   2: Unicode in UTF-16BE
/   3: Unicode in UTF-8
*/

E
evanscjv 已提交
198
#ifndef __LITEOS_M__
W
wenjun 已提交
199
#define FF_FS_RPATH		0
E
evanscjv 已提交
200 201 202
#else
#define FF_FS_RPATH		1
#endif
W
wenjun 已提交
203 204 205 206 207 208 209 210 211 212 213 214
/* This option configures support for relative path.
/
/   0: Disable relative path and remove related functions.
/   1: Enable relative path. f_chdir() and f_chdrive() are available.
/   2: f_getcwd() function is available in addition to 1.
*/


/*---------------------------------------------------------------------------/
/ Drive/Volume Configurations
/---------------------------------------------------------------------------*/

E
evanscjv 已提交
215
#ifndef __LITEOS_M__
W
wenjun 已提交
216
#define FF_VOLUMES	LOSCFG_FS_FAT_VOLUMES
E
evanscjv 已提交
217 218 219
#else
#define FF_VOLUMES	4
#endif
W
wenjun 已提交
220 221 222 223 224 225 226 227
/* Number of volumes (logical drives) to be used. (1-10) */

#ifdef LOSCFG_FS_FAT_VIRTUAL_PARTITION
#define _DEFAULT_VIRVOLUEMS		4
#define _MIN_CLST				0x4000
#define _FLOAT_ACC				0.00000001
#endif

E
evanscjv 已提交
228
#ifndef __LITEOS_M__
W
wenjun 已提交
229 230
#define FF_STR_VOLUME_ID	0
#define FF_VOLUME_STRS		"RAM","NAND","CF","SD","SD2","USB","USB2","USB3"
E
evanscjv 已提交
231 232 233
#else
#define FF_STR_VOLUME_ID	2
#endif
W
wenjun 已提交
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
/* FF_STR_VOLUME_ID switches support for volume ID in arbitrary strings.
/  When FF_STR_VOLUME_ID is set to 1 or 2, arbitrary strings can be used as drive
/  number in the path name. FF_VOLUME_STRS defines the volume ID strings for each
/  logical drives. Number of items must not be less than FF_VOLUMES. Valid
/  characters for the volume ID strings are A-Z, a-z and 0-9, however, they are
/  compared in case-insensitive. If FF_STR_VOLUME_ID >= 1 and FF_VOLUME_STRS is
/  not defined, a user defined volume string table needs to be defined as:
/
/  const char* VolumeStr[FF_VOLUMES] = {"ram","flash","sd","usb",...
*/


#define FF_MULTI_PARTITION	1
/* This option switches support for multiple volumes on the physical drive.
/  By default (0), each logical drive number is bound to the same physical drive
/  number and only an FAT volume found on the physical drive will be mounted.
/  When this function is enabled (1), each logical drive number can be bound to
/  arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk()
/  funciton will be available. */


#define	FF_MIN_SS		512
E
evanscjv 已提交
256
#ifndef __LITEOS_M__
W
wenjun 已提交
257
#define FF_MAX_SS		4096
E
evanscjv 已提交
258 259 260
#else
#define FF_MAX_SS		FS_MAX_SS
#endif
W
wenjun 已提交
261 262 263 264 265 266 267 268
/* This set of options configures the range of sector size to be supported. (512,
/  1024, 2048 or 4096) Always set both 512 for most systems, generic memory card and
/  harddisk. But a larger value may be required for on-board flash memory and some
/  type of optical media. When FF_MAX_SS is larger than FF_MIN_SS, FatFs is configured
/  for variable sector size mode and disk_ioctl() function needs to implement
/  GET_SECTOR_SIZE command. */


E
evanscjv 已提交
269
#ifndef __LITEOS_M__
W
wenjun 已提交
270
#define FF_USE_TRIM		0
E
evanscjv 已提交
271 272 273
#else
#define FF_USE_TRIM		1
#endif
W
wenjun 已提交
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
/* This option switches support for ATA-TRIM. (0:Disable or 1:Enable)
/  To enable Trim function, also CTRL_TRIM command should be implemented to the
/  disk_ioctl() function. */



/*---------------------------------------------------------------------------/
/ System Configurations
/---------------------------------------------------------------------------*/

#define FF_FS_TINY		0
/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny)
/  At the tiny configuration, size of file object (FIL) is shrinked FF_MAX_SS bytes.
/  Instead of private sector buffer eliminated from the file object, common sector
/  buffer in the filesystem object (FATFS) is used for the file data transfer. */


#define FF_FS_NORTC		0
#define FF_NORTC_MON	1
#define FF_NORTC_MDAY	1
F
Far 已提交
294
#define FF_NORTC_YEAR	2020
W
wenjun 已提交
295 296 297 298 299 300 301
/* The option FF_FS_NORTC switches timestamp functiton. If the system does not have
/  any RTC function or valid timestamp is not needed, set FF_FS_NORTC = 1 to disable
/  the timestamp function. Every object modified by FatFs will have a fixed timestamp
/  defined by FF_NORTC_MON, FF_NORTC_MDAY and FF_NORTC_YEAR in local time.
/  To enable timestamp function (FF_FS_NORTC = 0), get_fattime() function need to be
/  added to the project to read current time form real-time clock. FF_NORTC_MON,
/  FF_NORTC_MDAY and FF_NORTC_YEAR have no effect.
F
Far 已提交
302 303 304 305 306 307 308 309 310 311 312 313 314
/  These options have no effect in read-only configuration (FF_FS_READONLY = 1). */


#define FF_FS_NOFSINFO	0
/* If you need to know correct free space on the FAT32 volume, set bit 0 of this
/  option, and f_getfree() function at first time after volume mount will force
/  a full FAT scan. Bit 1 controls the use of last allocated cluster number.
/
/  bit0=0: Use free cluster count in the FSINFO if available.
/  bit0=1: Do not trust free cluster count in the FSINFO.
/  bit1=0: Use last allocated cluster number in the FSINFO if available.
/  bit1=1: Do not trust last allocated cluster number in the FSINFO.
*/
W
wenjun 已提交
315

E
evanscjv 已提交
316
#ifndef __LITEOS_M__
W
wenjun 已提交
317
#define FF_FS_LOCK	CONFIG_NFILE_DESCRIPTORS
E
evanscjv 已提交
318
#else
319
#define FF_FS_LOCK	(CONFIG_NFILE_DESCRIPTORS + LOSCFG_MAX_OPEN_DIRS - MIN_START_FD)
E
evanscjv 已提交
320
#endif
W
wenjun 已提交
321 322 323 324 325 326 327 328 329 330 331
/* The option FF_FS_LOCK switches file lock function to control duplicated file open
/  and illegal operation to open objects. This option must be 0 when FF_FS_READONLY
/  is 1.
/
/  0:  Disable file lock function. To avoid volume corruption, application program
/      should avoid illegal open, remove and rename to the open objects.
/  >0: Enable file lock function. The value defines how many files/sub-directories
/      can be opened simultaneously under file lock control. Note that the file
/      lock control is independent of re-entrancy. */


E
evanscjv 已提交
332
#ifndef __LITEOS_M__
W
wenjun 已提交
333
#define FF_FS_REENTRANT	1
W
wangchenyang 已提交
334
#define FF_FS_TIMEOUT	LOS_WAIT_FOREVER
W
wenjun 已提交
335
#define FF_SYNC_t		LosMux
E
evanscjv 已提交
336 337 338 339 340
#else
#define FF_FS_REENTRANT	0
#define FF_FS_TIMEOUT	1000
#define FF_SYNC_t		HANDLE
#endif
W
wenjun 已提交
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369
/* The option FF_FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs
/  module itself. Note that regardless of this option, file access to different
/  volume is always re-entrant and volume control functions, f_mount(), f_mkfs()
/  and f_fdisk() function, are always not re-entrant. Only file/directory access
/  to the same volume is under control of this function.
/
/   0: Disable re-entrancy. FF_FS_TIMEOUT and FF_SYNC_t have no effect.
/   1: Enable re-entrancy. Also user provided synchronization handlers,
/      ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj()
/      function, must be added to the project. Samples are available in
/      option/syscall.c.
/
/  The FF_FS_TIMEOUT defines timeout period in unit of time tick.
/  The FF_SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*,
/  SemaphoreHandle_t and etc. A header file for O/S definitions needs to be
/  included somewhere in the scope of ff.h. */



/*--- End of configuration options ---*/

#ifdef __cplusplus
#if __cplusplus
}
#endif	/* __cplusplus */
#endif	/* __cplusplus */

#endif