FatFS/doc/00index_e.html
savelij13 3d65978d31 fatfs v0.04 Feb 04, 2007:
- Supported multiple drive system.
- Changed some APIs for multiple drive system.
- Added f_mkfs().
2025-09-11 09:03:34 +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="start" title="Site Top" href="../../">
<link rel="up" title="Freewares" href="../../fsw_e.html">
<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="img/layers.png" class="rset" width="245" height="255" alt="layer">
<p>FatFs module is an experimental project to implement a 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/DIR and each file, suitable for fast multiple file accsess.</li>
<li>Supports FAT12, FAT16(+FAT64) and FAT32 <small>(FAT64: FAT16 in 64KB/cluster)</small></li>
<li>Supports multiple drives.</li>
<li>Supports 8.3 format file name and NT lower capital flags</li>
<li>Supports two partitioning rules: FDISK (only 1st primariy partition) and SFD</li>
<li>Optimized for 8/16 bit microcontrollers.</li>
</ul>
<h4>Features of Tiny-FatFs Module (different to FatFs)</h4>
<ul>
<li>Very low memory consumption, suitable for small memory system (RAM:1KB)</li>
<li>Supports only single drive.</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 the 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>8574</td><td>6094</td></tr>
<tr><td>Program (R/O cfg.)</td><td>4268</td><td>3494</td></tr>
<tr><td>Static Work Area</td><td colspan="2">2 + 2*&lt;drives&gt;</td>
<tr><td>Dynamic Work Area</td><td colspan="2">550*&lt;drives&gt; + 544*&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>7164</td><td>4890</td></tr>
<tr><td>Program (R/O cfg.)</td><td>3660</td><td>2946</td></tr>
<tr><td>Static Work Area</td><td colspan="2">4</td></tr>
<tr><td>Dynamic Work Area</td><td colspan="2">542 + 28*&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/mount.html">f_mount</a> - Register/Unregister a Work Area</li>
<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/mkfs.html">f_mkfs</a> - Create a File System on the Drive</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. These functions must be provided by user.</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>
<ul>
<li><a href="en/appnote.html">FatFs module application note</a></li>
<li><a href="img/rwtest.png">Benchmark</a> (Test Board: ATmega64/9.2MHz with <a href="img/rw_mmc.jpeg">MMC</a>/<a href="img/rw_ata.jpeg">HDD</a>/<a href="img/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>
<hr>
<p class="foot"><a href="../../cc_e.html">Return</a></p>
</body>
</html>