Skip to content

Commit 953a9ee

Browse files
authored
Merge pull request #3681 from cliff-cmc/master
[components] dfs: update elmfat to R0.14 patch 1
2 parents a634327 + 1a9ecf2 commit 953a9ee

File tree

19 files changed

+19062
-33643
lines changed

19 files changed

+19062
-33643
lines changed

components/dfs/Kconfig

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,30 @@ if RT_USING_DFS
7878
default 2 if RT_DFS_ELM_USE_LFN_2
7979
default 3 if RT_DFS_ELM_USE_LFN_3
8080

81+
choice
82+
prompt "Support unicode for long file name"
83+
default RT_DFS_ELM_LFN_UNICODE_0
84+
85+
config RT_DFS_ELM_LFN_UNICODE_0
86+
bool "0: ANSI/OEM in current CP (TCHAR = char)"
87+
88+
config RT_DFS_ELM_LFN_UNICODE_1
89+
bool "1: Unicode in UTF-16 (TCHAR = WCHAR)"
90+
91+
config RT_DFS_ELM_LFN_UNICODE_2
92+
bool "2: Unicode in UTF-8 (TCHAR = char)"
93+
94+
config RT_DFS_ELM_LFN_UNICODE_3
95+
bool "3: Unicode in UTF-32 (TCHAR = DWORD)"
96+
endchoice
97+
98+
config RT_DFS_ELM_LFN_UNICODE
99+
int
100+
default 0 if RT_DFS_ELM_LFN_UNICODE_0
101+
default 1 if RT_DFS_ELM_LFN_UNICODE_1
102+
default 2 if RT_DFS_ELM_LFN_UNICODE_2
103+
default 3 if RT_DFS_ELM_LFN_UNICODE_3
104+
81105
config RT_DFS_ELM_MAX_LFN
82106
int "Maximal size of file name length"
83107
range 12 255

components/dfs/filesystems/elmfat/00history.txt

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ R0.10a (January 15, 2014)
212212
R0.10b (May 19, 2014)
213213

214214
Fixed a hard error in the disk I/O layer can collapse the directory entry.
215-
Fixed LFN entry is not deleted on delete/rename an object with lossy converted SFN. (appeared at R0.07)
215+
Fixed LFN entry is not deleted when delete/rename an object with lossy converted SFN. (appeared at R0.07)
216216

217217

218218

@@ -268,7 +268,7 @@ R0.12a (July 10, 2016)
268268

269269
R0.12b (September 04, 2016)
270270

271-
Improved f_rename() to be able to rename objects with the same name but case.
271+
Made f_rename() be able to rename objects with the same name but case.
272272
Fixed an error in the case conversion teble of code page 866. (ff.c)
273273
Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12)
274274
Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12)
@@ -277,3 +277,64 @@ R0.12b (September 04, 2016)
277277
Fixed large file allocation/removing on the exFAT volume collapses allocation bitmap. (appeared at R0.12)
278278
Fixed some internal errors in f_expand() and f_lseek(). (appeared at R0.12)
279279

280+
281+
282+
R0.12c (March 04, 2017)
283+
284+
Improved write throughput at the fragmented file on the exFAT volume.
285+
Made memory usage for exFAT be able to be reduced as decreasing _MAX_LFN.
286+
Fixed successive f_getfree() can return wrong count on the FAT12/16 volume. (appeared at R0.12)
287+
Fixed configuration option _VOLUMES cannot be set 10. (appeared at R0.10c)
288+
289+
290+
291+
R0.13 (May 21, 2017)
292+
293+
Changed heading character of configuration keywords "_" to "FF_".
294+
Removed ASCII-only configuration, FF_CODE_PAGE = 1. Use FF_CODE_PAGE = 437 instead.
295+
Added f_setcp(), run-time code page configuration. (FF_CODE_PAGE = 0)
296+
Improved cluster allocation time on stretch a deep buried cluster chain.
297+
Improved processing time of f_mkdir() with large cluster size by using FF_USE_LFN = 3.
298+
Improved NoFatChain flag of the fragmented file to be set after it is truncated and got contiguous.
299+
Fixed archive attribute is left not set when a file on the exFAT volume is renamed. (appeared at R0.12)
300+
Fixed exFAT FAT entry can be collapsed when write or lseek operation to the existing file is done. (appeared at R0.12c)
301+
Fixed creating a file can fail when a new cluster allocation to the exFAT directory occures. (appeared at R0.12c)
302+
303+
304+
305+
R0.13a (October 14, 2017)
306+
307+
Added support for UTF-8 encoding on the API. (FF_LFN_UNICODE = 2)
308+
Added options for file name output buffer. (FF_LFN_BUF, FF_SFN_BUF).
309+
Added dynamic memory allocation option for working buffer of f_mkfs() and f_fdisk().
310+
Fixed f_fdisk() and f_mkfs() create the partition table with wrong CHS parameters. (appeared at R0.09)
311+
Fixed f_unlink() can cause lost clusters at fragmented file on the exFAT volume. (appeared at R0.12c)
312+
Fixed f_setlabel() rejects some valid characters for exFAT volume. (appeared at R0.12)
313+
314+
315+
316+
R0.13b (April 07, 2018)
317+
318+
Added support for UTF-32 encoding on the API. (FF_LFN_UNICODE = 3)
319+
Added support for Unix style volume ID. (FF_STR_VOLUME_ID = 2)
320+
Fixed accesing any object on the exFAT root directory beyond the cluster boundary can fail. (appeared at R0.12c)
321+
Fixed f_setlabel() does not reject some invalid characters. (appeared at R0.09b)
322+
323+
324+
325+
R0.13c (October 14, 2018)
326+
Supported stdint.h for C99 and later. (integer.h was included in ff.h)
327+
Fixed reading a directory gets infinite loop when the last directory entry is not empty. (appeared at R0.12)
328+
Fixed creating a sub-directory in the fragmented sub-directory on the exFAT volume collapses FAT chain of the parent directory. (appeared at R0.12)
329+
Fixed f_getcwd() cause output buffer overrun when the buffer has a valid drive number. (appeared at R0.13b)
330+
331+
332+
333+
R0.14 (October 14, 2019)
334+
Added support for 64-bit LBA and GUID partition table (FF_LBA64 = 1)
335+
Changed some API functions, f_mkfs() and f_fdisk().
336+
Fixed f_open() function cannot find the file with file name in length of FF_MAX_LFN characters.
337+
Fixed f_readdir() function cannot retrieve long file names in length of FF_MAX_LFN - 1 characters.
338+
Fixed f_readdir() function returns file names with wrong case conversion. (appeared at R0.12)
339+
Fixed f_mkfs() function can fail to create exFAT volume in the second partition. (appeared at R0.12)
340+
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
FatFs Module Source Files R0.12a
1+
FatFs Module Source Files R0.14
22

33

44
FILES
55

6-
00readme.txt This file.
7-
history.txt Revision history.
8-
ffconf.h Configuration file for FatFs module.
9-
ff.h Common include file for FatFs and application module.
10-
ff.c FatFs module.
11-
diskio.h Common include file for FatFs and disk I/O module.
12-
diskio.c An example of glue function to attach existing disk I/O module to FatFs.
13-
integer.h Integer type definitions for FatFs.
14-
option Optional external functions.
6+
00readme.txt This file.
7+
00history.txt Revision history.
8+
ff.c FatFs module.
9+
ffconf.h Configuration file of FatFs module.
10+
ff.h Common include file for FatFs and application module.
11+
diskio.h Common include file for FatFs and disk I/O module.
12+
diskio.c An example of glue function to attach existing disk I/O module to FatFs.
13+
ffunicode.c Optional Unicode utility functions.
14+
ffsystem.c An example of optional O/S related functions.
1515

1616

1717
Low level disk I/O module is not included in this archive because the FatFs
18-
module is only a generic file system layer and not depend on any specific
19-
storage device. You have to provide a low level disk I/O module that written
20-
to control the target storage device.
18+
module is only a generic file system layer and it does not depend on any specific
19+
storage device. You need to provide a low level disk I/O module written to
20+
control the storage device that attached to the target system.
2121

components/dfs/filesystems/elmfat/SConscript

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,6 @@ cwd = GetCurrentDir()
66
src = Glob('*.c')
77
CPPPATH = [cwd]
88

9-
if GetDepend('RT_DFS_ELM_USE_LFN'):
10-
if GetDepend('RT_DFS_ELM_CODE_PAGE_FILE'):
11-
src += ['option/ccfile.c']
12-
else:
13-
if GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 932:
14-
src += ['option/cc932.c']
15-
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 936:
16-
src += ['option/cc936.c']
17-
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 949:
18-
src += ['option/cc949.c']
19-
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 950:
20-
src += ['option/cc950.c']
21-
else:
22-
src += ['option/ccsbcs.c']
23-
249
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_DFS_ELMFAT'], CPPPATH = CPPPATH)
2510

2611
Return('group')

0 commit comments

Comments
 (0)