大容量SD卡在海洋數(shù)據(jù)存儲(chǔ)中的應(yīng)用
由于大容量SDHC的出現(xiàn),SD1.x滿足不了SDHC的容量要求,標(biāo)準(zhǔn)已經(jīng)升級(jí)為SD2.0。但也因此出現(xiàn)了許多電子設(shè)備無法驅(qū)動(dòng)大容量SD卡的情況,如何識(shí)別SD1.x與SD2.0就顯得尤為重要。SD2.0的SPI模式初始化流程如圖3所示。
判斷是否為SD2.0卡,CMD8(SD2.0新增的命令)是關(guān)鍵。若卡是SD2.0,則發(fā)送CMD8將會(huì)返回有效響應(yīng);若是SD1.x,則返回非法響應(yīng),這樣就可以識(shí)別SD卡的類型。
SD1.x與SD2.0的最大不同在于命令地址的表示。SD1.x的地址單位是字節(jié),而SD2.0的地址單位是扇區(qū),地址仍然采用32位4個(gè)字節(jié)來表示。因此在讀寫操作時(shí)應(yīng)該根據(jù)不同的卡對(duì)地址進(jìn)行相應(yīng)的處理,若是SD1.x則寫入字節(jié)地址,若為SD2.0則寫入扇區(qū)地址。
3 FAT32文件系統(tǒng)
目前有3種FAT文件系統(tǒng):FAT12、FAT16和FAT32。它們的區(qū)別在于文件分配表(File Allocation Table,F(xiàn)AT)中每一表項(xiàng)的大小(也就是所占的位數(shù)):FAT12為12位,F(xiàn)ATl6為16位,F(xiàn)AT32為32位。本設(shè)計(jì)選擇FAT32文件系統(tǒng)。
由于文件存儲(chǔ)在硬盤上占用的存儲(chǔ)器空間以簇為最小單位,F(xiàn)AT32文件系統(tǒng)不適合管理容量低于512 MB的存儲(chǔ)器。簇如果太大,存儲(chǔ)小文件會(huì)浪費(fèi)大量的存儲(chǔ)空間;如果太小,F(xiàn)AT表會(huì)變大,不方便管理。綜合考慮,F(xiàn)AT32每簇大小為4 KB。
3.1FAT32文件系統(tǒng)結(jié)構(gòu)
FAT32文件系統(tǒng)可以分為以下幾部分;保留區(qū)(reserved region),存放FAT文件系統(tǒng)的重要參數(shù)和引導(dǎo)程序;FAT區(qū)(FAT region),記錄簇(cluster)的使用情況;根目錄區(qū)(root directory region),記錄根目錄信息,F(xiàn)AT32文件系統(tǒng)舍棄了這個(gè)區(qū),根目錄區(qū)可以指定為任意一個(gè)簇;文件目錄數(shù)據(jù)區(qū)(file and directory data region),是各種文件數(shù)據(jù)實(shí)際存放的區(qū)域。
保留區(qū)中的BPB表從扇區(qū)0偏移11個(gè)字節(jié)開始,共占25字節(jié)。表2是格式化為FAT32文件系統(tǒng)的8 GBSD卡首扇區(qū)中讀出的BPB參數(shù)內(nèi)容。
在保留區(qū)之后是FAT區(qū),存有文件分配表。一般文件系統(tǒng)中有2份文件分配表FAT1和FAT2,每份FAT表占用空間的大小可從BPB表中查得。
評(píng)論