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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? appnote.html

?? 文件系統 :FatFs/Tiny-FatFs Module Source Files R0.06
?? 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 or 32 bit.<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.06)</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>PIC</th><th>MSP430</th><th>TLCS-870/C</th><th>V850ES</th><th>SH2</th></tr>
<tr><td>Compiler</td><td>WinAVR(gcc)</td><td>CH38</td><td>C30(gcc)</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>2</td><td>1</td><td>1</td><td>2</td></tr>
<tr class="lst3"><td>FatFs Code<br>(Full, R/W)</td><td>9280</td><td>9348</td><td>9387</td><td></td><td></td><td>6728</td><td>7538</td></tr>
<tr><td>FatFs Code<br>(Minimum, R/W)</td><td>5814</td><td>5798</td><td>5913</td><td></td><td></td><td>4094</td><td>4742</td></tr>
<tr><td>FatFs Code<br>(Full, R/O)</td><td>4402</td><td>4236</td><td>4371</td><td></td><td></td><td>3054</td><td>3474</td></tr>
<tr><td>FatFs Code<br>(Minimum, R/O)</td><td>3066</td><td>3158</td><td>3213</td><td></td><td></td><td>2172</td><td>2630</td></tr>
<tr><td>FatFs Work (Static)</td><td>D*2+2</td><td>D*4+2</td><td>D*2+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>D*554+F*544</td><td></td><td></td><td>D*554+F*550</td><td>D*554+F*550</td></tr>
<tr class="lst3"><td>Tiny-FatFs Code<br>(Full, R/W)</td><td>7628</td><td>7668</td><td>7560</td><td>7108</td><td>9501</td><td>5978</td><td>6640</td></tr>
<tr><td>Tiny-FatFs Code<br>(Minimum, R/W)</td><td>4684</td><td>4820</td><td>4698</td><td>4390</td><td>6322</td><td>3678</td><td>4236</td></tr>
<tr><td>Tiny-FatFs Code<br>(Full, R/O)</td><td>3634</td><td>3600</td><td>3618</td><td>3382</td><td>4554</td><td>2722</td><td>3072</td></tr>
<tr><td>Tiny-FatFs Code<br>(Minimum, R/O)</td><td>2524</td><td>2700</td><td>2601</td><td>2398</td><td>3390</td><td>1862</td><td>2300</td></tr>
<tr><td>Tiny-FatFs Wrok (Static)</td><td>4</td><td>6</td><td>4</td><td>4</td><td>4</td><td>6</td><td>6</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*28</td><td>544+F*32</td><td>544+F*32</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 these sequence.</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 file 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 overwritten 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>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区高清| 99视频在线精品| 91麻豆精品国产91久久久更新时间| 一区二区不卡在线播放| 欧美视频一区二区三区在线观看 | 丰满少妇久久久久久久| www国产成人免费观看视频 深夜成人网| 青青草精品视频| 久久青草欧美一区二区三区| 国产高清成人在线| 亚洲同性gay激情无套| 欧美精品在线观看一区二区| 美女视频网站久久| 中文字幕乱码日本亚洲一区二区| 欧美高清视频一二三区| 日韩av电影免费观看高清完整版| 欧美一区二区三区影视| 国内精品国产成人国产三级粉色 | 成人午夜伦理影院| 亚洲欧美激情视频在线观看一区二区三区| 色综合天天综合网天天狠天天 | 亚洲午夜日本在线观看| 日韩一区二区三区电影在线观看| 九色|91porny| 亚洲精品久久嫩草网站秘色| 91精品国产高清一区二区三区蜜臀| 国产麻豆精品95视频| 成人欧美一区二区三区小说| 制服丝袜中文字幕亚洲| 国产ts人妖一区二区| 亚洲狠狠爱一区二区三区| 欧美不卡一二三| 99久久免费精品高清特色大片| 午夜精品久久久久久久99水蜜桃| 国产视频一区二区三区在线观看| 91久色porny | 亚洲精品中文在线影院| 欧美精品亚洲一区二区在线播放| 国产精品影视网| 亚洲成年人影院| 国产精品电影一区二区| 91麻豆精品国产91久久久| 91视频在线看| 国产乱对白刺激视频不卡| 亚洲最新在线观看| 国产亚洲精品资源在线26u| 欧美日韩一区二区三区不卡| 国产精品资源网站| 日韩精品乱码av一区二区| 亚洲欧美aⅴ...| 国产片一区二区三区| 制服.丝袜.亚洲.另类.中文| 在线视频一区二区三| 国产成人精品一区二区三区四区| 日本欧美加勒比视频| 夜夜精品浪潮av一区二区三区| 国产精品理论片| 久久蜜桃av一区二区天堂| 宅男噜噜噜66一区二区66| 欧美在线一区二区三区| 91麻豆文化传媒在线观看| 成人免费av资源| 国产精品夜夜嗨| 国产一区二区三区免费| 麻豆成人综合网| 久久精品国产久精国产爱| 亚洲chinese男男1069| 亚洲一区二区三区在线| 亚洲精品日产精品乱码不卡| 亚洲欧洲精品一区二区三区| 日本一区二区免费在线| 国产亚洲精品福利| 国产视频一区二区在线观看| 国产亚洲精品bt天堂精选| 国产日韩欧美一区二区三区乱码| 日韩欧美国产午夜精品| 日韩一区二区视频| 日韩一区二区免费电影| 日韩一区二区免费在线观看| 欧美一区二区视频在线观看2022| 欧美日韩午夜在线视频| 欧美美女网站色| 日韩三级.com| 久久综合九色综合97婷婷| 久久精品在线观看| 国产午夜精品久久久久久久| 中文一区在线播放| 亚洲视频在线一区观看| 亚洲免费毛片网站| 亚洲成人午夜电影| 全部av―极品视觉盛宴亚洲| 美女视频网站久久| 国产乱码精品一品二品| 不卡一区二区三区四区| 91看片淫黄大片一级在线观看| 欧美在线观看视频一区二区| 欧美男男青年gay1069videost| 91精品国产一区二区| 欧美va亚洲va香蕉在线| 国产精品三级av| 亚洲自拍偷拍九九九| 日本不卡一二三| 国产盗摄视频一区二区三区| 99精品欧美一区二区三区小说 | 国产一区二区三区不卡在线观看| 国产传媒一区在线| 色综合av在线| 日韩一级高清毛片| 中文字幕一区二区日韩精品绯色| 亚洲综合一区在线| 久久成人免费电影| 99r国产精品| 91精品蜜臀在线一区尤物| 国产午夜亚洲精品不卡| 亚洲精品乱码久久久久| 精品一区二区三区视频| 99久久久免费精品国产一区二区| 欧美精品vⅰdeose4hd| 国产欧美精品在线观看| 婷婷久久综合九色综合绿巨人| 国产老妇另类xxxxx| 91国偷自产一区二区三区成为亚洲经典 | 91小视频免费看| 日韩一级片网站| 亚洲女同一区二区| 黄色资源网久久资源365| 色婷婷av一区二区三区软件| 精品久久人人做人人爰| 亚洲另类春色国产| 国产乱理伦片在线观看夜一区| 欧美日韩午夜精品| 中文字幕精品在线不卡| 日本亚洲天堂网| 一本一道波多野结衣一区二区| 精品免费一区二区三区| 亚洲永久免费av| 成人av在线播放网站| 日韩精品一区二区三区视频播放 | 中文字幕一区二区三区在线观看 | 美女网站在线免费欧美精品| 色香蕉久久蜜桃| 久久夜色精品国产噜噜av| 天涯成人国产亚洲精品一区av| 成人国产精品免费观看动漫| 欧美成人国产一区二区| 亚洲成人福利片| 日本精品裸体写真集在线观看 | 午夜精品福利在线| 97se亚洲国产综合在线| 久久久久久久久久久久电影| 日本欧美肥老太交大片| 色94色欧美sute亚洲线路一ni| 国产欧美一区二区三区鸳鸯浴| 久久不见久久见免费视频7| 欧美军同video69gay| 亚洲精品中文在线观看| 成人av在线播放网站| 欧美国产日韩一二三区| 国产乱码精品一区二区三区忘忧草| 91麻豆精品91久久久久久清纯| 亚洲一区二区三区四区在线| 97精品久久久午夜一区二区三区 | 福利一区在线观看| 久久久影视传媒| 激情综合亚洲精品| 精品处破学生在线二十三| 久久精品国产久精国产| 欧美电影免费观看高清完整版在 | 日韩专区在线视频| 欧美日韩黄色一区二区| 同产精品九九九| 欧美丰满嫩嫩电影| 舔着乳尖日韩一区| 5858s免费视频成人| 免费观看久久久4p| 精品国产99国产精品| 国产成人免费xxxxxxxx| 国产精品国产三级国产专播品爱网| 波多野结衣中文字幕一区二区三区| 国产精品午夜春色av| 色综合天天综合色综合av| 一区二区三区久久| 欧美精品成人一区二区三区四区| 奇米影视7777精品一区二区| 日韩欧美一二三区| 国产成人精品亚洲午夜麻豆| 欧美高清一级片在线观看| 99r精品视频| 天天色天天操综合| 欧美成人高清电影在线| 成人免费看黄yyy456| 中文字幕综合网| 精品日韩一区二区三区 | 精品久久久久久久一区二区蜜臀| 色欧美乱欧美15图片| 国产麻豆视频一区| 久久精品国产一区二区| 天堂一区二区在线| 免费在线欧美视频| 日韩1区2区日韩1区2区|