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