Skip to content

Commit fa32785

Browse files
committed
[dfs,fatfs] Get back dfs and [FatFs](http://elm-chan.org)
1 parent 28dc700 commit fa32785

31 files changed

+43025
-0
lines changed
Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
----------------------------------------------------------------------------
2+
Revision history of FatFs module
3+
----------------------------------------------------------------------------
4+
5+
R0.00 (February 26, 2006)
6+
7+
Prototype.
8+
9+
10+
11+
R0.01 (April 29, 2006)
12+
13+
The first release.
14+
15+
16+
17+
R0.02 (June 01, 2006)
18+
19+
Added FAT12 support.
20+
Removed unbuffered mode.
21+
Fixed a problem on small (<32M) partition.
22+
23+
24+
25+
R0.02a (June 10, 2006)
26+
27+
Added a configuration option (_FS_MINIMUM).
28+
29+
30+
31+
R0.03 (September 22, 2006)
32+
33+
Added f_rename().
34+
Changed option _FS_MINIMUM to _FS_MINIMIZE.
35+
36+
37+
38+
R0.03a (December 11, 2006)
39+
40+
Improved cluster scan algorithm to write files fast.
41+
Fixed f_mkdir() creates incorrect directory on FAT32.
42+
43+
44+
45+
R0.04 (February 04, 2007)
46+
47+
Added f_mkfs().
48+
Supported multiple drive system.
49+
Changed some interfaces for multiple drive system.
50+
Changed f_mountdrv() to f_mount().
51+
52+
53+
54+
R0.04a (April 01, 2007)
55+
56+
Supported multiple partitions on a physical drive.
57+
Added a capability of extending file size to f_lseek().
58+
Added minimization level 3.
59+
Fixed an endian sensitive code in f_mkfs().
60+
61+
62+
63+
R0.04b (May 05, 2007)
64+
65+
Added a configuration option _USE_NTFLAG.
66+
Added FSINFO support.
67+
Fixed DBCS name can result FR_INVALID_NAME.
68+
Fixed short seek (<= csize) collapses the file object.
69+
70+
71+
72+
R0.05 (August 25, 2007)
73+
74+
Changed arguments of f_read(), f_write() and f_mkfs().
75+
Fixed f_mkfs() on FAT32 creates incorrect FSINFO.
76+
Fixed f_mkdir() on FAT32 creates incorrect directory.
77+
78+
79+
80+
R0.05a (February 03, 2008)
81+
82+
Added f_truncate() and f_utime().
83+
Fixed off by one error at FAT sub-type determination.
84+
Fixed btr in f_read() can be mistruncated.
85+
Fixed cached sector is not flushed when create and close without write.
86+
87+
88+
89+
R0.06 (April 01, 2008)
90+
91+
Added fputc(), fputs(), fprintf() and fgets().
92+
Improved performance of f_lseek() on moving to the same or following cluster.
93+
94+
95+
96+
R0.07 (April 01, 2009)
97+
98+
Merged Tiny-FatFs as a configuration option. (_FS_TINY)
99+
Added long file name feature. (_USE_LFN)
100+
Added multiple code page feature. (_CODE_PAGE)
101+
Added re-entrancy for multitask operation. (_FS_REENTRANT)
102+
Added auto cluster size selection to f_mkfs().
103+
Added rewind option to f_readdir().
104+
Changed result code of critical errors.
105+
Renamed string functions to avoid name collision.
106+
107+
108+
109+
R0.07a (April 14, 2009)
110+
111+
Septemberarated out OS dependent code on reentrant cfg.
112+
Added multiple sector size feature.
113+
114+
115+
116+
R0.07c (June 21, 2009)
117+
118+
Fixed f_unlink() can return FR_OK on error.
119+
Fixed wrong cache control in f_lseek().
120+
Added relative path feature.
121+
Added f_chdir() and f_chdrive().
122+
Added proper case conversion to extended character.
123+
124+
125+
126+
R0.07e (November 03, 2009)
127+
128+
Septemberarated out configuration options from ff.h to ffconf.h.
129+
Fixed f_unlink() fails to remove a sub-directory on _FS_RPATH.
130+
Fixed name matching error on the 13 character boundary.
131+
Added a configuration option, _LFN_UNICODE.
132+
Changed f_readdir() to return the SFN with always upper case on non-LFN cfg.
133+
134+
135+
136+
R0.08 (May 15, 2010)
137+
138+
Added a memory configuration option. (_USE_LFN = 3)
139+
Added file lock feature. (_FS_SHARE)
140+
Added fast seek feature. (_USE_FASTSEEK)
141+
Changed some types on the API, XCHAR->TCHAR.
142+
Changed .fname in the FILINFO structure on Unicode cfg.
143+
String functions support UTF-8 encoding files on Unicode cfg.
144+
145+
146+
147+
R0.08a (August 16, 2010)
148+
149+
Added f_getcwd(). (_FS_RPATH = 2)
150+
Added sector erase feature. (_USE_ERASE)
151+
Moved file lock semaphore table from fs object to the bss.
152+
Fixed f_mkfs() creates wrong FAT32 volume.
153+
154+
155+
156+
R0.08b (January 15, 2011)
157+
158+
Fast seek feature is also applied to f_read() and f_write().
159+
f_lseek() reports required table size on creating CLMP.
160+
Extended format syntax of f_printf().
161+
Ignores duplicated directory separators in given path name.
162+
163+
164+
165+
R0.09 (September 06, 2011)
166+
167+
f_mkfs() supports multiple partition to complete the multiple partition feature.
168+
Added f_fdisk().
169+
170+
171+
172+
R0.09a (August 27, 2012)
173+
174+
Changed f_open() and f_opendir() reject null object pointer to avoid crash.
175+
Changed option name _FS_SHARE to _FS_LOCK.
176+
Fixed assertion failure due to OS/2 EA on FAT12/16 volume.
177+
178+
179+
180+
R0.09b (January 24, 2013)
181+
182+
Added f_setlabel() and f_getlabel().
183+
184+
185+
186+
R0.10 (October 02, 2013)
187+
188+
Added selection of character encoding on the file. (_STRF_ENCODE)
189+
Added f_closedir().
190+
Added forced full FAT scan for f_getfree(). (_FS_NOFSINFO)
191+
Added forced mount feature with changes of f_mount().
192+
Improved behavior of volume auto detection.
193+
Improved write throughput of f_puts() and f_printf().
194+
Changed argument of f_chdrive(), f_mkfs(), disk_read() and disk_write().
195+
Fixed f_write() can be truncated when the file size is close to 4GB.
196+
Fixed f_open(), f_mkdir() and f_setlabel() can return incorrect value on error.
197+
198+
199+
200+
R0.10a (January 15, 2014)
201+
202+
Added arbitrary strings as drive number in the path name. (_STR_VOLUME_ID)
203+
Added a configuration option of minimum sector size. (_MIN_SS)
204+
2nd argument of f_rename() can have a drive number and it will be ignored.
205+
Fixed f_mount() with forced mount fails when drive number is >= 1. (appeared at R0.10)
206+
Fixed f_close() invalidates the file object without volume lock.
207+
Fixed f_closedir() returns but the volume lock is left acquired. (appeared at R0.10)
208+
Fixed creation of an entry with LFN fails on too many SFN collisions. (appeared at R0.07)
209+
210+
211+
212+
R0.10b (May 19, 2014)
213+
214+
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)
216+
217+
218+
219+
R0.10c (November 09, 2014)
220+
221+
Added a configuration option for the platforms without RTC. (_FS_NORTC)
222+
Changed option name _USE_ERASE to _USE_TRIM.
223+
Fixed volume label created by Mac OS X cannot be retrieved with f_getlabel(). (appeared at R0.09b)
224+
Fixed a potential problem of FAT access that can appear on disk error.
225+
Fixed null pointer dereference on attempting to delete the root direcotry. (appeared at R0.08)
226+
227+
228+
229+
R0.11 (February 09, 2015)
230+
231+
Added f_findfirst(), f_findnext() and f_findclose(). (_USE_FIND)
232+
Fixed f_unlink() does not remove cluster chain of the file. (appeared at R0.10c)
233+
Fixed _FS_NORTC option does not work properly. (appeared at R0.10c)
234+
235+
236+
237+
R0.11a (September 05, 2015)
238+
239+
Fixed wrong media change can lead a deadlock at thread-safe configuration.
240+
Added code page 771, 860, 861, 863, 864, 865 and 869. (_CODE_PAGE)
241+
Removed some code pages actually not exist on the standard systems. (_CODE_PAGE)
242+
Fixed errors in the case conversion teble of code page 437 and 850 (ff.c).
243+
Fixed errors in the case conversion teble of Unicode (cc*.c).
244+
245+
246+
247+
R0.12 (April 12, 2016)
248+
249+
Added support for exFAT file system. (_FS_EXFAT)
250+
Added f_expand(). (_USE_EXPAND)
251+
Changed some members in FINFO structure and behavior of f_readdir().
252+
Added an option _USE_CHMOD.
253+
Removed an option _WORD_ACCESS.
254+
Fixed errors in the case conversion table of Unicode (cc*.c).
255+
256+
257+
258+
R0.12a (July 10, 2016)
259+
260+
Added support for creating exFAT volume with some changes of f_mkfs().
261+
Added a file open method FA_OPEN_APPEND. An f_lseek() following f_open() is no longer needed.
262+
f_forward() is available regardless of _FS_TINY.
263+
Fixed f_mkfs() creates wrong volume. (appeared at R0.12)
264+
Fixed wrong memory read in create_name(). (appeared at R0.12)
265+
Fixed compilation fails at some configurations, _USE_FASTSEEK and _USE_FORWARD.
266+
267+
268+
269+
R0.12b (September 04, 2016)
270+
271+
Improved f_rename() to be able to rename objects with the same name but case.
272+
Fixed an error in the case conversion teble of code page 866. (ff.c)
273+
Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12)
274+
Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12)
275+
Fixed f_mkfs() creating exFAT volume with too small cluster size can collapse unallocated memory. (appeared at R0.12)
276+
Fixed wrong object name can be returned when read directory at Unicode cfg. (appeared at R0.12)
277+
Fixed large file allocation/removing on the exFAT volume collapses allocation bitmap. (appeared at R0.12)
278+
Fixed some internal errors in f_expand() and f_lseek(). (appeared at R0.12)
279+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
FatFs Module Source Files R0.12a
2+
3+
4+
FILES
5+
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.
15+
16+
17+
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.
21+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# RT-Thread building script for component
2+
3+
from building import *
4+
5+
cwd = GetCurrentDir()
6+
src = Glob('*.c')
7+
CPPPATH = [cwd]
8+
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+
24+
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_DFS_ELMFAT'], CPPPATH = CPPPATH)
25+
26+
Return('group')

0 commit comments

Comments
 (0)