《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的C/S模式網(wǎng)絡(luò)硬盤設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA的C/S模式網(wǎng)絡(luò)硬盤設(shè)計(jì)與實(shí)現(xiàn)
2014年電子技術(shù)應(yīng)用第12期
郭燕妮,何 杰,張 剛
(太原理工大學(xué) 信息工程學(xué)院,山西 太原030024)
摘要: 針對(duì)目前多數(shù)B/S(Browser/Server,瀏覽器/服務(wù)器)模式網(wǎng)絡(luò)硬盤存在的安全性問(wèn)題以及文件格式和文件大小受限等問(wèn)題,提出并實(shí)現(xiàn)了一種基于FPGA的C/S(Client/Server,客戶端/服務(wù)器)模式網(wǎng)絡(luò)硬盤,分別在用戶層、內(nèi)核層對(duì)NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))服務(wù)器、FAT32文件系統(tǒng)進(jìn)行了設(shè)計(jì)及改進(jìn),并在硬件層設(shè)計(jì)了硬盤控制器IP核及其所需的驅(qū)動(dòng)程序,最后通過(guò)Petalinux操作系統(tǒng)移植到Microblaze中,利用軟硬件協(xié)同設(shè)計(jì)的方式在XUPV5_LX110T開(kāi)發(fā)板上驗(yàn)證通過(guò)。驗(yàn)證結(jié)果表明,該網(wǎng)絡(luò)硬盤可實(shí)現(xiàn)遠(yuǎn)程文件在線訪問(wèn)及其他基本操作,并且對(duì)文件格式、單個(gè)文件大小無(wú)限制。
中圖分類號(hào): TP393
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)12-0030-03
The design and implement of C/S mode network hard disk based on FPGA
Guo Yanni,He Jie,Zhang Gang
College of Information and Engineering,Taiyuan University of Technology,Taiyuan 030024,China
Abstract: Aiming at the problems of most existing B/S (browser/Server) mode network hard disks, such as security problem, the limitation of file format and file size, this paper proposes and implements a kind of C/S(Client/Server) mode network hard disk based on FPGA. It designs and improves the NFS server and FAT32 file system in the user layer and inner nuclear layer, then designs hard disk controller IP core and required drivers in the hardware layer. Finally, through the transplantation of Petalinux operating system to the Microblaze, using co-design of hardware and software,the system is verified on XUPV5_LX110T board. Verification results show that this network hard disk can realize remote file access and other basic operations online, and has no limitation of file format and a single file size.
Key words : C/S mode;NFS;FAT32 file system;Intellectual Property core;system transplantation

0 引言

  隨著網(wǎng)絡(luò)技術(shù)的不斷進(jìn)步以及網(wǎng)絡(luò)應(yīng)用程序的增加,人們對(duì)簡(jiǎn)單快捷易管理易攜帶存儲(chǔ)方式的需求愈加強(qiáng)烈,而網(wǎng)絡(luò)硬盤可以不需要攜帶任何存儲(chǔ)設(shè)備,只要通過(guò)網(wǎng)絡(luò)就能隨時(shí)隨地對(duì)目標(biāo)文件進(jìn)行訪問(wèn)。

  目前,已有眾多企業(yè)推出了各類的網(wǎng)絡(luò)硬盤比如百度網(wǎng)盤、微軟Skydrive、華為網(wǎng)盤等,注冊(cè)用戶可以通過(guò)賬號(hào)密碼隨時(shí)隨地訪問(wèn)自己的已經(jīng)上傳的內(nèi)容,對(duì)文件進(jìn)行管理,實(shí)現(xiàn)了無(wú)存儲(chǔ)設(shè)備的遠(yuǎn)程訪問(wèn),并且不會(huì)損壞文件。但是,目前已有的網(wǎng)絡(luò)硬盤均是基于B/S模式的,雖然支持文件的一次性上傳下載及在線瀏覽等功能,但與操作本地文件之間有本質(zhì)區(qū)別,用戶不能在線對(duì)文件進(jìn)行編輯保存。此外,該模式的網(wǎng)絡(luò)硬盤還存在安全性能差,對(duì)服務(wù)器性能要求高、與服務(wù)器交互性差及存儲(chǔ)數(shù)據(jù)傳輸速度慢等問(wèn)題。

  本文通過(guò)FPGA編程設(shè)計(jì)實(shí)現(xiàn)了一種基于C/S模式的網(wǎng)絡(luò)硬盤,與現(xiàn)有B/S模式網(wǎng)絡(luò)硬盤不同,它是通過(guò)客戶端與服務(wù)器進(jìn)行直接相連的,沒(méi)有中間環(huán)節(jié),因此具有響應(yīng)速度快、交互性強(qiáng)、網(wǎng)絡(luò)通信量低、易于處理大量數(shù)據(jù)等特點(diǎn),而且,通過(guò)網(wǎng)絡(luò)用戶可以對(duì)文件進(jìn)行在線操作。

1 系統(tǒng)簡(jiǎn)介及平臺(tái)搭建

  1.1 系統(tǒng)整體架構(gòu)


001.jpg


  本文設(shè)計(jì)實(shí)現(xiàn)了一種基于FPGA的C/S模式網(wǎng)絡(luò)硬盤,其系統(tǒng)整體框架如圖1所示,主要包括用戶層、內(nèi)核層和硬件層。其中,用戶層主要完成的是客戶端與服務(wù)器通信;硬件層負(fù)責(zé)對(duì)存儲(chǔ)硬盤的操作,可以通過(guò)ATA硬盤控制器對(duì)上層命令進(jìn)行解析,對(duì)硬盤進(jìn)行數(shù)據(jù)讀取和存入;內(nèi)核層是用戶層與硬件層之間的連接樞紐,該層可以通過(guò)文件系統(tǒng)以及驅(qū)動(dòng)程序?qū)τ脩魧影l(fā)送的請(qǐng)求進(jìn)行處理并對(duì)硬件層硬盤進(jìn)行調(diào)用訪問(wèn)。

  1.2 系統(tǒng)硬件平臺(tái)搭建


002.jpg

  系統(tǒng)是在XUPV5_LX110T開(kāi)發(fā)板上外接ATA硬盤以及網(wǎng)線實(shí)現(xiàn)的,結(jié)構(gòu)組成如圖2所示。平臺(tái)是以Xilinx公司的XUPV5_LX110T FPGA開(kāi)發(fā)板為基礎(chǔ)搭建的,通過(guò)對(duì)開(kāi)發(fā)板內(nèi)嵌的各個(gè)模塊進(jìn)行選擇,然后連接DDR2_SRAM、Hard_Ethernet_MAC、RS232_Uart_1等基本外部設(shè)備,最后添加硬盤控制器IP核,完成系統(tǒng)整體平臺(tái)的搭建。其中,核心處理器選擇的是Microblaze軟核處理器。

2 系統(tǒng)設(shè)計(jì)

  2.1 硬件層設(shè)計(jì)

  由于選用的XUPV5_LX110T FPGA開(kāi)發(fā)板可以提供圖2中的大部分模塊,因此,系統(tǒng)的硬件層主要是對(duì)ATA硬盤控制器IP核[1]的設(shè)計(jì)。本文通過(guò)對(duì)ATA/ATAPI-6協(xié)議進(jìn)行分析,用VHDL語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)對(duì)硬盤數(shù)據(jù)進(jìn)行扇區(qū)讀寫操作,其具體模塊結(jié)構(gòu)圖3所示。

003.jpg

  硬盤控制器按照功能模塊共劃分為BRAM接收和發(fā)送模塊、指令解析模塊、硬盤訪問(wèn)控制模塊、CRC校驗(yàn)?zāi)K以及差錯(cuò)處理模塊。其中,指令解析模塊負(fù)責(zé)對(duì)上層發(fā)送的請(qǐng)求進(jìn)行監(jiān)控解析,并觸發(fā)硬盤訪問(wèn)控制模塊從而對(duì)硬盤操作;硬盤訪問(wèn)控制模塊在接收到觸發(fā)命令后,對(duì)基本控制時(shí)序進(jìn)行設(shè)置,包括硬盤硬件復(fù)位、硬盤模式設(shè)置、扇區(qū)讀寫等;CRC校驗(yàn)?zāi)K對(duì)讀寫的數(shù)據(jù)進(jìn)行校驗(yàn);差錯(cuò)處理模塊是對(duì)錯(cuò)誤指令或指令執(zhí)行異常的情況進(jìn)行處理。以上所有模塊均是用VHDL語(yǔ)言實(shí)現(xiàn)的,并通過(guò)仿真調(diào)試及測(cè)試。

  系統(tǒng)中內(nèi)核層與硬盤之間是以PLB總線掛載的方式互連的,掛載后,可以通過(guò)硬盤驅(qū)動(dòng)程序[2],以寄存器的方式訪問(wèn)硬盤數(shù)據(jù),因此在以上功能模塊設(shè)計(jì)以后,要對(duì)硬盤控制器按照自定義IP核的方法進(jìn)行IP核封裝來(lái)作為外接設(shè)備。

  2.2 內(nèi)核層設(shè)計(jì)

  本系統(tǒng)采用FAT32文件系統(tǒng)[3]對(duì)用戶數(shù)據(jù)進(jìn)行管理。為適應(yīng)上層用戶層的調(diào)用,本文對(duì)FAT32文件系統(tǒng)進(jìn)行了改進(jìn):首先對(duì)文件系統(tǒng)信息建立全局變量struct fs_fat32 fatfs,并用struct node_fat32初始化文件節(jié)點(diǎn);然后重寫對(duì)文件及目錄的操作函數(shù)以適應(yīng)上層NFS的調(diào)用;最后編寫FAT32文件系統(tǒng)的Makefile文件進(jìn)行測(cè)試。測(cè)試證明可以對(duì)文件以及目錄進(jìn)行正確讀寫、修改、刪除等基本操作。

  2.3 用戶層設(shè)計(jì)

  用戶層設(shè)計(jì)是系統(tǒng)的核心部分,主要是對(duì)NFS服務(wù)器端的設(shè)計(jì)。NFS是一種分布式文件系統(tǒng)協(xié)議,通過(guò)網(wǎng)絡(luò),用戶可以像訪問(wèn)本地文件一樣訪問(wèn)遠(yuǎn)端系統(tǒng)上的文件。因此結(jié)合RPC(Remote Procedure Call,遠(yuǎn)程過(guò)程調(diào)用)和XDR(External Data Representation,外部數(shù)據(jù)表示),就可以實(shí)現(xiàn)跨網(wǎng)絡(luò)、跨操作系統(tǒng)、跨文件系統(tǒng)的訪問(wèn)。其中,RPC是可實(shí)現(xiàn)遠(yuǎn)程客戶端對(duì)服務(wù)器端函數(shù)的調(diào)用。而XDR保證了數(shù)據(jù)格式的一致性。

004.jpg

  NFS服務(wù)器端[4]設(shè)計(jì)主要是實(shí)現(xiàn)一次完整的NFS文件訪問(wèn),通過(guò)客戶端與服務(wù)器端RPC的Portmap、Mountd、NFSD 3個(gè)模塊間的交互完成,其交互的具體過(guò)程如圖4所示。在交互過(guò)程中,每當(dāng)服務(wù)器端NFSD模塊接收到客戶端請(qǐng)求時(shí),就會(huì)對(duì)接收到的數(shù)據(jù)進(jìn)行XDR解碼處理,并根據(jù)解碼得到的過(guò)程號(hào)調(diào)用NFSD程序中的過(guò)程進(jìn)行操作,NFSD過(guò)程會(huì)通過(guò)調(diào)用底層文件系統(tǒng)對(duì)請(qǐng)求進(jìn)行處理,并將處理結(jié)果進(jìn)行XDR編碼后發(fā)送回客戶端,其具體操作流程如圖5所示。

005.jpg

  考慮到NFS整體與內(nèi)核聯(lián)系緊密,可移植性低,因此本文在保持NFS功能的基礎(chǔ)上對(duì)其進(jìn)行了簡(jiǎn)化設(shè)計(jì)及改進(jìn),首先將Portmap(RPCbind)、Mountd、NFSD寫成應(yīng)用程序,采用Linux中混合多端口的異步Socket[5]編程方法。分別基于TCP和UDP傳輸協(xié)議對(duì)NFSD、Mountd、Portmap進(jìn)行套接字創(chuàng)建,然后設(shè)置全局變量svc_fdset、fd_set對(duì)Socket進(jìn)行管理,并利用select函數(shù)選擇有請(qǐng)求的套接字,最后用recv函數(shù)和send函數(shù)進(jìn)行數(shù)據(jù)接收和發(fā)送。其中,本文對(duì)NFSD、Mountd、Portmap這三個(gè)進(jìn)程用結(jié)構(gòu)體svc_program進(jìn)行定義,并用結(jié)構(gòu)體中pg_next將各個(gè)進(jìn)程加入鏈表,其中,鏈表頭為NFSD程序。在接收到請(qǐng)求后,服務(wù)器端從鏈表頭對(duì)鏈表進(jìn)行順序查找,找到需要的服務(wù),對(duì)其按照?qǐng)D5所示的流程進(jìn)行處理。

3 系統(tǒng)驗(yàn)證


006.jpg

  本系統(tǒng)經(jīng)過(guò)系統(tǒng)移植[6]將軟硬件進(jìn)行整合來(lái)完成系統(tǒng)的整體設(shè)計(jì)。先下載petalinux-v0.40-final內(nèi)核源碼到虛擬機(jī)“/root/桌面”目錄下移植Petalinux操作系統(tǒng),然后將硬件平臺(tái)信息及硬件工程添加到操作系統(tǒng)中,最后將NFS服務(wù)程序以應(yīng)用程序的形式添加到操作系統(tǒng)內(nèi)核,同時(shí)將硬盤控制器封裝為IP核添加到內(nèi)核中。添加完成后對(duì)內(nèi)核進(jìn)行編譯并燒寫到開(kāi)發(fā)板中,運(yùn)行整個(gè)系統(tǒng)。

  系統(tǒng)運(yùn)行后,打開(kāi)客戶端,在客戶端輸入掛載命令:sudo mount-t nfs-o nolock 192.168.xx.xx:/ /tmp/nfs,其中,192.168.xx.xx為開(kāi)發(fā)板IP地址,本文中為192.168.0.10,

  “/tmp/nfs”為客戶端掛載目錄。測(cè)試結(jié)果如圖6所示,圖中在客戶端“/tmp/nfs”中顯示的文件,實(shí)際為服務(wù)器端硬盤中的文件,在客戶端nfs目錄下即可打開(kāi)這些文件,在線對(duì)文件進(jìn)行讀寫、修改保存等操作,而且拖動(dòng)文件即可實(shí)現(xiàn)文件下載上傳,速度可達(dá)1.3 MB/s。實(shí)驗(yàn)表明,設(shè)計(jì)的基于FPGA的C/S模式網(wǎng)絡(luò)硬盤具有以下優(yōu)勢(shì):(1)交互性強(qiáng),支持用戶在線操作文件;(2)實(shí)用性廣,可進(jìn)行硬盤陣列擴(kuò)展,擴(kuò)大內(nèi)存;(3)兼容性強(qiáng),C/S模式網(wǎng)絡(luò)硬盤具有與本地硬盤相同的兼容性,不限制存儲(chǔ)文件的格式、大小及存儲(chǔ)時(shí)間;(4)安全性高,采取賬號(hào)密碼映射IP的方式,存儲(chǔ)文件僅登錄用戶可見(jiàn)。

4 結(jié)論

  本文設(shè)計(jì)了一種基于FPGA的C/S模式網(wǎng)絡(luò)硬盤,在XUPV5_LX110T開(kāi)發(fā)板搭建了系統(tǒng)并驗(yàn)證通過(guò)。結(jié)果表明該種網(wǎng)絡(luò)硬盤具備很好的可行性,可以實(shí)現(xiàn)遠(yuǎn)程訪問(wèn),而且傳輸速度快,支持在線編輯,具有廣泛的應(yīng)用前景及參考價(jià)值。

參考文獻(xiàn)

  [1] 彭維.基于PLB總線的用戶IP核接口技術(shù)研究[D].合肥:合肥工業(yè)大學(xué),2011.

  [2] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解(第二版)[M].北京:人民郵電出版社,2010.

  [3] 楊明極,陳方縣,吳學(xué)君.嵌入式系統(tǒng)中SD卡的FAT32文件系統(tǒng)的設(shè)計(jì)[J].電聲技術(shù),2010,34(4):36-39.

  [4] 劉榮勝.一種基于異步回調(diào)機(jī)制的NFS服務(wù)端設(shè)計(jì)與實(shí)現(xiàn)[J].蘇州市職業(yè)大學(xué)學(xué)報(bào),2013(1):41-43.

  [5] STEVENS W R.Linux network programming——Socket[Z].2011.

  [6] 薛慧敏,武傳華,路后兵.MicroBlaze處理器的PetaLinux操作系統(tǒng)移植[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011,11(4):67-69.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。