文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)12-0023-03
USB移動硬盤需要用戶隨身攜帶,易感染病毒且主機關(guān)機后無法使用。隨著高性能網(wǎng)絡(luò)技術(shù)的不斷進(jìn)步,網(wǎng)絡(luò)存儲方式逐漸興起[1],個人/家庭網(wǎng)絡(luò)硬盤是為適應(yīng)當(dāng)前對遠(yuǎn)程文件資源訪問的迫切需求而設(shè)計開發(fā)的一種基于FPGA的嵌入式網(wǎng)絡(luò)存儲設(shè)備。它是一種將文件上傳至服務(wù)器主機、用戶可在任意地點的客戶端上通過網(wǎng)絡(luò)訪問該文件的存儲方式。
本文設(shè)計實現(xiàn)了一種基于FPGA的個人/家庭網(wǎng)絡(luò)硬盤,其系統(tǒng)整體架構(gòu)如圖1所示,分為硬件層、內(nèi)核層及用戶層。用戶層是系統(tǒng)的交互操作界面,硬件層實現(xiàn)系統(tǒng)對底層硬盤的各種操作,內(nèi)核層負(fù)責(zé)在用戶層與硬件層之間傳遞驅(qū)動的相關(guān)參數(shù)及數(shù)據(jù)。利用XUPV5 LX110T FPGA開發(fā)板設(shè)計并掛載ATA控制器的IP核;移植PetaLinux操作系統(tǒng)并添加獨立的FAT32文件系統(tǒng)模塊;用戶端采用B/S模式。由于用戶端是標(biāo)準(zhǔn)的瀏覽器,用戶只需要一臺能上網(wǎng)的PC機就可利用Web瀏覽器調(diào)用相應(yīng)的通用網(wǎng)關(guān)接口CGI(Common Gateway Interface)程序完成對硬盤的遠(yuǎn)程操作。個人/家庭網(wǎng)絡(luò)硬盤可全天候不間斷工作,方便快捷,通過掛載多個硬盤可擴展用戶存儲容量。未來可以參考本文提出的通用方法結(jié)合不同的需求對系統(tǒng)進(jìn)一步開發(fā)與完善。
1 系統(tǒng)設(shè)計
1.1 硬件平臺簡介
系統(tǒng)硬件平臺結(jié)構(gòu)如圖2所示。系統(tǒng)采用Xilinx公司的XUPV5 LX110T FPGA開發(fā)板,內(nèi)嵌MicroBlaze軟核、以太網(wǎng)控制器、Flash、DDR等模塊,通過PLB總線實現(xiàn)模塊之間的交互通信。底層數(shù)據(jù)存儲設(shè)備使用具有IDE接口的ATA硬盤,通過V5開發(fā)板的擴展接口與FPGA芯片相連,用戶端通過訪問網(wǎng)絡(luò)實現(xiàn)對硬盤的遠(yuǎn)程訪問。
圖2模塊中,除陰影所示模塊需自行開發(fā)外,其他部分均由XUPV5 LX110T FPGA開發(fā)板提供。
1.2 ATA主機控制器的IP核設(shè)計
本文采用具有IDE接口的希捷ST340014A硬盤(40 GB)作為數(shù)據(jù)存儲設(shè)備,依據(jù)ATA/ATAPI-6協(xié)議[2]完成了對ATA主機控制器的設(shè)計,并將其封裝為IP核以方便集成到不同總線結(jié)構(gòu)的ASIC或SoC系統(tǒng)中[3]。ATA主機控制器的結(jié)構(gòu)如圖3所示。
硬件層的ATA主機控制器包括復(fù)位、PIO控制、MDMA(Multiword DMA)控制、Ultra DMA控制、接收/發(fā)送緩存等6個主要模塊,全部用VHDL語言編程實現(xiàn),仿真調(diào)試通過。其中,復(fù)位模塊在初始化或異常情況下對各個模塊的重置復(fù)位;PIO模塊控制PIO模式的讀寫硬盤操作;MDMA模塊實現(xiàn)對硬盤的多字DMA模式讀寫操作;Ultra DMA控制模塊用于實現(xiàn)對以Ultra DMA方式訪問硬盤的整個流程的控制;接收/發(fā)送緩存模塊用于控制數(shù)據(jù)的緩存。
實現(xiàn)ATA主機控制器的關(guān)鍵除了要按要求設(shè)計嚴(yán)格的時序邏輯及狀態(tài)機外,還需要實現(xiàn)對協(xié)議指定寄存器的讀寫操作。因為命令及命令參數(shù)的傳遞、設(shè)備狀態(tài)信息的傳遞都是通過對寄存器的讀寫來完成的。ATA協(xié)議中各寄存器的數(shù)據(jù)傳輸遵守PIO傳輸模式,通過設(shè)置CS1-、CS0-和DA[2:0]選通寄存器地址,DIOR-/DIOW-信號控制讀寫。同時,ATA主機控制器或硬盤把待傳送的數(shù)據(jù)放到數(shù)據(jù)總線上,并根據(jù)數(shù)據(jù)傳送的方向由控制器或硬盤讀取總線上的數(shù)據(jù)。ATA/ATAPI-6協(xié)議中各寄存器[4]的定義如表1所示。
實現(xiàn)內(nèi)核驅(qū)動與底層硬盤的對接過程為:首先將VHDL設(shè)計的ATA主控制器模塊封裝成用戶定制的IP核,通過PLB總線與MicroBlaze處理器互連;其次對XGpio函數(shù)進(jìn)行封裝。硬盤驅(qū)動定義如表2所示。
1.3 FAT文件系統(tǒng)
文件系統(tǒng)作為操作系統(tǒng)與底層硬件之間的橋梁,在嵌入式系統(tǒng)等各個領(lǐng)域得到了廣泛的應(yīng)用。當(dāng)前U盤、MP3、MP4等設(shè)備幾乎都采用了微軟公司FAT32[5]文件系統(tǒng),但由于并未公布FAT32文件系統(tǒng)的源碼,本文采用開源項目FatFS[6]。FatFS獨立于底層的DISK I/O層,不依賴于硬件架構(gòu)并與Windows的FAT文件系統(tǒng)有著良好的兼容性。
FAT文件系統(tǒng)可劃分為需求、邏輯和物理三個層次。需求層支持用戶的基本文件操作;邏輯層實現(xiàn)FAT文件系統(tǒng)到物理層的映射;物理層實現(xiàn)與物理存儲介質(zhì)的接口(包括基本的讀寫扇區(qū)、硬盤復(fù)位等操作)。物理層主要實現(xiàn)5個接口:disk_initialize(初始化磁盤驅(qū)動器)、disk_status(獲取磁盤狀態(tài))、disk_read(讀扇區(qū))、disk_write(寫扇區(qū))、disk_ioctl(控制設(shè)備關(guān)聯(lián)特性)。利用這5個接口可以實現(xiàn)FAT文件系統(tǒng)的需求和邏輯。
文件系統(tǒng)物理層的5個接口函數(shù)調(diào)用PetaLinux內(nèi)核驅(qū)動實現(xiàn)底層硬盤與文件系統(tǒng)的對接,進(jìn)而實現(xiàn)FAT文件系統(tǒng)的各個流程,例如讀扇區(qū)disk_read操作將調(diào)用表2中定義的xgpio_ata_ioctl、xgpio_ata_read等驅(qū)動函數(shù),這些函數(shù)實現(xiàn)了ATA IP核中對相應(yīng)的寄存器讀寫功能。首先,將參數(shù)及數(shù)據(jù)傳遞到內(nèi)核中;其次,將xgpio_ata_ioctl、xgpio_ata_read等驅(qū)動函數(shù)封裝到應(yīng)用層中的disk_read中,滿足文件系統(tǒng)邏輯層的需求,進(jìn)而實現(xiàn)文件系統(tǒng)需求層各個接口。所有的FAT文件系統(tǒng)操作流程都封裝為庫,被用戶直接調(diào)用。文件系統(tǒng)的接口函數(shù)全部被定義到應(yīng)用層,供CGI調(diào)用。
經(jīng)測試,編寫的FatFS文件系統(tǒng)物理層接口函數(shù)工作正常,可以滿足邏輯層、需求層的所有需求。
1.4 用戶接口
PetaLinux操作系統(tǒng)是專門用于FPGA的全功能嵌入式Linux操作系統(tǒng)[7],用戶可使用其自帶的工具方便快捷地搭建所需的開發(fā)環(huán)境。PetaLinux中集成了對部分常用IP核的支持,減少了用戶移植、編寫驅(qū)動的工作量。同時源碼中包含大量的腳本語言,簡化了操作。編譯生成并拷貝FatFS庫到PetaLinux /bin目錄下,用戶便可將其作為應(yīng)用程序進(jìn)行調(diào)用。
用戶和整體系統(tǒng)的接口通過滿足CGI規(guī)范的C語言編寫實現(xiàn)。服務(wù)器采用完全支持CGI的高性能單任務(wù)型嵌入式Web服務(wù)器Boa。移植PetaLinux時需開啟對Boa的支持。
GI工作流程:當(dāng)輸入目標(biāo)板的IP地址后,用戶的Web瀏覽器與Boa服務(wù)器建立TCP連接;當(dāng)在Web頁面上完成一定操作后,將會向PetaLinux中的Boa服務(wù)器發(fā)出CGI請求,Boa服務(wù)器接收到該請求后將會創(chuàng)建一個CGI進(jìn)程,并將具體的環(huán)境變量、參數(shù)與標(biāo)準(zhǔn)的輸入方式傳遞給CGI程序;CGI程序完成相應(yīng)的處理后再將結(jié)果傳給Boa服務(wù)器,服務(wù)器將輸出內(nèi)容添加一定的標(biāo)識信息后以HTML頁面的形式返回并呈現(xiàn)給用戶[8],具體流程如圖4所示。例如,用戶點擊“Read”按鈕時,將觸發(fā)HTML頁面中的表單并向服務(wù)器發(fā)出HTTP請求(CGI請求),發(fā)往<FORM>標(biāo)記中的ACTION 屬性標(biāo)識的地址(此處為CGI處理程序)。
2 系統(tǒng)特點
個人/家庭網(wǎng)絡(luò)硬盤具以下特點:
(1)較高的私有性及安全性。存儲設(shè)備用戶可見,確保了用戶數(shù)據(jù)的私有性及安全性;
(2)即插即用。安裝簡單,插上電源及網(wǎng)線即可使用;
(3)采用瀏覽器訪問。只要一臺可以上網(wǎng)的PC機,利用瀏覽器即可實現(xiàn)對硬盤的訪問;
(4)易操作和易擴展。通過增加硬盤數(shù)量或更換存儲介質(zhì)可以支持用戶擴充存儲容量。
實驗室測試環(huán)境中,在瀏覽器輸入開發(fā)板IP地址(192.168.0.10)與FPGA開發(fā)板建立連接,用戶操作主界面如圖5所示。
點擊“上傳文件”按鈕后將提示用戶選擇要上傳的文件,文件確定后點擊“Submit”將執(zhí)行上傳文件的操作,即由本地主機寫入至遠(yuǎn)端的硬盤中。
本文設(shè)計并實現(xiàn)的個人/家庭網(wǎng)絡(luò)硬盤,在XUPV5 LX110T FPGA開發(fā)板上掛載了ATA控制器的IP核、移植了PetaLinux操作系統(tǒng)、添加了獨立的FAT32文件系統(tǒng)模塊、設(shè)計了硬盤的人機交互界面,通過實際系統(tǒng)驗證證明了該方案的可行性。未來可結(jié)合相應(yīng)的需求對個人/家庭網(wǎng)絡(luò)硬盤進(jìn)一步開發(fā)與完善。
參考文獻(xiàn)
[1] 鄧玉輝.基于網(wǎng)絡(luò)磁盤陣列的海量信息存儲系統(tǒng)[D].武漢:華中科技大學(xué),2004.
[2] ANSI INCITS.Information technology-AT attachment with packet interface-6[S].USA:T13 Technical Committee,2002.
[3] 齊作府.基于FPGA的ATA Device IP研究[D].阜新:遼寧工程技術(shù)大學(xué),2008.
[4] 李曉娟.基于FPGA的Ultra DMA寫控制器的實現(xiàn)[J].科學(xué)技術(shù)與工程,2007(15):3746-3749.
[5] Microsoft Corporation.Microsoft EFI FAT32 file system specification[S].2000.
[6] FatFs generic FAT file system module[EB/OL].(2011-11-04)[2012-04-20].http://elm-chan.org/fsw/ff/ 00index_e.html.
[7] 薛慧敏,武傳華,路后兵,等.基于MicroBlaze的PetaLinux 嵌入式操作系統(tǒng)移植[J].微計算機信息,2011,27(8):108-110.
[8] 劉輝,劉毅敏.嵌入式Web服務(wù)器的研究與設(shè)計[J].數(shù)字通信,2011(4):78-81.