亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? appnote.html

?? 非常精簡的一個fat文件系統(tǒng)
?? 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="up" title="FatFs" href="../00index_e.html">
<link rel="stylesheet" href="../css_e.css" type="text/css" media="screen" title="ELM Default">
<title>FatFs Module Application Note</title>
</head>

<body>
<h1>FatFs Module Application Note</h1>
<hr>

<div class="para">
<h3>Considerations on porting to various platform</h3>
<p>The FatFs module is assuming following terms on portability.</p>
<ul>
<li>ANSI C<br>
The FatFs module is a middleware that written in ANSI C. There is no platform dependence, so long as the compiler is in compliance with ANSI C. However it handles the system portable FAT structures. You must take the <strong>endian</strong> into consideration. This setting is defined in ff.h (tff.h). It must be changed for your platform first or the compiler will abort with an error.</li>
<li>Size of char/short/long are 8/16/32 bit and int is 16 bit or greater.<br>
These correspondence are defined in integer.h. This will not be a problem on most compilers. When any conflict of the definitions between the integer.h and existing definitions is occured, you must resolve the confrict with care.</li>
</ul>
</div>

<div class="para">
<h3>Memory Usage (R0.05)</h3>
<p>These are the memory usage on some target systems. The memory sizes are in unit of byte, D means number of logical drives and F means number of open files. All samples are optimezed in code size.</p>
<table class="lst2">
<tr><th></th><th>AVR</th><th>H8/300H</th><th>MSP430</th><th>TLCS-870/C</th><th>V850ES</th><th>SH2</th></tr>
<tr><td>Compiler</td><td>gcc</td><td>CH38</td><td>CL430</td><td>CC870C</td><td>CA850</td><td>SHC</td></tr>
<tr><td>_MCU_ENDIAN</td><td>1</td><td>2</td><td>2</td><td>1</td><td>1</td><td>2</td></tr>
<tr><td>FatFs Code<br>(Standard, R/W cfg.)</td><td>8810</td><td>8880</td><td></td><td></td><td>6418</td><td>7830</td></tr>
<tr><td>FatFs Code<br>(Minimum, R/W cfg.)</td><td>5832</td><td>5748</td><td></td><td></td><td>4072</td><td>5366</td></tr>
<tr><td>FatFs Code<br>(Standard, R/O cfg.)</td><td>4264</td><td>4110</td><td></td><td></td><td>2990</td><td>3420</td></tr>
<tr><td>FatFs Code<br>(Minimum, R/O cfg.)</td><td>3052</td><td>3124</td><td></td><td></td><td>2194</td><td>2634</td></tr>
<tr><td>FatFs Work (Static)</td><td>D*2 + 2</td><td>D*4 + 2</td><td></td><td></td><td>D*4 + 2</td><td>D*4 + 2</td></tr>
<tr><td>FatFs Work (Dynamic)</td><td>D*554 + F*544</td><td>D*554 + F*550</td><td></td><td></td><td>D*554 + F*550</td><td>D*554 + F*550</td></tr>
<tr><td>Tiny-FatFs Code<br>(Standard, R/W cfg.)</td><td>7376</td><td>7274</td><td>6622</td><td>8854</td><td>5670</td><td></td></tr>
<tr><td>Tiny-FatFs Code<br>(Minimum, R/W cfg.)</td><td>4866</td><td>4326</td><td>4354</td><td>6176</td><td>3726</td><td></td></tr>
<tr><td>Tiny-FatFs Code<br>(Standard, R/O cfg.)</td><td>3654</td><td>3554</td><td>3220</td><td>4358</td><td>2710</td><td></td></tr>
<tr><td>Tiny-FatFs Code<br>(Minimum, R/O cfg.)</td><td>2620</td><td>2708</td><td>2402</td><td>3329</td><td>1910</td><td></td></tr>
<tr><td>Tiny-FatFs Wrok (Static)</td><td>4</td><td>6</td><td>4</td><td>4</td><td>6</td><td></td></tr>
<tr><td>Tiny-FatFs Work (Dynamic)</td><td>544 + F*28</td><td>544 + F*32</td><td>544 + F*28</td><td>544 + F*28</td><td>544 + F*32</td><td></td></tr>
</table>
</div>

<div class="para">
<h3>FatFs vs. Tiny-FatFs</h3>
<p>For most applications, such as portable audio and data logger, Tiny-FatFs is the best choice. However because the Tiny-FatFs does not support FAT32 in default, there is a limitation that can handle only tiny storage upto 2GB(4GB in FAT64). The FAT32 support can be added by <tt>_USE_FAT32</tt> option with an additional code size. The FatFs is suitable for fast multiple files access, and for multiple drive system.</p>
<div class="rset">
<table class="lst2">
<tr><th>Memory Size</th><th>FAT Type</th></tr>
<tr><td>&lt;= 64MB</td><td>FAT12</td></tr>
<tr><td>128MB - 2GB</td><td>FAT16</td></tr>
<tr><td>&gt;= 4GB</td><td>FAT32</td></tr>
</table>
</div>
<p>Rignt table shows the correspondence between memory size and FAT type for SD memroy card and they are shipped with this format. The data area is justified to the erase block boundary and the memory card works with the best performance. For that reason, the memory card should not be reformated with PC. When cluster size or FAT type is changed, the write performance can be decreased.</p>
</div>


<div class="para">
<h3>Performance effective file access</h3>
<p>For good performance on reading/writing files on the small embedded system, application program should consider what process is done in the FatFs module. The file data on the disk is transferred by f_read function in following process.</p>
<p>Figure 1. Sector miss-aligned read (short)<br>
<img src="../img/f1.png" width="490" height="73">
</p>
<p>Figure 2. Sector miss-aligned read (long)<br>
<img src="../img/f2.png" width="490" height="140">
</p>
<p>Figure 3. Sector aligned read<br>
<img src="../img/f3.png" width="490" height="119">
</p>
<p>The file I/O buffer means a sector buffer to read/write a partial data on the sector. On the FatFs, member buffer[] in the file object is used. On the Tiny-FatFs, member win[] in the file system object is used.</p>
<p>Tiny-FatFs processes all data transfer and access to the FAT/directory with only one sector buffer, so that FAT sector cached into the buffer is lost and it must reloaded at every cluster boundary. FatFs has a FAT/directory buffer separated from file I/O buffer, the frequency of FAT accesses is only 1/341, 1/256 or 1/128 (when cluster is contiguous) compared to Tiny-FatFs. Thus the Tiny-FatFs is sacrificing its performance in compensation for very small memory footprint.</p>
<p>Figure 1 shows that partial sector data is transferred via the file I/O buffer. At long data transfer shown in Figure 2, middle of transfer data that aligned to sector boundary is transferred into memory directly. Figure 3 shows that entier transfer data is aligned to the sector boundary. In this case, file I/O buffer is not used. At the unbuffered transfer, maximum extent of sectors are read with disk_read function at a time but it never across cluster boundary even if it is contiguous.</p>
<p>Therefore taking effort to sector aligned read/write accesss eliminates memcpy and the read/write performance will be improved. Besides the effect, cached FAT sector is not flushed during read/write access on the Tiny-FatFs, so that it can achieve same performance as FatFs and its small memory footprint simultanesously.</p>
</div>


<div class="para">
<h3>Critical section</h3>
<p>When write operation to the FAT file system is interrupted due to any accidental failure, such as sudden blackout, incorrect disk removal and unrecoverable data error, the FAT structure can be destroyed. Following images shows the critical section on the FatFs module.</p>
<div class="lset">
Figure 4. Long critical section<br>
<img src="../img/f4.png" width="320" height="436" alt="fig.4">
</div>
<div class="lset">
Figure 5. Minimized critical section<br>
<img src="../img/f5.png" width="320" height="436" alt="fig.5">
</div>
<br class="clr">
<p>An interruption in the red section can cause a cross link; as a result, the file/directory being changed will be lost. There is one or more possibility listed below when an interruption in the yellow section is occured.</p>
<ul>
<li>File data being rewrited is collapted.</li>
<li>A file being appended returns initial state.</li>
<li>A file created as new is gone.</li>
<li>A file created as new or in overwrite remains with length of zero.</li>
<li>Efficiency of disk use gets worse due to lost chain.</li>
</ul>
<p>Each case does not affect the files that not in write operation. To minimize risk of data loss, the critical section can be minimized like shown in Figure 5 by minimizing the time that file is opened in write mode and using f_sync function properly.</p>
</div>


<div class="para">
<h3>Problems and Ideas</h3>
<ul>
<li>Abstraction of file object<br>
Currently the file object structure is held by application layer. This is not a problem for Tiny-FatFs, it consumes the task stack only 26 bytes per file. But FatFs requires 550 bytes per file. When managed the file objects in file handle, stack consumption at application module will able to be reduced. In this case, the work area for file objects is managed in FatFs module. This has a disadvantage that direct access to the file object structure cannot be used and additional file functions, such as feof and ftell, will be needed.</li>
<li>Efficient sector buffer management<br>
The FatFs module has only one sector buffer per logical drive. There is an ineffciency on random file access with many files simultanesously. When additional memory for the sector buffer is available, the file access performance will able to be improved with an advanced cache mechanism.</li>
<li>Long file name<br>
There is an extended feature to handle long file name (LFN) up to 255 characters, in addition to 8.3 format file name, on FAT file system. To support this, 512 byte string buffer for file name and UCS-2 - Shift_JIS mutual conversion table are required. Therefore memory consumption of code and work area will be increased drastically. The FatFs module does not support this feature. The LFN on the FAT file system is a patent of Microsoft. When support it on the commercial products, you have to be licensed.</li>
<li>Porting to RTOS<br>
When use FatFs module from only one task, no consideration is needed. However when make access to a logical drive from two or more tasks simultanesously, any exclusion control will be required. The FatFs module is also ported to a free RTOS based on &mu;ITRON by <a href="http://www.toppers.jp/en/index.html">TOPPERS Project</a>.</li>
</ul>
<br>
<p>These are the problems and ideas on current revision of FatFs module. However the main target of FatFs module is 8 bit microcontrollers. These extensions requires much resource and the FatFs will unable to be ported to the 8 bit system. This may be the most serious problem on future plan.</p>
</div>

<p class="foot"><a href="../00index_e.html">Return</a></p>
</body>
</html>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久影院午夜片一区| 成人福利电影精品一区二区在线观看| 91天堂素人约啪| 国产精品久久夜| 99国内精品久久| 亚洲高清不卡在线观看| 欧美一卡二卡三卡| 韩日av一区二区| 国产精品人妖ts系列视频| 99国产精品久久| 图片区小说区区亚洲影院| 日韩欧美国产综合一区| 国产精品69毛片高清亚洲| 亚洲视频免费观看| 欧美午夜电影一区| 99久久精品国产一区二区三区| 精品久久久久久久久久久久久久久久久 | 国产精品一区二区在线播放| 国产日韩欧美不卡在线| 在线观看日韩av先锋影音电影院| 亚洲成人自拍偷拍| 久久影院午夜论| 欧美最新大片在线看| 久久激情五月激情| 亚洲欧洲精品一区二区三区| 欧美日韩国产高清一区| 国产在线一区观看| 亚洲综合在线五月| 久久久噜噜噜久久中文字幕色伊伊 | 久久尤物电影视频在线观看| 色婷婷久久99综合精品jk白丝| 亚洲一线二线三线久久久| 精品伦理精品一区| 色噜噜狠狠成人中文综合 | 中文文精品字幕一区二区| 在线免费av一区| 韩国一区二区在线观看| 一区二区三区四区蜜桃| 精品国产三级a在线观看| 99在线精品观看| 久久成人免费网站| 亚洲综合在线第一页| 国产视频一区在线观看| 欧美视频一区二区三区在线观看| 国产成人精品一区二区三区四区 | 精品sm捆绑视频| 色婷婷狠狠综合| 国产成人免费视频网站| 日本不卡不码高清免费观看| 亚洲三级电影网站| 久久―日本道色综合久久| 欧美在线免费播放| 久久影院视频免费| 国产精品亚洲第一区在线暖暖韩国| 亚洲第一狼人社区| 亚洲精品欧美综合四区| 国产欧美一区二区三区网站| 日韩一区二区三区免费观看| 欧美色综合久久| 日本道免费精品一区二区三区| 成人久久视频在线观看| 韩国av一区二区三区四区| 天天av天天翘天天综合网 | 欧洲一区二区三区在线| 成年人国产精品| 成人在线视频一区二区| 国产精品综合视频| 久久机这里只有精品| 美美哒免费高清在线观看视频一区二区 | 亚洲一区欧美一区| 亚洲视频小说图片| 亚洲欧洲国产专区| 亚洲欧洲性图库| 自拍偷拍国产精品| 亚洲免费色视频| 亚洲欧美日本韩国| 一区二区三区在线视频免费 | 欧美日韩一区成人| 欧美性猛片xxxx免费看久爱| 在线观看欧美黄色| 欧美日韩国产成人在线91| 欧美专区日韩专区| 欧美日韩国产bt| 欧美一区中文字幕| 欧美成人一区二区三区片免费| 精品对白一区国产伦| 久久精品一区二区| 国产精品美女久久久久久| 亚洲免费看黄网站| 香蕉久久夜色精品国产使用方法| 日韩电影在线一区| 国产美女精品一区二区三区| 成人午夜av在线| 色噜噜狠狠成人中文综合| 欧美浪妇xxxx高跟鞋交| 日韩欧美另类在线| 国产女人水真多18毛片18精品视频 | 国产精品嫩草久久久久| 国产精品久久久久aaaa樱花 | 中文字幕日韩一区| 一区二区成人在线| 奇米亚洲午夜久久精品| 福利一区在线观看| 日本韩国欧美国产| 欧美sm极限捆绑bd| 国产精品久久久久久亚洲毛片| 亚洲精品中文字幕在线观看| 青青草国产成人av片免费| 国产成人在线看| 日本丶国产丶欧美色综合| 日韩欧美色电影| 国产精品毛片久久久久久| 亚洲欧美视频在线观看| 日本不卡一二三| www.欧美亚洲| 制服丝袜成人动漫| 中文字幕一区二区三区四区不卡| 亚洲国产精品人人做人人爽| 另类小说欧美激情| 成人avav影音| 日韩欧美色综合| 亚洲亚洲人成综合网络| 国产不卡在线播放| 欧美一区二区三区免费大片| 国产精品免费看片| 麻豆国产精品一区二区三区| av在线不卡电影| 欧美电影免费观看高清完整版在线观看| 国产精品电影院| 久久99国产精品尤物| 欧洲视频一区二区| 国产精品婷婷午夜在线观看| 免费观看成人av| 欧洲精品视频在线观看| 国产精品三级电影| 激情亚洲综合在线| 在线播放日韩导航| 亚洲精品第一国产综合野| 国产成人综合在线播放| 欧美一区二区三区喷汁尤物| 亚洲一区二三区| 色综合久久66| 国产精品欧美一级免费| 激情六月婷婷久久| 日韩精品资源二区在线| 日韩高清中文字幕一区| 色综合久久88色综合天天免费| 中文字幕精品一区二区精品绿巨人 | 亚洲电影视频在线| 99久久久国产精品| 国产亚洲欧洲一区高清在线观看| 捆绑紧缚一区二区三区视频| 欧美疯狂做受xxxx富婆| 亚洲久草在线视频| 一本到不卡精品视频在线观看| 国产片一区二区| 丰满白嫩尤物一区二区| 亚洲精品一线二线三线| 久久aⅴ国产欧美74aaa| 91精品国产欧美一区二区| 日韩专区在线视频| 欧美一区二区黄色| 日本三级亚洲精品| 日韩欧美一区二区视频| 日韩精品一区第一页| 欧美日韩国产首页在线观看| 亚洲一区二区三区爽爽爽爽爽 | 国产精品久久久久久久久动漫 | 色综合久久综合网欧美综合网 | 日本美女视频一区二区| 欧美久久久一区| 精品国产91九色蝌蚪| 亚洲精品综合在线| 欧美性猛交xxxx黑人交| 亚洲午夜久久久久久久久电影网 | 波多野结衣在线一区| 国产精品日韩成人| 91在线国内视频| 亚洲自拍另类综合| 欧美一区二区高清| 狠狠网亚洲精品| 国产亚洲精品精华液| 成人免费电影视频| 一区二区三区欧美在线观看| 欧美无砖专区一中文字| 美女网站在线免费欧美精品| 精品99久久久久久| 成人小视频免费在线观看| 亚洲精品老司机| 7777精品伊人久久久大香线蕉最新版| 美女诱惑一区二区| 国产日产欧美精品一区二区三区| av在线不卡电影| 视频在线观看国产精品| 久久青草欧美一区二区三区| 91麻豆精品视频| 日韩极品在线观看| 国产精品乱子久久久久| 欧美日韩一级片网站| 激情文学综合丁香|