亚洲欧美第一页_禁久久精品乱码_粉嫩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 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>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品综合网| 亚洲最色的网站| 亚洲色图色小说| 日产国产欧美视频一区精品| av一区二区久久| 日韩视频免费观看高清完整版在线观看| 久久久久久久性| 久久精品72免费观看| 在线亚洲人成电影网站色www| 精品国产一区二区三区久久久蜜月 | 懂色av噜噜一区二区三区av| 欧美精品乱人伦久久久久久| 亚洲色图另类专区| 国产成人在线看| 日韩精品在线看片z| 亚洲一区二区视频在线| av一区二区不卡| 欧美激情在线免费观看| 精品伊人久久久久7777人| 欧美日韩精品一区二区三区蜜桃 | 日韩欧美国产1| 亚洲va天堂va国产va久| 91在线码无精品| 国产精品电影院| 国产乱码一区二区三区| 欧美成人在线直播| 蜜臀va亚洲va欧美va天堂| 91麻豆精品国产91久久久| 亚洲成人av福利| 91精品婷婷国产综合久久竹菊| 亚洲影院理伦片| 欧美三级在线看| 亚洲国产精品久久久久秋霞影院| 91福利资源站| 午夜精品久久久| 91精品国产91久久综合桃花| 视频一区中文字幕| 欧美一区二区三区四区高清| 蜜臀91精品一区二区三区| 欧美videos中文字幕| 国产精品1区2区3区在线观看| 久久久久久久久伊人| 成人免费视频播放| 亚洲欧美日本在线| 欧美色综合网站| 日本成人在线一区| 精品国产一区二区在线观看| 国产黄色精品网站| 亚洲人被黑人高潮完整版| 欧美亚洲一区三区| 免费成人美女在线观看.| 国产欧美精品一区二区三区四区 | 91精品国产高清一区二区三区蜜臀| 丝袜国产日韩另类美女| 欧美一区二区播放| 国产精品18久久久久久久久| 亚洲婷婷国产精品电影人久久| 欧美制服丝袜第一页| 日韩精品一区第一页| 欧美精品一区二| 91久久精品网| 经典三级在线一区| 一区二区三区中文在线观看| 777a∨成人精品桃花网| 国产成人综合网| 亚洲成人av免费| 日本一区二区视频在线| 欧美视频一区二区三区四区| 国内一区二区视频| 亚洲网友自拍偷拍| 日本一区二区电影| 337p亚洲精品色噜噜狠狠| 国产高清久久久久| 亚洲高清不卡在线观看| 国产清纯在线一区二区www| 欧洲一区在线观看| 岛国精品在线观看| 日韩av高清在线观看| 亚洲欧美激情一区二区| 久久久久国产一区二区三区四区 | 色综合久久中文字幕| 老司机精品视频导航| 亚洲精品国产精品乱码不99| 久久综合久久综合久久| 欧美午夜一区二区三区| 国产99久久久国产精品免费看| 亚洲高清不卡在线| 中文字幕亚洲在| 久久婷婷国产综合精品青草| 欧美日韩精品一区二区天天拍小说 | 日韩av电影免费观看高清完整版 | 国产无一区二区| 欧美精品99久久久**| 99久久综合色| 国产在线视频不卡二| 日韩高清在线不卡| 一区二区三区成人在线视频| 国产精品美女视频| 久久精品亚洲一区二区三区浴池| 91精品国产综合久久久久久漫画 | 一区二区三区在线高清| 国产精品免费观看视频| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美一区二区三区免费大片| 欧美在线视频日韩| 在线国产电影不卡| 欧美亚洲动漫另类| 色综合欧美在线| 91女厕偷拍女厕偷拍高清| 成人精品一区二区三区中文字幕| 国产剧情一区在线| 国产成人欧美日韩在线电影| 看国产成人h片视频| 精油按摩中文字幕久久| 免费成人av资源网| 激情五月播播久久久精品| 韩国欧美一区二区| 韩国中文字幕2020精品| 国产毛片精品视频| 国产成人午夜视频| 99re这里只有精品6| 欧美中文字幕一区二区三区亚洲| 欧美最猛性xxxxx直播| 欧美日韩高清一区| 这里只有精品免费| 欧美成人一区二区三区在线观看| 久久久久99精品一区| 国产精品视频一二三| 亚洲乱码中文字幕| 亚洲成人精品一区二区| 久久99精品久久久久久久久久久久 | 欧美最新大片在线看| 欧美人与z0zoxxxx视频| 日韩午夜av一区| 国产日韩三级在线| 亚洲欧美色图小说| 秋霞av亚洲一区二区三| 国产一区二区三区免费播放 | 欧美一区二区三区视频免费播放 | 亚洲欧美日韩小说| 爽爽淫人综合网网站| 精彩视频一区二区三区| 成人视屏免费看| 欧美日韩一区在线观看| 精品久久99ma| 91麻豆精品在线观看| 成人动漫av在线| 欧美日韩一区二区三区免费看| 777a∨成人精品桃花网| 中文字幕电影一区| 午夜精品123| 丁香婷婷综合激情五月色| 在线日韩av片| 欧美精品一区二区三区蜜桃| 一区在线观看视频| 麻豆91免费看| 91亚洲资源网| 欧美电影免费观看高清完整版在| 最新国产成人在线观看| 蜜臀久久久久久久| 91原创在线视频| 2022国产精品视频| 亚洲夂夂婷婷色拍ww47| 久久99久久精品| 色婷婷综合激情| 国产日韩欧美高清| 日韩高清欧美激情| 欧美午夜精品免费| 国产精品无遮挡| 韩国毛片一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 国产欧美精品一区二区三区四区| 婷婷开心激情综合| 99re免费视频精品全部| 精品国产亚洲一区二区三区在线观看| 亚洲视频图片小说| 国产成人免费9x9x人网站视频| 欧美精品自拍偷拍| 亚洲一二三四区不卡| 成av人片一区二区| 亚洲国产精品国自产拍av| 九色porny丨国产精品| 91精品在线一区二区| 性做久久久久久免费观看| 色诱视频网站一区| 一区精品在线播放| av在线免费不卡| 国产精品美女久久久久久2018| 久久99精品久久久久婷婷| 欧美一区二区日韩一区二区| 亚洲不卡av一区二区三区| 一本大道综合伊人精品热热| 中文字幕亚洲成人| 99久久精品国产精品久久| 中文字幕中文字幕在线一区| 成人一级片网址| 国产精品视频九色porn| 99久久精品99国产精品| 亚洲天堂成人网| 欧美视频中文一区二区三区在线观看|