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