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

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

?? appnote.html

?? 輕量型嵌入式文件系統
?? 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><th>ARM7</th></tr>
<tr><td>Compiler</td><td>gcc(WinAVR)</td><td>CH38</td><td>gcc(C30)</td><td>CL430</td><td>CC870C</td><td>CA850</td><td>SHC</td><td>gcc(WinARM)</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><td>2</td></tr>
<tr class="lst3"><td>FatFs Code (Full, R/W)</td><td>9280</td><td>9348</td><td>9387</td><td></td><td></td><td>6728</td><td>7538</td><td>11820</td></tr>
<tr><td>FatFs Code (Min, R/W)</td><td>5814</td><td>5798</td><td>5913</td><td></td><td></td><td>4094</td><td>4742</td><td></td></tr>
<tr><td>FatFs Code (Full, R/O)</td><td>4402</td><td>4236</td><td>4371</td><td></td><td></td><td>3054</td><td>3474</td><td></td></tr>
<tr><td>FatFs Code (Min, R/O)</td><td>3066</td><td>3158</td><td>3213</td><td></td><td></td><td>2172</td><td>2630</td><td></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><td></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><td>D*554+F*550</td></tr>
<tr class="lst3"><td>Tiny-FatFs Code (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><td></td></tr>
<tr><td>Tiny-FatFs Code (Min, R/W)</td><td>4684</td><td>4820</td><td>4698</td><td>4390</td><td>6322</td><td>3678</td><td>4236</td><td></td></tr>
<tr><td>Tiny-FatFs Code (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><td></td></tr>
<tr><td>Tiny-FatFs Code (Min, R/O)</td><td>2524</td><td>2700</td><td>2601</td><td>2398</td><td>3390</td><td>1862</td><td>2300</td><td></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><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*28</td><td>544+F*32</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 the FAT file system. To support this feature, 512 byte string buffer for file name and Unicode - Local code mutual conversion table which occupies 256KB is required. Therefore memory consumption of code and work area will be increased drastically. The FatFs module currently does not support this feature. The LFN on the FAT file system is a patent of Microsoft. When use 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一区二区三区免费野_久草精品视频
91视频91自| 亚洲一区二区在线免费观看视频| 欧美经典三级视频一区二区三区| 亚洲欧美日韩国产中文在线| 久久国产精品免费| 91在线观看地址| ww久久中文字幕| 六月丁香综合在线视频| 91福利资源站| 中文字幕av一区二区三区| 男人的j进女人的j一区| 91在线视频网址| 国产欧美综合在线观看第十页| 日日夜夜免费精品视频| 一本久道久久综合中文字幕| 欧美激情一区在线观看| 精品一区二区久久久| 欧美人妇做爰xxxⅹ性高电影| 国产精品久久免费看| 国产伦精品一区二区三区视频青涩 | 欧美日韩亚洲综合一区| 国产精品人人做人人爽人人添| 国产在线乱码一区二区三区| 日韩欧美国产综合| 免费人成网站在线观看欧美高清| 欧美肥妇bbw| 日韩精品免费视频人成| 欧美久久久久中文字幕| 日韩成人精品在线观看| 51午夜精品国产| 日韩成人精品在线| 欧美成人乱码一区二区三区| 久久激情五月婷婷| 久久这里只有精品视频网| 韩国精品久久久| 久久先锋影音av鲁色资源| 激情综合色综合久久综合| 欧美tickling挠脚心丨vk| 久久99深爱久久99精品| 久久久精品天堂| 99久久精品免费看国产免费软件| 国产区在线观看成人精品| 成人午夜精品一区二区三区| 亚洲男同1069视频| 欧美三级午夜理伦三级中视频| 午夜精品福利一区二区三区av | 久久久综合激的五月天| 国产精品正在播放| 日韩美女视频一区二区 | 国产传媒一区在线| 欧美激情中文字幕一区二区| www.在线成人| 亚洲一区av在线| 日韩免费在线观看| 成人h动漫精品一区二| 一区二区三区免费| 日韩三级伦理片妻子的秘密按摩| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品麻豆视频| 欧美日韩精品一二三区| 国产一区二区不卡在线 | 裸体健美xxxx欧美裸体表演| 精品国产污污免费网站入口 | 94色蜜桃网一区二区三区| 一区二区三区视频在线观看 | 欧美日韩在线播放三区四区| 美女在线视频一区| 中文一区二区在线观看| 欧美三级电影精品| 国产一区二区在线免费观看| 亚洲女人小视频在线观看| 91麻豆精品国产91久久久久久| 国产酒店精品激情| 亚洲成av人在线观看| 欧美经典一区二区三区| 欧美精选在线播放| 91污在线观看| 加勒比av一区二区| 亚洲一卡二卡三卡四卡| 国产欧美日韩麻豆91| 欧美日本在线播放| av在线不卡电影| 国产精品影音先锋| 天天色图综合网| 国产日韩欧美精品在线| 欧美日韩高清影院| 99久久精品免费观看| 国产一区二区三区国产| 日韩在线一区二区| 亚洲精品视频免费看| 国产日产欧美一区二区三区| 6080国产精品一区二区| 91浏览器入口在线观看| 国产91对白在线观看九色| 久久国内精品自在自线400部| 亚洲最大的成人av| 最新国产精品久久精品| 久久久不卡网国产精品一区| 制服丝袜日韩国产| 欧洲另类一二三四区| 91久久精品一区二区| 成人免费黄色大片| 国产电影精品久久禁18| 国产真实乱子伦精品视频| 日本不卡一二三| 香蕉乱码成人久久天堂爱免费| 亚洲欧美色图小说| 日韩伦理av电影| 国产精品久久久久影院老司| 久久久美女艺术照精彩视频福利播放| 欧美日韩国产美女| 欧美日韩一级二级三级| 在线欧美日韩精品| 一本色道久久综合狠狠躁的推荐| 91碰在线视频| 欧美这里有精品| 欧美人牲a欧美精品| 欧美一区二区三区婷婷月色| 欧美日韩免费观看一区三区| 欧美日韩国产成人在线免费| 欧美精品亚洲二区| 91麻豆精品国产91久久久久久久久 | 色偷偷一区二区三区| 色综合久久88色综合天天免费| 99国产精品久久久| 色婷婷综合在线| 欧美日韩国产综合草草| 日韩欧美色综合| 久久久美女毛片| 国产精品久久三| 亚洲国产美国国产综合一区二区| 图片区小说区国产精品视频| 日韩 欧美一区二区三区| 国产一区二区0| 91网站在线播放| 欧美日韩不卡一区| 26uuu精品一区二区在线观看| 国产午夜精品一区二区三区四区 | 日韩精品一区二区三区视频播放 | 色噜噜久久综合| 欧美一级夜夜爽| 国产日韩av一区二区| 亚洲免费av观看| 免费成人在线视频观看| 国产乱子伦一区二区三区国色天香 | 欧美电影在线免费观看| 日韩免费观看高清完整版| www一区二区| 亚洲人成影院在线观看| 午夜精品免费在线| 国产黑丝在线一区二区三区| 色婷婷久久久综合中文字幕| 91麻豆精品国产91久久久久久久久 | 久久亚洲影视婷婷| 亚洲人午夜精品天堂一二香蕉| 极品尤物av久久免费看| av一区二区三区| 精品日产卡一卡二卡麻豆| 成人免费在线视频观看| 麻豆免费看一区二区三区| 99久久婷婷国产精品综合| 91精品久久久久久久91蜜桃| 国产精品国产成人国产三级| 日本色综合中文字幕| 色呦呦网站一区| 精品久久久久久久人人人人传媒 | 国产精品网曝门| 日韩电影在线一区二区| 91蜜桃免费观看视频| www一区二区| 青青国产91久久久久久| 91福利精品第一导航| 国产精品乱码一区二区三区软件 | 不卡视频在线看| 精品免费国产一区二区三区四区| 亚洲精品成人a在线观看| 国产白丝网站精品污在线入口 | 欧美日韩国产成人在线91| 国产精品午夜免费| 久久精品二区亚洲w码| 欧美日韩视频不卡| 亚洲国产精品99久久久久久久久 | 日本亚洲免费观看| 欧美中文字幕亚洲一区二区va在线 | 欧美中文字幕一区二区三区亚洲| 日本一区二区三区国色天香| 精品一二线国产| 欧美电影免费提供在线观看| 一区二区三区在线免费播放| 不卡av电影在线播放| 久久精品一区二区| 国产伦精品一区二区三区在线观看| 日韩一区二区免费电影| 亚洲va欧美va人人爽| 欧洲中文字幕精品| 一区二区不卡在线视频 午夜欧美不卡在 | 99re这里都是精品| 国产精品福利影院| 国产成人免费在线观看不卡| 亚洲国产高清不卡|