❶ FAT32格式是什麼意思
FAT32格式指的是文件分配表是採用32位二進制數記錄管理的磁碟文件管理格式,因FAT類文件系統的核心是文件分配表,命名由此得來。FAT32格式優點是穩定性和兼容性好,能充分兼容Win 9X及以前版本,且維護方便。
對於使用FAT32文件系統的每個邏輯盤內部空間又可劃分為三部分,依次是引導區、文件分配表區、數據區。引導區和文件分配表區又合稱為系統區,占據整個邏輯盤前端很小的空間,存放有關管理信息。數據區才是邏輯盤用來存放文件內容的區域,該區域以簇未分配單位來使用。
相關信息
文件分配表區(FAT區)是FAT文件系統管理磁碟空間和文件的最重要區域,它保存邏輯盤數據區各簇使用情況信息,採用位示圖法來表示,文件所佔用的存儲空間及空閑空間的管理都是通過FAT實現的。FAT區共保存了兩個相同的文件分配表,便於第一個損壞時,還有第二個可用。
FAT表的大小由該邏輯盤數據區共有多少簇所決定,取整數個扇區。數據區中每簇的使用情況通過查找其在FAT表中相應位置的填充值可知曉。FAT32表中每簇佔用四個位元組(32位)表示,開頭的8個位元組(0H-07H位元組)用來存放該盤介質類型編號了,因此有效簇號從02H開始使用。
❷ 硬碟格式FAT和FAT32的區別
FAT和FAT32是兩種分區格式。
FAT主要征對是DOS系統和單片機系統。
FAT32主要征對的是windows系統,它是FAT的一個升級。其支持圖形界面。
很多朋友都了解,FAT32分區格式有32G容量限制,但在實際應用中,很多朋友發現,使用FAT32分區格式分了大於32G的分區,卻一點問題沒有,這究竟是怎麼一回事呢?
經過仔細了解,原來WINDOWS對FAT32的支持最大可以達到單個分區2T,最小512M,但為什麼很多資料卻明白的寫明WINDOWS最大隻支持32G的FAT32,這原來是由簇的大小確定的,使用越小的簇,存儲效率越高,更能有效的管理硬碟空間!舉個例,同樣2G的硬碟分區,FAT和FAT32的簇大小分別是32KB和4KB,所以FAT32要優於FAT,而簇大於32KB的話,硬碟的效率會非常低,浪費也很大,對文件的安全性也不好,所以FAT最大隻支持2G的硬碟空間(WIN2K和WINXP可以分4G的FAT分區)!
FAT和FAT32主分區與簇的大小匯整如下,我們可仔細做個比較:
分區大小 FAT16簇大小FAT32簇大小
16MB-32MB 2KB 不支持
32MB-127MB 2KB 512bytes
128MB-255MB 4KB 512bytes
256MB-259MB 8KB 512bytes
260MB-511MB 8KB 4KB
512MB-1023MB 16KB 4KB
1024MB-2047MB32KB 4KB
2048MB-8GB 不支持 4KB
8GB-16GB 不支持 8KB
16GB-32GB 不支持 16KB
32GB以上 不支持 32KB
從上表可以看出,FAT32分區超過32G過後,簇的大小也超過了32KB,和FAT超過2G時一樣,效率和管理也大打折扣,所以盡量不要使用超過32G以上的FAT32分區,雖然不支持超過4GB的單個文件也是一個原因!
而Win 2000的NTFS文件系統,當分區的大小在2G以下時,簇的大小都比相應的FAT32簇小。當分區的大小在2G以上時(2G~2T),簇的大小都為4KB。相比之下,NTFS可以比FAT32更有效地管理磁碟空間,最大限度地避免了磁碟空間的浪費。
❸ 基於單片機FAT32文件系統實現MP3功能。
你聽聲音判斷有無退出? 看來是不能在線調試,也沒有示波器!這樣弄起來難度比較高喲!
如果一直跳不出znFAT_ReadDataX()那麼可以肯定play也沒有被更新到,那麼你那個外部中斷也就沒有被觸發羅!查查為什麼不能觸發吧?
❹ FAT32 文件系統 目錄 如何 存儲
你用NTFS
能分小寫的卷標嗎
?
如果不能那也就是一樣的道理
fat32這個文件系統
的
一簇
是
多少我忘了
但LINUX的類似於簇的單位是4K
如果你有一個5K的文件那麼那一K就會又佔一簇
而那個簇
就不能被別人別的文件用了
❺ 讀寫FAT32文件系統的單片機程序
由於單片機種類不一,代碼也不同,我建議你了解、認識FAT32文件系統,把它爛在心裡,只有這樣才能完成各種任務。
❻ 文件系統:FAT32,是什麼意思
FAT32
是
WINDOWS
系統中分區格式的一種。該格式採用
32
位的文件分配表(FILE
ALLOCATION
TABLE),突破了
FAT16
對每一個分區的容量只有2
GB的限制。由於FAT32分區內不能夠存放大於
4GB
的單個文件,目前已被性能更好的NTFS格式分區所代替。
❼ 一、嵌入式之FAT32文件系統(1)
參考文件
FAT32文件系統有幾個基本的幾個概念:
先拿一個真實的4G SD卡分析數據:
使用winhex物理方式查看,截一部分圖:
全稱Master Boot Record,即主引導記錄。
主引導記錄分為兩個部分,一個部分是前446位元組,另外一個部分是後64位元組。
前446個位元組,一般取值為0,不過有的時候也會有其他的設置值。
這部分也叫DPT,全稱Disk Partition Table,即磁碟分區表。
磁碟分區表有4個區,每個區有16位元組,總體是64位元組。因此,MBR位元組數為512位元組,剛好是一個扇區的數量。
DPT的4個部分,每一個部分的16位元組含義如下表:
00 82 03 00 0B E6 DC CA 00 20 00 00 00 E0 ED 00(16進制)
這里,就貼出來上面截圖的數據內容。(我們使用的是小位元組序)
0x00 :
通常的取值。
0x82 :
開始磁頭。
0x03 0x00 :
實際為0x0003,按照2進制編碼為0000 0000 0000 0011。
那麼開始扇區為:0。
開始柱面為:3。
0x0B :
分區類型,為Win95 FAT32類型。
0xE6 :
結束磁頭為230。
0xDC 0xCA:
實際為0xCADC,按照2進制編碼為1101 1100 1100 1010。
那麼結束扇區為:55。
結束柱面為:220。
0x00 0x20 0x00 0x00 :
實際為:0x00002000,也就是8192,為分區的開始扇區地址。那麼我們後面就可以從這里去找DBR。
0x00 0xE0 0xED 0x00 :
實際為:0x00EDE000,也就是15589376,為分區的總扇區數。
從這里其實可以算出SD卡的容量。
也就是:
分區大小:15589376x512 = 7981760512。這個值大約是7.612G。
從物理0地址到起始地址:8192*512 = 4194304
那麼總容量為:7981760512+4194304 = 7985954816。
該部分包括一個叫BPB的內容。
先截出DBR部分的實際SD卡上的內容:
在WinHex下使用邏輯磁碟打開FAT32文件系統的存儲介質來看,偏移位置與表示的含義有如下表所示:
25位元組的分區塊(BPB):
擴展分區BPB:
按照定義,將實際的圖 MBR.png分析如下:
從偏移為0x0BH地址開始:
00 02 10 96 04 02 00 00 00 00 F8 00 00 3F 00 FF 00 00 20 00 00 00 E0 ED 00 B5 1D 00 00
00 02 :
即0x0200,表示扇區位元組數,也就是512位元組。
10:
即0x10,每簇扇區數為16。也就是16 512=8 1024=8K。
96 04:
即0x0496,保留扇區數為1174。
02:
即0x02,FAT表份數為2。
00 00:
即0x0000,為保留。
00 00:
即0x0000,為保留。
F8:
即為本地硬碟。
00 00:
即0x0000,為保留。
3F 00:
即0x003F,即每磁軌扇區數為63。
FF 00:
即0x00FF,即磁頭數為255。
00 20 00 00:
即0x00002000,即隱藏扇區數為8192。
00 E0 ED 00:
即0x00EDE000,即磁碟總扇區數為15589376。
B5 1D 00 00 :
即0x001DB5,即FAT表佔用扇區數為7605。
好了,根據這些內容,可以計算出兩個參數:
FAT1的開始扇區 = 分區開始扇區+ 保留扇區=8192+1174 = 9366。
FAT2的開始扇區 = FAT1的開始扇區+FAT表佔用的大小 = 9366 + 7605 = 16971。
首目錄簇 = FAT1的開始扇區+FAT的表份數 x FAT表佔用的大小=9366+2*7605 = 24576。
繼續追蹤,找到首目錄簇中的已經新建的文件。
現在,先解析粘貼出來的每個部分的內容的含義。
具體內容下面的FAT中會說。
a.txt部分的解析:
41 20 20 20 20 20 20 20 54 58 54 20 18 8B 2A 90
96 4A A1 4A 00 00 0F 8C A1 4A 03 00 10 00 00 00
41 20 20 20 20 20 20 20:
表示文件名:「A TXT」
20 :
表示的是文件的屬性。歸檔。
18:
為系統保留。
8B:
創建時間的10ms位。也就是1390ms。
2A 90:
也就是0x902A,換成2進制為1001 0000 0010 1010 。表示的是創建時間。
細分如下:
則時間值為:
時:0x12 = 18,
分:0x1 = 1,
秒:0xAx 2s + 1390ms= 10x 2s + (1390ms) = 21s,
所以創建時間為18:01:21。
96 4A:
也就是0x4A96,換成2進制為0100 1010 1001 0110,表示的是創建日期。
細分如下:
則日期值為:
年:1980+0x25 = 2017,
月:0x4 = 4,
日:0x16= 22,
所以,創建日期為2017年4月22日。
A1 4A:
也就是0x4AA1,換成2進制為0100 1010 1010 0001,表示的是最後訪問日期。
則日期為:
年:1980+0x25 = 2017,
月:0x5 = 5,
日:0x1= 1,
所以,最後訪問日期為2017年5月1日。
00 00:
起始簇高16位。
0F 8C:
也就是0x8C0F,換成2進制為1000 1100 0000 1111,表示的是最近修改時間。
時:0x11 = 17,
分:0x20 = 32,
秒:0xf x 2 = 30s,
所以最近修改時間為17:32:30。
A1 4A:
也就是0x4AA1,換成2進制為0100 1010 1010 0001,表示的是最近修改日期。
則日期為:
年:1980+0x25 = 2017,
月:0x5 = 5,
日:0x1= 1,
所以,最近修改日期為2017年5月1日。
03 00:
即0x0003,表示起始簇低16位,也就是說,起始簇高位與起始簇低位相或,得到0x00000003,起始簇為3。
10 00 00 00:
即0x00000010,表示文件數據長度,也就是16位元組。
分析完a.txt,b.txt也一樣分析即可。
從而可以得到的是,a.txt的內容位置在:(3-2)*16+24576 = 24592上。
後使用winhex進行驗證,確認是正確的。
文件分配表(FAT),是FAT文件系統中用於磁碟數據索引和定位而引進的一種鏈式結構。在FAT文件系統中,文件的存儲依照FAT表制定的簇鏈式數據結構來進行。同時,FAT文件系統將組織數據時使用的目錄也抽象為文件,以簡化對數據的管理。
如DBR所述,偏移0EH處存儲了保留扇區的個數,而保留扇區數指的就是當前分區內DBR到FAT表之間的所有扇區的個數(包括DBR但不包括FAT表)。據此,可以定位FAT表所在的起始偏移位置了。
如DBR所述,偏移24H處存儲了保留扇區的個數,知道FAT2是緊鄰FAT1的。那麼FAT2表的位置為:FAT1的起始偏移地址+FAT1的大小。
FAT表由一系列大小相等的FAT表項組成,它有如下特性:
在FAT32文件系統中,根目錄的位置不再硬性地固定,可以存儲在分區內可定址的任意簇內,不過通常根目錄是最早建立的(格式化就生成了)目錄表。所以,我們看到的情況基本上都是根目錄首簇緊鄰FAT2,占簇區順序上的第1個簇(即2號簇)。同時,FAT32文件系統將根目錄當做普通的數據文件來看,所有沒有了目錄項數的限制,在需要的時候可以分配空簇,存儲更多的目錄項。
對於短文件名格式的目錄項:
注意:*表示此欄位在段文件目錄項中,不可取值0FH。若取值為0FH,目錄段為長文件名目錄段。
0BH欄位取值如下:
FAT32的一個重要的特點是完全支持長文件名。長文件名依然是記錄在目錄項中的。為了低版本的OS或程序能正確讀取長文件名文件,系統自動為所有長文件名文件創建了一個對應的短文件名,使對應數據既可以用長文件名定址,也可以用短文件名定址。不支持長文件名的OS或程序會忽略它認為不合法的長文件名欄位,而支持長文件名的OS或程序則會以長文件名為顯式項來記錄和編輯,並隱藏起短文件名。
長文件名的實現有賴於目錄項第12位元組屬性位元組,當此位元組的值為0FH時,支持長文件名的系統會將其當做長文件名的依據,而只支持短文件名的系統會認為是異常而忽略掉。系統將長文件名以13個字元為單位進行切割,每一組占據一個目錄項。所以可能一個文件需要多個目錄項,這時長文件名的各個目錄項按倒序排列在目錄表中,以防與其他文件名混淆。
長文件名中的字元採用unicode形式編碼,每個字元占據2位元組的空間。其目錄項定義如: