Add new FatFS implementation
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,8 +1,8 @@ | ||||
| /*----------------------------------------------------------------------------/ | ||||
| /  FatFs - Generic FAT Filesystem module  R0.14a                              / | ||||
| /  FatFs - Generic FAT Filesystem module  R0.14b                              / | ||||
| /-----------------------------------------------------------------------------/ | ||||
| / | ||||
| / Copyright (C) 2020, ChaN, all right reserved. | ||||
| / Copyright (C) 2021, ChaN, all right reserved. | ||||
| / | ||||
| / FatFs module is an open source software. Redistribution and use of FatFs in | ||||
| / source and binary forms, with or without modification, are permitted provided | ||||
| @@ -20,7 +20,7 @@ | ||||
|  | ||||
|  | ||||
| #ifndef FF_DEFINED | ||||
| #define FF_DEFINED	80196	/* Revision ID */ | ||||
| #define FF_DEFINED	86631	/* Revision ID */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| @@ -35,10 +35,14 @@ extern "C" { | ||||
|  | ||||
| /* Integer types used for FatFs API */ | ||||
|  | ||||
| #if defined(_WIN32)	/* Main development platform */ | ||||
| #if defined(_WIN32)		/* Windows VC++ (for development only) */ | ||||
| #define FF_INTDEF 2 | ||||
| #include <windows.h> | ||||
| typedef unsigned __int64 QWORD; | ||||
| #include <float.h> | ||||
| #define isnan(v) _isnan(v) | ||||
| #define isinf(v) (!_finite(v)) | ||||
|  | ||||
| #elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__cplusplus)	/* C99 or later */ | ||||
| #define FF_INTDEF 2 | ||||
| #include <stdint.h> | ||||
| @@ -48,6 +52,7 @@ typedef uint16_t		WORD;	/* 16-bit unsigned integer */ | ||||
| typedef uint32_t		DWORD;	/* 32-bit unsigned integer */ | ||||
| typedef uint64_t		QWORD;	/* 64-bit unsigned integer */ | ||||
| typedef WORD			WCHAR;	/* UTF-16 character type */ | ||||
|  | ||||
| #else  	/* Earlier than C99 */ | ||||
| #define FF_INTDEF 1 | ||||
| typedef unsigned int	UINT;	/* int must be 16-bit or 32-bit */ | ||||
| @@ -58,28 +63,29 @@ typedef WORD			WCHAR;	/* UTF-16 character type */ | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* Definitions of volume management */ | ||||
| /* Type of file size and LBA variables */ | ||||
|  | ||||
| #if FF_MULTI_PARTITION		/* Multiple partition configuration */ | ||||
| typedef struct { | ||||
| 	BYTE pd;	/* Physical drive number */ | ||||
| 	BYTE pt;	/* Partition: 0:Auto detect, 1-4:Forced partition) */ | ||||
| } PARTITION; | ||||
| extern PARTITION VolToPart[];	/* Volume - Partition mapping table */ | ||||
| #if FF_FS_EXFAT | ||||
| #if FF_INTDEF != 2 | ||||
| #error exFAT feature wants C99 or later | ||||
| #endif | ||||
|  | ||||
| #if FF_STR_VOLUME_ID | ||||
| #ifndef FF_VOLUME_STRS | ||||
| extern const char* VolumeStr[FF_VOLUMES];	/* User defied volume ID */ | ||||
| typedef QWORD FSIZE_t; | ||||
| #if FF_LBA64 | ||||
| typedef QWORD LBA_t; | ||||
| #else | ||||
| typedef DWORD LBA_t; | ||||
| #endif | ||||
| #else | ||||
| #if FF_LBA64 | ||||
| #error exFAT needs to be enabled when enable 64-bit LBA | ||||
| #endif | ||||
| typedef DWORD FSIZE_t; | ||||
| typedef DWORD LBA_t; | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Type of path name strings on FatFs API */ | ||||
|  | ||||
| #ifndef _INC_TCHAR | ||||
| #define _INC_TCHAR | ||||
| /* Type of path name strings on FatFs API (TCHAR) */ | ||||
|  | ||||
| #if FF_USE_LFN && FF_LFN_UNICODE == 1 	/* Unicode in UTF-16 encoding */ | ||||
| typedef WCHAR TCHAR; | ||||
| @@ -101,28 +107,22 @@ typedef char TCHAR; | ||||
| #define _TEXT(x) x | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* Definitions of volume management */ | ||||
|  | ||||
| /* Type of file size and LBA variables */ | ||||
| #if FF_MULTI_PARTITION		/* Multiple partition configuration */ | ||||
| typedef struct { | ||||
| 	BYTE pd;	/* Physical drive number */ | ||||
| 	BYTE pt;	/* Partition: 0:Auto detect, 1-4:Forced partition) */ | ||||
| } PARTITION; | ||||
| extern PARTITION VolToPart[];	/* Volume - Partition mapping table */ | ||||
| #endif | ||||
|  | ||||
| #if FF_FS_EXFAT | ||||
| #if FF_INTDEF != 2 | ||||
| #error exFAT feature wants C99 or later | ||||
| #if FF_STR_VOLUME_ID | ||||
| #ifndef FF_VOLUME_STRS | ||||
| extern const char* VolumeStr[FF_VOLUMES];	/* User defied volume ID */ | ||||
| #endif | ||||
| typedef QWORD FSIZE_t; | ||||
| #if FF_LBA64 | ||||
| typedef QWORD LBA_t; | ||||
| #else | ||||
| typedef DWORD LBA_t; | ||||
| #endif | ||||
| #else | ||||
| #if FF_LBA64 | ||||
| #error exFAT needs to be enabled when enable 64-bit LBA | ||||
| #endif | ||||
| typedef DWORD FSIZE_t; | ||||
| typedef DWORD LBA_t; | ||||
| #endif | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| /  FatFs Functional Configurations | ||||
| /---------------------------------------------------------------------------*/ | ||||
|  | ||||
| #define FFCONF_DEF	80196	/* Revision ID */ | ||||
| #define FFCONF_DEF	86631	/* Revision ID */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------/ | ||||
| / Function Configurations | ||||
| @@ -25,14 +25,6 @@ | ||||
| /   3: f_lseek() function is removed in addition to 2. */ | ||||
|  | ||||
|  | ||||
| #define FF_USE_STRFUNC	1 | ||||
| /* 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		1 | ||||
| /* This option switches filtered directory read functions, f_findfirst() and | ||||
| /  f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */ | ||||
| @@ -64,6 +56,30 @@ | ||||
| /* This option switches f_forward() function. (0:Disable or 1:Enable) */ | ||||
|  | ||||
|  | ||||
| #define FF_USE_STRFUNC	1 | ||||
| #define FF_PRINT_LLI	0 | ||||
| #define FF_PRINT_FLOAT	0 | ||||
| #define FF_STRF_ENCODE	0 | ||||
| /* FF_USE_STRFUNC switches string functions, f_gets(), f_putc(), f_puts() and | ||||
| /  f_printf(). | ||||
| / | ||||
| /   0: Disable. FF_PRINT_LLI, FF_PRINT_FLOAT and FF_STRF_ENCODE have no effect. | ||||
| /   1: Enable without LF-CRLF conversion. | ||||
| /   2: Enable with LF-CRLF conversion. | ||||
| / | ||||
| /  FF_PRINT_LLI = 1 makes f_printf() support long long argument and FF_PRINT_FLOAT = 1/2 | ||||
|    makes f_printf() support floating point argument. These features want C99 or later. | ||||
| /  When FF_LFN_UNICODE >= 1 with LFN enabled, string functions convert the character | ||||
| /  encoding in it. FF_STRF_ENCODE 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 | ||||
| */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------/ | ||||
| / Locale and Namespace Configurations | ||||
| /---------------------------------------------------------------------------*/ | ||||
| @@ -137,19 +153,6 @@ | ||||
| /  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 | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define FF_FS_RPATH		2 | ||||
| /* This option configures support for relative path. | ||||
| / | ||||
| @@ -194,7 +197,7 @@ | ||||
| #define FF_MAX_SS		512 | ||||
| /* 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 | ||||
| /  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. */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user