摘 要: 利用當(dāng)今普遍使用的大容量" title="大容量">大容量存儲設(shè)備IDE硬盤以及高性能和高兼容性的FAT32文件系統(tǒng)" title="文件系統(tǒng)">文件系統(tǒng)可以實現(xiàn)大數(shù)據(jù)量媒體數(shù)據(jù)的存儲和管理,。介紹了一種基于Blackfin533處理器實現(xiàn)對IDE硬盤的FAT32文件系統(tǒng)的操作的方法。
關(guān)鍵詞: Blackfin533 IDE FAT32
Blackfin處理器是美國 Analog Devices公司推出的專為滿足當(dāng)今嵌入式音頻,、視頻和通信應(yīng)用的計算要求和功耗約束條件而設(shè)計的新型嵌入式處理器,。當(dāng)Blackfin用于音視頻的處理時,,大數(shù)據(jù)量媒體數(shù)據(jù)的存儲和管理便成為一個關(guān)鍵問題。在處理大容量數(shù)據(jù)存儲的方案中,,使用最為普遍的便是IDE硬盤,。而針對文件的管理,由于FAT32文件系統(tǒng)在大容量文件分區(qū)管理方面具有很高的性能,,而且可以在大多數(shù)操作系統(tǒng)中被識別,,因此具有很高的兼容性。所以IDE硬盤加上FAT32文件系統(tǒng)可以作為嵌入式系統(tǒng)大容量文件存儲管理的理想方案,。本文主要闡述此方案基于Blackfin533處理器的硬件和軟件實現(xiàn),。硬件部分為基于ADSP-BF533 EZKIT Lite評估板" title="評估板">評估板設(shè)計的IDE接口擴展板;軟件部分包括基于擴展板和VisualDSP++" title="VisualDSP++">VisualDSP++ IDDE開發(fā)的IDE接口驅(qū)動程序和FAT32文件系統(tǒng)操作函數(shù),。
1 IDE硬盤原理
1.1 IDE硬盤的尋址
硬盤的存儲結(jié)構(gòu)如圖1所示,。
它的基本存儲單元叫作扇區(qū)(Sector),,除此之外,。硬盤還有兩個重要的組成部分就是磁頭(Head)和柱面(Cylinder),它們共同組成硬盤的尋址空間,,其地址被稱為物理地址,。顯然,物理地址尋址方式不夠直觀,、現(xiàn)在的大多數(shù)硬盤都支持另外一種尋址方式,,其地址被稱為邏輯地址(LBA),它把扇區(qū)順序編號,,不必再考慮C,、H、S等參數(shù),。LBA和C,、H、S的換算關(guān)系如下:
?。絅H×NS×C+NS×H+S-1,;
C=(LBA div NS)div NH;
H=(LBA div NS)mod NH,;
S=(LBA mod NS)+1
NH表示每個柱面的磁頭數(shù),,NS表示每個磁道的扇區(qū)數(shù),C表示柱面數(shù)[1],。
1.2 硬盤的引導(dǎo)原理
硬盤分區(qū)的引導(dǎo)原理如圖2所示,。
硬盤的第一個扇區(qū)(0柱面,,0磁頭,1扇區(qū))被稱作主引導(dǎo)扇區(qū)——MBR(Master Boot Record),。在MBR中,,主要內(nèi)容就是引導(dǎo)代碼和主分區(qū)表。主分區(qū)表只有四個分區(qū)表項,,它們可以直接描述分區(qū),,也可以通過擴展分區(qū)表進行擴展[2]。
這種引導(dǎo)組織形式是與文件系統(tǒng)完全無關(guān)的,,在每一個分區(qū)內(nèi),,使用者可以根據(jù)自己的需要安裝任意的文件系統(tǒng)。但使用何種文件系統(tǒng)要在響應(yīng)的分區(qū)表項內(nèi)作記錄,。
2 FAT32文件系統(tǒng)概述[2][4]
2.1 FAT文件系統(tǒng)
FAT(File Allocation Table)文件系統(tǒng)是微軟在20世紀(jì)70年代末到80年代初發(fā)布的,,由微軟的MS-DOS操作系統(tǒng)支持。在發(fā)展的過程中,,出現(xiàn)了FAT12,、FAT16、FAT32三個版本,,其中,,F(xiàn)AT12文件系統(tǒng)由于具有一些致命的缺點,很早就被FAT16取代了,,而FAT16和FAT32目前還在廣泛使用,。表1是三種文件系統(tǒng)的對比。
FAT文件系統(tǒng)的原理可以簡單地描述為把存儲空間分塊映射到一個表中,,從而實現(xiàn)對存儲空間的靈活支配,。存儲空間中的每一個塊被稱作簇,存儲空間的映射表被稱作FAT表,。三種FAT文件系統(tǒng)的一個明顯區(qū)別就是FAT表中表示一個簇所用的位數(shù)不同,,分別是12、16和32,。文件的存儲是不必連續(xù)的,,但在FAT表中可用鏈表的形式把文件聯(lián)系在一起,如圖3所示,。
由于FAT文件系統(tǒng)目前在大部分操作系統(tǒng)上都給予了支持,,而且實現(xiàn)起來簡單,所以是理想的嵌入式系統(tǒng)大容量存儲文件管理方案,。
2.2 FAT32文件系統(tǒng)
由于FAT16文件系統(tǒng)在大容量分區(qū)管理方面的效率急劇下降,,而FAT32文件系統(tǒng)卻很好地解決了這個問題,所以在大分區(qū)管理方面,F(xiàn)AT32是理想的文件系統(tǒng),。
FAT32文件系統(tǒng)在結(jié)構(gòu)上延續(xù)了FAT文件系統(tǒng)的基本結(jié)構(gòu),,如圖4所示,主要由以下三部分組成:
(1) DBR(Dos Boot Record),,包括跳轉(zhuǎn)指令,、廠商標(biāo)志、os版本號,,BPB(Bios Parameter Block),、擴展BPB、引導(dǎo)程序和結(jié)束符,;
(2) FAT表,,實際數(shù)據(jù)存儲空間的映射表,F(xiàn)AT1和FAT2完全一致,,后者作為前者的備份,;
(3) 實際數(shù)據(jù)存儲空間,相比FAT16,,從簇2不再有專門的根目錄空間,,而是把根目錄也當(dāng)作一個特殊的文件來處理,起始簇是2,。
2.3 FAT32文件系統(tǒng)對文件的管理
除了根目錄的所有文件(子目錄也作為一種特殊的文件存在)都對應(yīng)一組數(shù)據(jù)作為文件描述,,被稱為文件目錄項。每個目錄內(nèi)的所有文件和子目錄的文件目錄項都存儲在這個目錄對應(yīng)的存儲空間內(nèi),,每一個文件目錄項有32個字節(jié),,主要包括文件名,、文件屬性,、文件大小、文件存儲位置以及一系列的時間描述等,。 把文件路徑,、文件目錄項、FAT表聯(lián)系在一起就可以完全把握一個文件在硬盤的存儲情況,。圖5所示是一個例子,,通過下面的步驟定位文件的所有內(nèi)容:
(1) 通過路徑找到文件所在目錄的簇(a)。
(2) 在目錄對應(yīng)的空間(c)內(nèi)比對文件名,,找到文件對應(yīng)的文件目錄項(d),。
(3) 通過文件目錄項確定文件的起始簇和文件大小。
(4) 根據(jù)FAT表內(nèi)的簇鏈(b)確定文件的存儲空間(e),。
3 IDE硬盤接口設(shè)計
3.1 ADSP-BF533 EZKIT Lite評估板簡介[5]
Blackfin533是美國Analog Devices公司開發(fā)的具有MISC體系的微處理器,。這種體系是同時具有RISC指令集和DSP內(nèi)核的一個集合,所以Blackfin533既可以作為通用嵌入式微處理器進行開發(fā)應(yīng)用,,又具有強大的DSP數(shù)據(jù)處理能力,。
ADSP-BF533 EZKIT Lite是Analog Devices公司為方便Blackfin533的開發(fā)應(yīng)用而提供的評估板,。它可以與PC機通過USB或者PCI接口的仿真器進行調(diào)試,操作使用簡單方便,。評估板的核心是一片Blackfin533處理器,,輸入頻率是27MHz,可以通過內(nèi)部PLL控制工作在所需的工作頻率上,,最高可達750MHz,。
ADSP-BF533 EZKIT Lite評估板的片上資源非常豐富。有32M SDRAM(16M×16bit),、2M Flash(512K×16bit×2),;通過AD1836音頻處理芯片提供了四路音頻輸入和六路音頻輸出端口;通過ADV7183視頻解碼芯片和ADV7171視頻編碼芯片分別提供了三路視頻輸入和視頻輸出端口,;此外,,評估板還提供了UART、JTAG,、按鈕電路和LED指示等設(shè)備,,尤其是提供了一組功能齊全的擴展接口便于其它設(shè)備的接入。IDE接口電路就是在這組擴展接口的基礎(chǔ)上設(shè)計的,。
3.2 硬件設(shè)計
IDE接口擴展板的設(shè)計是基于Blackfin533芯片的EBIU(External Bus Interface Unit)設(shè)計的,。
EBIU是Blackfin533與外部存儲器之間的一個通用外部總線接口,通過對EBIU控制寄存器的設(shè)置,,既可以連接SDRAM等同步存儲器,,也可以連接ROM、FIFOs,、Flash等異步存儲器,。EBIU內(nèi)部結(jié)構(gòu)如圖6所示。
按照ATAPI協(xié)議[3]在EBIU的基礎(chǔ)上設(shè)計了IDE接口方案,,使Blackfin533可以通過這一接口實現(xiàn)對硬盤的操作,,如圖7所示。
4 FAT32文件系統(tǒng)軟件設(shè)計
FAT32文件系統(tǒng)接口程序是在VisualDSP++ 3.5集成編譯環(huán)境下編寫和調(diào)試的,。程序用標(biāo)準(zhǔn)C語言編寫,,調(diào)用關(guān)系分為五個層次,如表2所示,。
4.1 Visual DSP++3.5集成編譯環(huán)境[6]
Visual DSP++ 3.5是Analog Devices公司為其DSP而開發(fā)的一套方便的管理系統(tǒng),,完整的系統(tǒng)包括集成了Visual DSP++內(nèi)核的集成編譯和調(diào)試環(huán)境、帶實時運行庫的C/C++優(yōu)化編譯器,、匯編和鏈接器和仿真軟件以及大量的程序例程,。VisualDSP++還有很多有用的功能,可以使開發(fā)人員更準(zhǔn)確地把握程序占用內(nèi)部資源的情況,更直觀地了解程序內(nèi)部各函數(shù)的效率等等,,這樣在Visual DSP++這個軟件平臺上就可以方便地進行DSP程序的開發(fā)和優(yōu)化,。
4.2 文件讀寫策略優(yōu)化
FAT32文件系統(tǒng)底層驅(qū)動函數(shù)決定文件讀寫的策略,是提高程序讀寫文件速度的關(guān)鍵,。理論上FAT32文件系統(tǒng)可以按照如圖8所示的方式對文件的任意內(nèi)容進行操作,。但是這個操作是要針對IDE硬盤進行的,所以必須考慮IDE硬盤的數(shù)據(jù)傳輸特性,。
IDE硬盤的數(shù)據(jù)傳輸速率可分為外部傳輸率" title="傳輸率">傳輸率(External Transfer Rate)和內(nèi)部傳輸率(Internal Transfer Rate),。外部傳輸率指的是通過IDE接口緩存與控制器之間進行數(shù)據(jù)傳輸?shù)乃俾省?nèi)部傳輸率也稱硬盤持續(xù)傳輸率,,是磁盤與緩存之間的數(shù)據(jù)傳輸速率,。后者比前者要慢很多,所以要提高傳輸速度,,就要盡量連續(xù)讀寫,,減少內(nèi)部刷寫緩存的次數(shù)。
通過研究理論上文件操作的過程發(fā)現(xiàn),,對FAT表的操作大大地影響了對文件的連續(xù)讀寫,。在實際程序設(shè)計中,為了解決這個問題,,一方面在描述文件的數(shù)據(jù)結(jié)構(gòu)中指定一個成員來記錄當(dāng)前文件操作指針?biāo)诘拇?,另一方面把部分FAT表提前讀入SDRAM中。這兩方面的處理大大減少了硬盤連續(xù)讀寫被打斷的次數(shù),。實驗證明這種方案大大提高了程序的效率,,使速度大約提高了三個數(shù)量級。
4.3 功能設(shè)計
一組完善的文件系統(tǒng)庫函數(shù)是最基本的對文件操作的功能實現(xiàn)函數(shù),,應(yīng)包括文件的打開,、關(guān)閉、讀,、寫,、定位等函數(shù)。本人設(shè)計十個函數(shù)供外部調(diào)用,,即文件的打開、關(guān)閉,、讀,、寫、定位,、查找,、目錄列表、重命名、創(chuàng)建目錄,、刪除等,。通過最上層的庫函數(shù)調(diào)用第二層的具體功能函數(shù)來實現(xiàn)這些函數(shù)的操作,其中最主要的三個功能函數(shù)是fnFindFile,、fnReadFile,、fnWriteFile。
fnFindFile的功能是在指定目錄下查找和目標(biāo)文件名相匹配的文件目錄項,,生成這個文件的指針,,流程圖如圖9所示。
fnReadFile函數(shù)是讀文件函數(shù),。它的參數(shù)包括要讀入的地址,、要讀入數(shù)據(jù)的單位尺寸、要讀入數(shù)據(jù)的長度和目標(biāo)文件的文件指針,,流程圖如圖10所示,。
?
fnWriteFile函數(shù)是寫文件函數(shù)。它的參數(shù)和基本流程和讀文件函數(shù)類似,,但是由于寫文件可能會超過原文件大小,,所以必須考慮在硬盤上開辟新的空間和修改文件信息等問題,流程圖如圖11所示,。
本文介紹了一種基于Blackfin533處理器實現(xiàn)IDE硬盤的FAT32文件系統(tǒng)的操作的方案,。這套系統(tǒng)是基于硬盤PIO傳輸模式設(shè)計的,硬盤PIO傳輸模式最大傳輸速度可達到8.3MByte/s,,本系統(tǒng)讀文件速度平均可達6MByte/s,,這說明本系統(tǒng)具有較高的效率。這套系統(tǒng)可以在VisualDSP++ 3.5下編譯成庫,,其它程序可以很簡單地調(diào)用庫中提供的FAT32文件系統(tǒng)操作函數(shù),,實現(xiàn)一種基于Blackfin533處理器的嵌入式大容量文件存儲管理的解決方案。
參考文獻
1 IDE - Hardware Reference & Information Document. http://www.repairfaq.org/filipg/LINK/F_IDE-tech.html, 1996.11.6
2 FAT文件系統(tǒng)原理(一)(二)(三)(四).http://www.sjhf.net, 2004-04-20
3 Information Technology -AT Attachment with Packet Interface Extension (ATA/ATAPI-4), T13,Revision 18,19 August 1998
4 Microsoft Extensible Firmware Initiative FAT32 File System Specification(Version 1.03). Microsoft Corporation, December 6, 2000
5 ADSP-BF533 EZ-KIT Late(r) Evaluation System Manual. Analog Device Inc,2000
6 劉 峰. Blackfin系列DSP原理與系統(tǒng)開發(fā).北京:電子工業(yè)出版社, 2004