2011年5月20日 星期五

DIY - PIC:SD 記憶卡 FAT 表 (七十二)

DIY - PICSD 記憶卡 FAT (十二)

要存取 SD 記憶卡,了解 SD 記憶卡內的系統結構是很重要,否則便不能知道如何去存取 SD 記憶卡內的資料。SD 記憶卡檔管理系統的基礎上,還建立了 FAT 檔系統來對檔操作進行管理。將 FAT 檔系統具體分為以下四部分:

 
 1)引導區(Master Boot Record,縮寫:MBR 
該引導區存放代碼所需的資訊及最重要的檔系統資訊。這些資訊包括了 Flash 記憶體的類型、容量以及劃分成多少個簇;每個簇包含多少磁區、FAT 表數目、保留磁區數、根目錄的首簇號及根目錄入口數、版本資訊等等。引導磁區是在格式化 Flash 時生成的。 
2)檔案配置表  (File Allocation Table,縮寫:FAT) 
檔分配表存放檔所佔用的存儲空間族鏈以及 Flash 記憶體的佔用和空閒空間的情況,非常重要。為了防止檔分配表損壞而引起檔的丟失,可以在系統中保存兩個相同的檔分配表 FAT1 FAT2,以改善其安全性。在檔系統的操作中,程式對 FAT 表結構的兩個備份進行順次修改,以此確保 Flash 記憶體上總是存有一整套完好的檔分配表。系統對 FAT 表的訪問原理如下:訪問檔時先從要目錄中找到該檔的目錄項,從中讀出首簇號。然後,目錄中找到該檔的目錄項,從中讀出首簇號。然後在 FAT 中找到從該首簇號開始的簇鏈,簇鏈上的簇號即為檔在邏輯磁區中佔用的磁區號鏈,這樣便可以進行資料讀寫了。 

3)根目錄區 (Directory,縮寫:DIR) 
FAT 的根目錄區是固定大小的緊跟在 FAT 表後的區域。本文將從 FAT 區之後緊跟的32 個磁區作為根目錄區,可以保存 512個目錄項。每個目錄項記錄了該檔的檔案名、檔屬性、檔大小、檔創建的日期和時間以及檔在資料區中所占的首簇號,即該檔在 FAT 表中的入口等資料。 

4)數據區 (Data) 
資料區存在檔的資料內容。檔系統對資料區的存儲空間是按簇進行劃分和管理的。 

Flash 記憶體讀取資料與一般的記憶體類似,可以實現隨機讀取,讀出的速度也很快。而 Flash 記憶體的寫操作則和一般的記憶體有所不同,Flash 的寫操作必須先按存儲塊擦除(寫入 0xff 到要擦除的存儲單元塊中),再按頁順序寫入。由於 Flash 記憶體擦除耗時較長,所以 Flash 記憶體寫入的時間主要在於 Flash 記憶體內部的擦除操作等。


FAT 有一個嚴重的缺點:當文件刪除後寫入新資料,FAT不會將檔案整理成完整片段再寫入,長期使用後會使檔案資料變得逐漸分散,而減慢了讀寫速度。磁碟重組是一種解決方法,但必須經常重組來保持 FAT 文件系統的效率。 

參考網址:http://blogold.chinaunix.net/u3/114579/showart_2235981.html

相關網址:
※ DIY - PIC:SD 記憶卡規格 (七十)
※ DIY - PIC: FAT 表檔案配置表種類 (七十一)
※ DIY - PIC:SD 記憶卡 FAT 表 (七十二)
※ DIY - PIC:SD 記憶卡初始化 (七十三)
※ DIY - PIC:PIC18F4550 SD 記憶卡電路 (七十四)
※ DIY - PIC:PIC18F4550 SD 記憶卡穩壓電路 (七十五)
※ DIY - PIC:PIC18F4550 SD 記憶卡程式 (七十六)
※ DIY - PIC:PIC18F4550 MCHPMSD 實驗板 (七十七)
※ DIY - PIC:PIC18F4550 MCHPMSD 程式介紹 (七十八)
※ DIY - PIC:PIC18F4550 MCHPMSD 編程開始 (七十九)
※ DIY - PIC:PIC18F4550 MCHPMSD 初始化 (八十)
※ DIY - PIC:PIC18F4550 MCHPMSD 讀取 SD 記憶卡程式 (八十一)
※ DIY - PIC:PIC18F4550 MCHPMSD 寫入 SD 記憶卡程式 (八十二)
※ DIY - PIC:PIC18F4550 MCHPMSD SD 記憶卡程式 (八十三)

相關網址:
※ SD 記憶卡
※ SDHC 記憶卡
※ SDXC 記憶卡

沒有留言:

張貼留言