基於Blackfin處理器實現對硬碟FAT32檔案系統的操作

來源:互聯網
上載者:User
 

基於Blackfin處理器實現對硬碟FAT32檔案系統的操作
[日期:2008-7-28] 來源:電子技術應用  作者:周 斌 景 霓 [字型: ]

 

Blackfin處理器是美國 Analog Devices公司推出的專為滿足當今嵌入式音頻、視頻和通訊應用的計算要求和功耗約束條件而設計的新型嵌入式處理器。當Blackfin用於音視頻的處理時,大資料量媒體資料的儲存和管理便成為一個關鍵問題。在處理大容量資料存放區的方案中,使用最為普遍的便是IDE硬碟。而針對檔案的管理,由於FAT32檔案系統在大容量檔案分區管理方面具有很高的效能,而且可以在大多數作業系統中被識別,因此具有很高的相容性。所以IDE硬碟加上FAT32檔案系統可以作為嵌入式系統大容量檔案儲存體管理的理想方案。本文主要闡述此方案基於Blackfin533處理器的硬體和軟體實現。硬體部分為基於ADSP-BF533 EZKIT Lite評估板設計的IDE介面擴充板;軟體部分包括基於擴充板和VisualDSP++ IDDE開發的IDE介面驅動程式和FAT32檔案系統操作函數。
1 IDE硬碟原理
1.1 IDE硬碟的定址

  硬碟的儲存結構1所示。

  它的基本存放裝置單元叫作扇區(Sector),除此之外。硬碟還有兩個重要的組成部分就是磁頭(Head)和柱面(Cylinder),它們共同組成硬碟的定址空間,其地址被稱為物理地址。顯然,物理地址定址方式不夠直觀、現在的大多數硬碟都支援另外一種定址方式,其地址被稱為邏輯地址(LBA),它把扇區順序編號,不必再考慮C、H、S等參數。LBA和C、H、S的換算關係如下:
  =NH×NS×C+NS×H+S-1;
  C=(LBA div NS)div NH;
  H=(LBA div NS)mod NH;
  S=(LBA mod NS)+1
  NH表示每個柱面的磁頭數,NS表示每個磁軌的扇區數,C表示柱面數[1]。
1.2 硬碟的引導原理
  硬碟分區的引導原理2所示。

  硬碟的第一個扇區(0柱面,0磁頭,1扇區)被稱作主開機磁區——MBR(Master Boot Record)。在MBR中,主要內容就是引導代碼和主要磁碟分割表。主要磁碟分割表只有四個分區表項,它們可以直接描述分區,也可以通過擴充分區表進行擴充[2]。
  這種引導組織形式是與檔案系統完全無關的,在每一個分區內,使用者可以根據自己的需要安裝任意的檔案系統。但使用何種檔案系統要在響應的分區表項內作記錄。
2 FAT32檔案系統概述[2][4]
2.1 FAT檔案系統

  FAT(File Allocation Table)檔案系統是微軟在20世紀70年代末到80年代初發布的,由微軟的MS-DOS作業系統支援。在發展的過程中,出現了FAT12、FAT16、FAT32三個版本,其中,FAT12檔案系統由於具有一些致命的缺點,很早就被FAT16取代了,而FAT16和FAT32目前還在廣泛使用。表1是三種檔案系統的對比。

  FAT檔案系統的原理可以簡單地描述為把儲存空間分區塊對應到一個表中,從而實現對儲存空間的靈活支配。儲存空間中的每一個塊被稱作簇,儲存空間的映射表被稱作FAT表。三種FAT檔案系統的一個明顯區別就是FAT表中表示一個簇所用的位元不同,分別是12、16和32。檔案的儲存是不必連續的,但在FAT表中可用鏈表的形式把檔案聯絡在一起,3所示。

  由於FAT檔案系統目前在大部分作業系統上都給予了支援,而且實現起來簡單,所以是理想的嵌入式系統大型存放區檔案管理方案。
2.2 FAT32檔案系統
  由於FAT16檔案系統在大容量分區管理方面的效率急劇下降,而FAT32檔案系統卻很好地解決了這個問題,所以在大分區管理方面,FAT32是理想的檔案系統。

  FAT32檔案系統在結構上延續了FAT檔案系統的基本結構,4所示,主要由以下三部分組成:
  (1) DBR(Dos Boot Record),包括跳轉指令、廠商標誌、os版本號碼,BPB(Bios Parameter Block)、擴充BPB、引導程式和結束符;
  (2) FAT表,實際資料存放區空間的映射表,FAT1和FAT2完全一致,後者作為前者的備份;
  (3) 實際資料存放區空間,相比FAT16,從簇2不再有專門的根目錄空間,而是把根目錄也當作一個特殊的檔案來處理,起始簇是2。
2.3 FAT32檔案系統對檔案的管理
  除了根目錄的所有檔案(子目錄也作為一種特殊的檔案存在)都對應一組資料作為檔案描述,被稱為檔案目錄項。每個目錄內的所有檔案和子目錄的檔案目錄項都儲存在這個目錄對應的儲存空間內,每一個檔案目錄項有32個位元組,主要包括檔案名稱、檔案屬性、檔案大小、檔案儲存體位置以及一系列的時間描述等。 把檔案路徑、檔案目錄項、FAT表聯絡在一起就可以完全把握一個檔案在硬碟的儲存情況。圖5所示是一個例子,通過下面的步驟定位檔案的所有內容:
  (1) 通過路徑找到檔案所在目錄的簇(a)。
  (2) 在目錄對應的空間(c)內比對檔案名稱,找到檔案對應的檔案目錄項(d)。
  (3) 通過檔案目錄項確定檔案的起始簇和檔案大小。
  (4) 根據FAT表內的簇鏈(b)確定檔案的儲存空間(e)。

3 IDE硬碟介面設計
3.1 ADSP-BF533 EZKIT Lite評估板簡介[5]

  Blackfin533是美國Analog Devices公司開發的具有MISC體系的微處理器。這種體系是同時具有RISC指令集和DSP核心的一個集合,所以Blackfin533既可以作為通用嵌入式微處理器進行開發應用,又具有強大的DSP資料處理能力。
  ADSP-BF533 EZKIT Lite是Analog Devices公司為方便Blackfin533的開發應用而提供的評估板。它可以與PC機通過USB或者PCI介面的模擬器進行調試,操作使用簡單方便。評估板的核心是一片Blackfin533處理器,輸入頻率是27MHz,可以通過內部PLL控制工作在所需的工作頻率上,最高可達750MHz。
  ADSP-BF533 EZKIT Lite評估板的片上資源非常豐富。有32M SDRAM(16M×16bit)、2M Flash(512K×16bit×2);通過AD1836音頻處理晶片提供了四路音頻輸入和六路音訊輸出連接埠;通過ADV7183視頻解碼晶片和ADV7171視頻編碼晶片分別提供了三路視頻輸入和視頻輸出連接埠;此外,評估板還提供了UART、JTAG、按鈕電路和LED指示等裝置,尤其是提供了一組功能齊全的擴充介面便於其它裝置的接入。IDE介面電路就是在這組擴充介面的基礎上設計的。
3.2 硬體設計
  IDE介面擴充板的設計是基於Blackfin533晶片的EBIU(External Bus Interface Unit)設計的。
  EBIU是Blackfin533與外部儲存空間之間的一個通用外部匯流排介面,通過對EBIU控制寄存器的設定,既可以串連SDRAM等同步儲存空間,也可以串連ROM、FIFOs、Flash等非同步儲存空間。EBIU內部結構6所示。

  按照ATAPI協議[3]在EBIU的基礎上設計了IDE介面方案,使Blackfin533可以通過這一介面實現對硬碟的操作,7所示。

4 FAT32檔案系統軟體設計
  FAT32檔案系統介面程式是在VisualDSP++ 3.5整合編譯環境下編寫和調試的。程式用標準C語言編寫,調用關係分為五個層次,如表2所示。

4.1 Visual DSP++3.5整合編譯環境[6]
  Visual DSP++ 3.5是Analog Devices公司為其DSP而開發的一套方便的管理系統,完整的系統包括整合了Visual DSP++核心的整合編譯和調試環境、帶即時運行庫的C/C++最佳化編譯器、彙編和連結器和模擬軟體以及大量的程式常式。VisualDSP++還有很多有用的功能,可以使開發人員更準確地把握程式佔用內部資源的情況,更直觀地瞭解程式內部各函數的效率等等,這樣在Visual DSP++這個軟體平台上就可以方便地進行DSP程式的開發和最佳化。
4.2 檔案讀寫策略最佳化
  FAT32檔案系統底層驅動函數決定檔案讀寫的策略,是提高程式讀寫檔案速度的關鍵。理論上FAT32檔案系統可以按照8所示的方式對檔案的任意內容進行操作。但是這個操作是要針對IDE硬碟進行的,所以必須考慮IDE硬碟的資料轉送特性。

  IDE硬碟的資料轉送速率可分為外部傳輸率(External Transfer Rate)和內部傳輸率(Internal Transfer Rate)。外部傳輸率指的是通過IDE介面緩衝與控制器之間進行資料轉送的速率。內部傳輸率也稱硬碟持續傳輸率,是磁碟與緩衝之間的資料轉送速率。後者比前者要慢很多,所以要提高傳輸速度,就要盡量連續讀寫,減少內部刷寫緩衝的次數。
  通過研究理論上檔案操作的過程發現,對FAT表的操作大大地影響了對檔案的連續讀寫。在實際程式設計中,為瞭解決這個問題,一方面在描述檔案的資料結構中指定一個成員來記錄當前檔案操作指標所在的簇,另一方面把部分FAT表提前讀入SDRAM中。這兩方面的處理大大減少了硬碟連續讀寫被打斷的次數。實驗證明這種方案大大提高了程式的效率,使速度大約提高了三個數量級。
4.3 功能設計
  一組完善的檔案系統庫函數是最基本的對檔案操作的功能實現函數,應包括檔案的開啟、關閉、讀、寫、定位等函數。本人設計十個函數供外部調用,即檔案的開啟、關閉、讀、寫、定位、尋找、目錄列表、重新命名、建立目錄、刪除等。通過最上層的庫函數調用第二層的具體功能函數來實現這些函數的操作,其中最主要的三個功能函數是fnFindFile、fnReadFile、fnWriteFile。
  fnFindFile的功能是在指定目錄下尋找和目標檔案名相匹配的檔案目錄項,產生這個檔案的指標,流程圖9所示。
  fnReadFile函數是讀檔案函數。它的參數包括要讀入的地址、要讀入資料的單位尺寸、要讀入資料的長度和目標檔案的檔案指標,流程圖10所示。

 

  fnWriteFile函數是寫檔案函數。它的參數和基本流程和讀檔案函數類似,但是由於寫檔案可能會超過原檔案大小,所以必須考慮在硬碟上開闢新的空間和修改檔案資訊等問題,流程圖11所示。

  本文介紹了一種基於Blackfin533處理器實現IDE硬碟的FAT32檔案系統的操作的方案。這套系統是基於硬碟PIO傳輸模式設計的,硬碟PIO傳輸模式最大傳輸速度可達到8.3MByte/s,本系統讀檔案速度平均可達6MByte/s,這說明本系統具有較高的效率。這套系統可以在VisualDSP++ 3.5下編譯成庫,其它程式可以很簡單地調用庫中提供的FAT32檔案系統操作函數,實現一種基於Blackfin533處理器的嵌入式大容量檔案儲存體管理的解決方案。

參考文獻
1 IDE - Hardware Reference & Information Document. http://www.repairfaq.org/filipg/LINK/F_IDE-tech.html, 1996.11.6
2 FAT檔案系統原理(一)(二)(三)(四).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原理與系統開發.北京:電子工業出版社, 2004

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.