FatFS/doc/00index_e.html
savelij13 9a43e8b517 fatfs v0.03 Sep 22, 2006:
- Added f_rename().
- Changed option _FS_MINIMUM to _FS_MINIMIZE.
2025-09-11 08:56:57 +03:00

116 lines
5.5 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="alternate" hreflang="ja" title="Japanese version" href="00index_j.html">
<link rel="stylesheet" href="css_e.css" type="text/css" media="screen" title="ELM Default">
<title>ELM - Generic FAT Files System Module</title>
</head>
<body>
<h1>FAT File System Module</h1>
<hr>
<div class="abst">
<img src="layers.png" class="rset" width="245" height="255">
<p>FatFs module is an experimental project to implement FAT file system to small embdded systems. The FatFs module is written in compliance with ANSI C, therefore it is independent of hardware architecture. It can be incorporated into most small microcontrollers, such as 8051, PIC, AVR, H8, Z80 and etc..., without any change. I created two modules in different configurations in consideration of various use. To use the FatFs module, low level disk I/O functions for each media must be provided by user.</p>
<h4>Features of FatFs Module</h4>
<ul>
<li>Separated buffer for FAT and each file. Suitable for fast multiple file accsess.</li>
<li>Optimized for 8/16 bit microcontrollers.</li>
<li>Low memory consumption</li>
<li>Supports FAT12, FAT16(+FAT64) and FAT32 <small>(FAT64: FAT16 in 64KB/cluster)</small></li>
<li>Supports 8.3 format file name and NT lower capital flags</li>
<li>Supports two partitioning formats: FDISK (only 1st primariy partition) and SFD (only 512B/sector)</li>
</ul>
<h4>Features of Tiny-FatFs Module</h4>
<ul>
<li>Only a common buffer for FAT and each file to reduce memory consumption.</li>
<li>Optimized for 8/16 bit microcontrollers.</li>
<li>Low memory consumption , suitable for small memory system (1KB)</li>
<li>Supports FAT12 and FAT16(+FAT64)</li>
<li>Supports 8.3 format file name and NT lower capital flags</li>
<li>Supports two partitioning formats: FDISK (only 1st primariy partition) and SFD (only 512B/sector)</li>
</ul>
</div>
<div class="para">
<h3>Memory Usage</h3>
<p>There are some configuration options to eliminate unused functions to reduce module size. Following tables are memory consumption in unit of byte on avr-gcc.</p>
<div class="lset">
<table class="lst2">
<caption>FatFs</caption>
<tr><th>Section</th><th>Std cfg.</th><th>Min cfg.</th></tr>
<tr><td>Program (R/W cfg.)</td><td>8554</td><td>6020</td></tr>
<tr><td>Program (R/O cfg.)</td><td>4170</td><td>3400</td></tr>
<tr><td>Static Work Area</td><td colspan="2">2</td>
<tr><td>Dynamic Work Area</td><td colspan="2">544 + 540 * &lt;files&gt;</td>
</table>
</div>
<table class="lst2">
<caption>Tiny-FatFs</caption>
<tr><th>Section</th><th>Std cfg.</th><th>Min cfg.</th></tr>
<tr><td>Program (R/W cfg.)</td><td>7112</td><td>4836</td></tr>
<tr><td>Program (R/O cfg.)</td><td>3538</td><td>2774</td></tr>
<tr><td>Static Work Area</td><td colspan="2">2</td></tr>
<tr><td>Dynamic Work Area</td><td colspan="2">538 + 24 * &lt;files&gt;</td></tr>
</table>
</div>
<div class="para">
<h3>Application Interface</h3>
<p>FatFs/Tiny-FatFs module provides following functions.</p>
<ul>
<li><a href="en/open.html">f_open</a> - Open/Create a File</li>
<li><a href="en/close.html">f_close</a> - Close a File</li>
<li><a href="en/read.html">f_read</a> - Read File</li>
<li><a href="en/write.html">f_write</a> - Write File</li>
<li><a href="en/lseek.html">f_lseek</a> - Move R/W Pointer</li>
<li><a href="en/sync.html">f_sync</a> - Flush Cached Data</li>
<li><a href="en/opendir.html">f_opendir</a> - Open a Directory</li>
<li><a href="en/readdir.html">f_readdir</a> - Read a Directory Item</li>
<li><a href="en/getfree.html">f_getfree</a> - Get Free Clusters</li>
<li><a href="en/stat.html">f_stat</a> - Get File Status</li>
<li><a href="en/mkdir.html">f_mkdir</a> - Create a Directory</li>
<li><a href="en/unlink.html">f_unlink</a> - Remove a File or Directory</li>
<li><a href="en/chmod.html">f_chmod</a> - Change Attribute</li>
<li><a href="en/rename.html">f_rename</a> - Rename/Move a File or Directory</li>
<li><a href="en/mountdrv.html">f_mountdrv</a> - Force Initialized FatFs Module</li>
</ul>
</div>
<div class="para">
<h3>Disk I/O Interface</h3>
<p>Since the FatFs/Tiny-FatFs module is completely separated from disk I/O layer, it requires following functions to lower layer to read/write physical disk and to get current time.</p>
<ul>
<li><a href="en/dinit.html">disk_initialize</a> - Initialize disk drive</li>
<li><a href="en/dstat.html">disk_status</a> - Get disk status</li>
<li><a href="en/dread.html">disk_read</a> - Read sector(s)</li>
<li><a href="en/dwrite.html">disk_write</a> - Write sector(s)</li>
<li><a href="en/fattime.html">get_fattime</a> - Get current time</li>
</ul>
</div>
<div class="para">
<h3>Resources</h3>
<p>The FatFs/Tiny-FatFs module is a free software and is opened for education, research and development. You can use, modify and/or republish it for personal, non-profit or profit use without any restriction under your responsibility.</p>
<br>
<ul>
<li><a href="ff003.zip">FatFs/Tiny-FatFs R0.03 Source Files</a> <span class="mfd">Sep. 22, 2006</span></li>
<li><a href="rwtest.png">Benchmark</a> (Test Board: ATmega64/9.2MHz with <a href="rw_mmc.jpeg">MMC</a>/<a href="rw_ata.jpeg">HDD</a>/<a href="rw_cfc.jpeg">CFC</a>)</li>
<li><a href="http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx">FAT32 Specification</a> (Microsoft)</li>
<li><a href="http://elm-chan.org/docs/mmc/mmc_e.html">How to Use an MMC</a></li>
</ul>
</div>
</body>
</html>