FatFs R0.15, released November 6, 2022

This commit is contained in:
Christopher Williams
2022-11-08 17:31:20 -07:00
parent ab8c36b6e2
commit 04d5545d67
33 changed files with 1280 additions and 896 deletions
+5 -5
View File
@@ -63,7 +63,7 @@ FRESULT f_rewind (
<li>Disk full. There is no free space on the volume to expand the file.</li>
</ul>
<p>The fast seek feature enables fast backward/long seek operations without FAT access by using an on-memory CLMT (cluster link map table). It is applied to <tt>f_read</tt> and <tt>f_write</tt> function as well, however, the file size cannot be expanded by <tt>f_write</tt>, <tt>f_lseek</tt> function while the file is at fast seek mode.</p>
<p>The fast seek mode is enabled when <tt>FF_USE_FASTSEEK = 1</tt>. The CLMT must be created into the <tt>DWORD</tt> array prior to use the fast seek mode. To create the CLMT, set address of the <tt>DWORD</tt> array to the member <tt>cltbl</tt> in the open file object, set the size of array in unit of items to the <tt>cltbl[0]</tt> and then call <tt>f_lseek</tt> function with <tt class="arg">ofs</tt><tt> = CREATE_LINKMAP</tt>. After the function succeeded, no FAT access is occured in subsequent <tt>f_read</tt>, <tt>f_write</tt>, <tt>f_lseek</tt> function to the file. The number of items used or required is returned into the <tt>cltbl[0]</tt>. The number of items needed is (number of the file fragments + 1) * 2. For example, 12 items in the array will be used for the file fragmented in 5 portions. If the function failed with <tt>FR_NOT_ENOUGH_CORE</tt>, the size of given array is insufficient for the file.</p>
<p>The fast seek mode is available when <tt>FF_USE_FASTSEEK = 1</tt>. The CLMT must be created into the <tt>DWORD</tt> array prior to use the fast seek mode. To create the CLMT, set address of the <tt>DWORD</tt> array to the member <tt>cltbl</tt> in the open file object, set the size of array in unit of items to the <tt>cltbl[0]</tt> and then call <tt>f_lseek</tt> function with <tt class="arg">ofs</tt><tt> = CREATE_LINKMAP</tt>. After the function succeeded, no FAT access is occured in subsequent <tt>f_read</tt>, <tt>f_write</tt>, <tt>f_lseek</tt> function to the file. The number of items used or required is returned into the <tt>cltbl[0]</tt>. The number of items needed is (number of the file fragments + 1) * 2. For example, 12 items in the array will be used for the file fragmented in 5 portions. If the function failed with <tt>FR_NOT_ENOUGH_CORE</tt>, the size of given array is insufficient for the file.</p>
</div>
@@ -81,16 +81,16 @@ FRESULT f_rewind (
res = f_open(fp, "file.dat", FA_READ|FA_WRITE);
if (res) ...
<span class="c">/* Move to offset of 5000 from top of the file */</span>
<span class="c">/* Set read/write pointer to 5000 */</span>
res = <em>f_lseek</em>(fp, 5000);
<span class="c">/* Move to end of the file to append data */</span>
<span class="c">/* Set read/write pointer to end of the file to append data */</span>
res = <em>f_lseek</em>(fp, f_size(fp));
<span class="c">/* Forward 3000 bytes */</span>
<span class="c">/* Advance read/write pointer 3000 bytes */</span>
res = <em>f_lseek</em>(fp, f_tell(fp) + 3000);
<span class="c">/* Rewind 2000 bytes (take care on wraparound) */</span>
<span class="c">/* Rewind read/write pointer 2000 bytes (take care on wraparound) */</span>
res = <em>f_lseek</em>(fp, f_tell(fp) - 2000);
</pre>
<pre>