999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MCF51QE128的SD卡文件系統設計※

2010-06-25 02:45:08童靜
單片機與嵌入式系統應用 2010年7期

童靜

(湖北工業大學,武漢 430068)

童靜(講師),主要研究方向為單片機與嵌入式開發。

引 言

MCF51QE128微控制器是Freescale公司生產的8位/32位兼容的低功耗微處理器。工作電壓的典型值是3.6 V,與SD卡的工作電壓兼容,可直接與SD卡連接而無需電平轉換電路。SD卡因為其體積小、功耗低、容量大且成本低,目前被廣泛應用于各類嵌入式數據采集系統中。本文針對此類應用,通過實測512 MB SD卡數據,以實例的形式深入解析了FAT16文件系統的存儲原則,并給出了實現方案。

1 FAT16文件系統

SD卡格式化為FAT文件系統時,一般只采用1個分區,以便于存儲空間的管理。FAT 16主要由圖1所示的6個陰影部分組成。通常情況下,每扇區的大小為512字節。

圖1 FAT16的組織形式

1.1 主引導記錄

MBR(Master Boot Record,主引導記錄)總是位于存儲卡的起始位置,即扇區0。圖2是主引導記錄的詳細信息。由于只有1個分區,所以由偏移量0x1BE可找到第1分區的入口,接著由偏移量0x08找到第1分區的相對起始扇區,即第1分區引導記錄所在的扇區。以512 MB SD卡為例,讀取圖2中地址0x1C6~0x1C9處的4個字節數據(由高位向低位讀取),即0x000000E9。可知,第1分區引導記錄位于SD卡的第0xE9個扇區。

圖2 主引導記錄

1.2 分區引導記錄

分區BR(Boot Record,引導記錄)位于分區的第0扇區。它由跳轉代碼,OEM(Original Equipmen t Manufacturer,原始設備制造商),BPB(BIOS Parameter Block,BIOS參數塊),擴展BPB,引導代碼和結束標志(0x55 AA)組成。圖3重點列出了分區引導記錄中BPB的各項參數。讀圖3中0x000000E9扇區,由偏移量0x0B處2字節數據0x0200=512可知,SD卡每扇區的字節數為512。類似地,可得到其他相關參數。

圖3 分區引導記錄

1.3 FAT表和文件存儲原則

FAT16文件系統主要通過 FAT表(FAT1和FAT2)、根目錄和數據區實現對文件的存儲管理。FAT表記錄了數據文件的存儲鏈表,對數據的讀取極為重要,通常都會有一個或多個備份。這里,FAT2就是對FAT1的備份,必須隨著FAT1即時同步更新。根目錄一般以32字節為單位來存放文件記錄,具體描述如表1所列。

表1 根目錄文件記錄項

數據區主要存放文件數據,為了有效利用存儲空間,一般以簇為單位,簇的大小通常是2的n次冪個扇區。FAT格式化后,簇的大小就確定下來了,可通過讀取分區引導記錄獲得。例如,讀取圖3中0x000000E9扇區,由偏移量0x0D處1字節數據0x10=16可知,SD卡的1個簇占16個扇區。

如果將SD卡的存儲空間想象成一本書,那么要閱讀一篇文章,首先應該打開目錄找到文章的頁碼,然后根據頁碼翻到文章所在的地方。類比到FAT16文件系統,FAT表和根目錄就像書的目錄,簇號類似于書的頁碼,而數據區存放的就是文章的具體內容。

以打開文件為例,文件的存儲原則可以這樣描述:首先在根目錄中查找文件名,如有匹配,就找到了文件的開始簇號,好比知道了文章的頁碼。但文件的存儲和書不同,書的內容一般是連續的,而文件在存儲后是可以隨意修改的(例如添加或刪除),因而在存儲空間上可能不連續,這樣就無法僅通過開始簇號找到整個文件。那么怎樣才能完整找到這些不連續的數據呢?答案就是FAT表。FAT表以“0xF8FF FFFF”作為開始標志,以2字節為單位存放文件簇號。FAT表實質是一個二維鏈表,如圖4所示。

FAT表上面的數字是這2個字節在表中的位置序號,同時也代表文件的簇號,與數據區的簇號對應,類似目錄的頁碼。通常SD卡上第一個文件的開始簇號為2。若文件長度小于1簇,則其開始簇號所對應的2字節值為FFFF。若文件長度大于1簇,則其開始簇號所對應2字節中存放的是文件所在的下一個簇號,由所得簇號再查找其對應的2字節,可找到文件接下來的簇號。依此類推,直到最后所得簇號對應的2字節值為FFFF,即為文件的結束簇號。根據上述原則,由FAT表和根目錄就可以確定文件在數據區的存儲簇號,從而實現文件數據的管理。

圖4 FAT16文件存儲實例

2 FAT16文件系統設計

文件系統的基本功能包括:文件的創建、打開和讀寫。這里假定已經實現了MCF51QE128微控制器和SD卡的硬件接口和底層通信,具體細節參考文獻[3]。

2.1 數據結構

為了便于對主引導記錄、分區引導記錄、FAT表、根目錄和數據區中的相關信息進行記錄和處理,定義了FAT16_t和 FILE_t兩個結構體類型。數據類型byte、word和dw ord分別對應于8位、16位和32位數據。

FAT16_t結構體類型用于記錄主引導記錄和第1分區引導扇區信息,部分定義如下:

FILE_t結構體類型用于記錄每個文件項信息,部分定義如下:

2.2 FAT16初始化

FAT16的初始化主要是讀取主引導記錄和第1分區引導扇區信息,并保存到FAT 16_t類型變量中。初始化流程如圖5所示。

FAT16初始化子程序中調用了底層SD卡讀數據塊函數SD_ReadBlock。其函數聲明為byte SD_ReadBlock(dw ord sector,byte*buffer),用于讀入地址為sector扇區中的數據,暫存入buffer中。預編譯函數from_BE_32和from_BE_16分別實現由高位向低位讀取4字節和2字節數據。

圖5 FAT16初始化流程

FAT 16初始化子程序聲明為byte Init_FAT(FAT 16_t*FAT,by te*buffer),部分代碼如下:

2.3 打開和創建文件

打開和創建文件采用一個函數來實現。首先根據讀入的文件名查找根目錄,若有匹配項則打開文件,否則創建一個新文件。流程如圖6所示。

圖6 打開和創建文件流程

打開和創建文件子程序聲明為byte Open_File(FILE_t*FILE,FAT 16_t*FAT,by te*buffer,byte*name)。部分代碼如下:

在根目錄中查找是否有文件項匹配,從根目錄的第1個扇區開始讀扇區。

根據文件起始簇號和根目錄的記錄項號,計算文件FAT表、根目錄和數據區的相關信息。對于根目錄和數據區的信息,已有文件和新文件的計算一致。如果是新文件,還需修改FAT表和根目錄記錄項。

2.4 多扇區數據讀寫

多扇區數據的讀寫是在打開文件的基礎上,以扇區為單位讀寫文件,可連續讀寫多個扇區數據,同時寫入文件的屬性、日期和時間。寫數據的流程如圖7所示,讀數據與之類似。多扇區數據的寫子程序聲明為by te Write_File(FILE_t*FILE,FAT 16_t*FAT,byte attribute,word time,wo rd date,dword size_s,byte*buffer),根據寫入扇區數size_s,設置文件的寫入位置。首先將寫入扇區數與文件剩余扇區數進行比較,若寫入扇區數小于等于剩余扇區數,則新寫入扇區數、簇數均為0,文件結束簇、寫簇號不變,不需要修改 FAT表,僅修改根目錄中的文件長度。否則,需要計算新寫入扇區數和簇數。若有增加簇,則需修改FAT表,包括FAT 1和 FAT 2、根目錄的文件記錄項。最后,將數據寫入文件數據區。

圖7 寫數據流程

結 語

本文基于Freescale公司MCF51QE128微控制器,深入探討了SD卡上FAT16文件系統的存儲原則,給出了實現方案。軟件算法上,對單扇區數據讀寫進行改進,實現了連續多個扇區數據的讀寫,大大提高了文件的讀寫效率,特別適用于數據量較大的視頻、音頻數據采集系統的文件存儲。隨著SD卡的快速流行,在此類存儲設備中引入文件系統將得到更加廣泛的應用。

編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。

[1]Dobiash Jack.FAT16 Structure Information[OL].[2010-03].http://home.teleport.com/~brainy/fat16.htm.

[2]Evans Allan.Fat16 Interface for MSP430,2004.

[3]童靜.基于MCF51QE128的 SD卡接口設計[J].單片機與嵌入式系統應用,2009.

主站蜘蛛池模板: 好紧好深好大乳无码中文字幕| 亚洲无码37.| www.youjizz.com久久| 亚洲高清中文字幕| 一级毛片免费播放视频| аⅴ资源中文在线天堂| 久久午夜夜伦鲁鲁片不卡| 五月婷婷亚洲综合| 国产成人1024精品下载| 欧美性久久久久| 久久久久国产精品嫩草影院| 潮喷在线无码白浆| 亚洲日韩国产精品无码专区| 国产福利影院在线观看| 人妻无码一区二区视频| 亚洲精品福利视频| 欧美成人手机在线观看网址| av天堂最新版在线| 成年人国产视频| 午夜丁香婷婷| 精品福利网| 免费va国产在线观看| 久久情精品国产品免费| 精品国产福利在线| 国产JIZzJIzz视频全部免费| 亚洲 日韩 激情 无码 中出| 一边摸一边做爽的视频17国产 | 国产手机在线观看| 午夜福利免费视频| 无码国产偷倩在线播放老年人| 日韩精品毛片人妻AV不卡| 国产免费黄| 91免费在线看| 五月天在线网站| 亚洲国产精品美女| 黄色网在线| 日本福利视频网站| 国产在线观看第二页| 国产亚洲精品97AA片在线播放| 55夜色66夜色国产精品视频| 毛片在线播放网址| 国产视频a| 又黄又湿又爽的视频| 99草精品视频| 夜夜操狠狠操| 在线观看无码av免费不卡网站| 国产亚洲男人的天堂在线观看| 国产乱子伦视频在线播放| 免费国产无遮挡又黄又爽| 精品国产美女福到在线直播| 亚洲a级毛片| 国产精品永久久久久| 91亚洲精选| 不卡视频国产| 国产午夜看片| 亚洲综合激情另类专区| 成人字幕网视频在线观看| AV网站中文| 四虎永久免费地址| 国产欧美日韩一区二区视频在线| 国产精品区视频中文字幕| 亚洲精品在线影院| 国产一区二区三区精品欧美日韩| 永久天堂网Av| 亚洲国产中文精品va在线播放| h视频在线播放| 亚洲成a∧人片在线观看无码| 国产超薄肉色丝袜网站| 亚洲男人天堂久久| 欧美精品综合视频一区二区| 国产精品视频白浆免费视频| 婷婷亚洲视频| 亚洲性影院| 免费国产黄线在线观看| 成人国产精品网站在线看| 国产成人精品在线| 欧美在线中文字幕| 女人18毛片水真多国产| 成年人免费国产视频| 无码网站免费观看| 青青草原偷拍视频| 国产网友愉拍精品|