新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MCF51QE128的SD卡文件系統(tǒng)設(shè)計(jì)

基于MCF51QE128的SD卡文件系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2010-09-10 來(lái)源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://2s4d.com/article/151574.htm

6j1.jpg

2.3 打開(kāi)和創(chuàng)建文件
打開(kāi)和創(chuàng)建文件采用一個(gè)函數(shù)來(lái)實(shí)現(xiàn)。首先根據(jù)讀入的文件名查找根目錄,若有匹配項(xiàng)則打開(kāi)文件,否則創(chuàng)建一個(gè)新文件。流程如圖6所示。

6i.jpg


打開(kāi)和創(chuàng)建文件子程序聲明為byte Open_File(FILE_t*FILE,F(xiàn)ATl6_t*FAT,byte*buffer,byte*name)。部分代碼如下:

6j1.jpg

在根目錄中查找是否有文件項(xiàng)匹配,從根目錄的第1個(gè)扇區(qū)開(kāi)始讀扇區(qū)。

6j1.jpg
根據(jù)文件起始簇號(hào)和根目錄的記錄項(xiàng)號(hào),計(jì)算文件FAT表、根目錄和數(shù)據(jù)區(qū)的相關(guān)信息。對(duì)于根目錄和數(shù)據(jù)區(qū)的信息,已有文件和新文件的計(jì)算一致。如果是新文件,還需修改FAT表和根目錄記錄項(xiàng)。
2.4 多扇區(qū)數(shù)據(jù)讀寫(xiě)
多扇區(qū)數(shù)據(jù)的讀寫(xiě)是在打開(kāi)文件的基礎(chǔ)上,以扇區(qū)為單位讀寫(xiě)文件,可連續(xù)讀寫(xiě)多個(gè)扇區(qū)數(shù)據(jù),同時(shí)寫(xiě)入文件的屬性、日期和時(shí)間。寫(xiě)數(shù)據(jù)的流程如圖7所示,讀數(shù)據(jù)與之類(lèi)似。多扇區(qū)數(shù)據(jù)的寫(xiě)子程序聲明為byte Write_File(FILE_t*FILE,F(xiàn)ATl6_t*FAT, byte attribute,word time,word date,dWOEd size_s,byte*buffer),根據(jù)寫(xiě)入扇區(qū)數(shù)size_s,設(shè)置文件的寫(xiě)入位置。首先將寫(xiě)入扇區(qū)數(shù)與文件剩余扇區(qū)數(shù)進(jìn)行比較,若寫(xiě)入扇區(qū)數(shù)小于等于剩余扇區(qū)數(shù),則新寫(xiě)入扇區(qū)數(shù)、簇?cái)?shù)均為0,文件結(jié)束簇、寫(xiě)簇號(hào)不變,不需要修改FAT表,僅修改根目錄中的文件長(zhǎng)度。否則,需要計(jì)算新寫(xiě)入扇區(qū)數(shù)和簇?cái)?shù)。若有增加簇,則需修改FAT表,包括FATl和FAT2、根目錄的文件記,錄項(xiàng)。最后,將數(shù)據(jù)寫(xiě)入文件數(shù)據(jù)區(qū)。

結(jié)語(yǔ)
本文基于Freescale公司MCF51QEl28微控制器,深入探討了SD卡上FATl6文件系統(tǒng)的存儲(chǔ)原則,給出了實(shí)現(xiàn)方案。軟件算法上,對(duì)單扇區(qū)數(shù)據(jù)讀寫(xiě)進(jìn)行改進(jìn),實(shí)現(xiàn)了連續(xù)多個(gè)扇區(qū)數(shù)據(jù)的讀寫(xiě),大大提高了文件的讀寫(xiě)效率,特別適用于數(shù)據(jù)量較大的視頻、音頻數(shù)據(jù)采集系統(tǒng)的文件存儲(chǔ)。隨著SD卡的快速流行,在此類(lèi)存儲(chǔ)設(shè)備中引入文件系統(tǒng)將得到更加廣泛的應(yīng)用。

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 嵌入式

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉