新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于SOA架構的網絡硬盤控制器的設計

        基于SOA架構的網絡硬盤控制器的設計

        作者: 時間:2017-06-04 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201706/348101.htm

        摘要:

        項目設計一種采用“流程+引擎+構件”的SOA三層架構的。系統采用FPGA作為系統,在FPGA內部MicroBlaze軟核處理器上移植PetaLinux操作系統,加載NFS網絡文件系統,將擴展Int 13H規范中定義的基本硬盤操作指令封裝成原子構件,并采用VHDL硬件描述語言實現各原子構件,實現對硬盤的基本操作。設計引擎模塊,根據NFS文件系統操作指令,調用相關原子操作,實現硬盤存儲空間管理、文件存儲操作、用戶管理等功能。本文設計可作為個人存儲服務器連接到以太網,用戶可通過連接網絡的任意主機實現對服務器硬盤的訪問管理。

        1 引言

        隨著電子郵箱及的普及,用戶可不用攜帶存儲設備,而直接通過網絡進行數據的上傳和下載,實現個人數據的管理。然而,使用網絡運營商提供的網絡硬盤可用空間有限,且數據保密性不強。本項目旨在研究一種適合于個人應用的網絡硬盤存儲裝置,該網絡硬盤使用RJ45接口連接到以太網,通過以太網以TCP/IP協議,用戶可用以太網上任意主機實現對網絡硬盤的管理操作,與電子郵箱及網絡運營商提供的網絡硬盤相比,此項目設計的個人網絡存儲硬盤有著存儲空間容量大、使用安全、可靠性較高等優點。

        2 系統原理與特點

        系統結構如圖2-1所示。

        圖2-1 系統結構

        用戶通過連接網絡的客戶端PC機采用TCP/IP協議實現文件的上傳和下載,上傳文件時,用戶通過客戶端PC機向網絡硬盤控制器發送上傳文件指令,并發送文件數據,FPGA內以太網控制器模塊接收數據并由DDR2控制器模塊寫入到DDR2中緩存,然后根據NFS協議將數據從DDR2中讀出經硬盤控制器模塊寫入到硬盤中保存;客戶端下載文件時,用戶通過客戶端PC機向硬盤控制器發送下載文件指令,FPGA內以太網控制器模塊接收指令后,根據NFS協議將文件數據通過硬盤控制器模塊讀出并寫入到DDR2緩存中,然后將數據由DDR2中讀出并由以太網控制器模塊,加載網絡協議棧,將數據由網絡發送到客戶端PC。

        FPGA內部調用MicroBlaze處理器,移植PetaLinux操作系統,配置TCP/IP協議棧,加載NFS網絡文件系統,利用VHDL語言設計Int13H規范中定義的對硬盤操作的原子構件,并設計對原子構件調用的引擎管理模塊,將原子構件與引擎管理模塊以用戶IP核形式添加到與MicroBlaze處理器互聯的PLB片內總線,FPGA內部系統模塊框圖如圖2-2所示。

        圖2-2 FPGA內功能模塊

        3 硬盤引擎管理模塊設計

        借鑒互聯網分布式計算領域中網格計算、云計算技術廣泛采用的為核心設計思想,首先進行業務需求分析、根據業務用例、用例場景、業務步驟的分析過程找出對應的原子業務。根據業務原子業務映射到相應的系統需求進行系統建模,通過形式語義將場景步驟序列描述為由一系列原子構件的組合。完成“流程+引擎+構件”的三層SOA結構的文件系統設計。

        3.1 文件系統業務單元

        文件系統是操作系統中負責管理和存儲文件信息的軟件系統。主要負責對文件存儲器空間進行組織和分配,文件的存儲以及對存入的文件進行保護和檢索。文件系統主要包括存儲空間管理、文件存儲操作、用戶管理這三個業務單元。

        存儲實間管理主要包括對存儲空間的組織、分配和回收。文件存儲操作主要包括用戶對存儲空間文件的基本操作,包含文件的生成、刪除、打開、關閉、文件讀、文件寫等。用戶管理主要包括用戶的注冊、登錄以及用戶權限管理等。

        3.2 提取業務用例

        在提取文件系統的業務用例時,主要是從業務主角——用戶的角度出發,對文件系統的每一個業務單元進行分析提取業務用例。

        3.2.1 存儲空間管理

        存儲空間管理業務單元的用例視圖如圖3-1所示。

        圖3-1 存儲空間管理用例視圖

        存儲空間管理該業務單元主要包括如下業務用例:初始化存儲空間、分配存儲空間、追加存儲空間、回收存儲空間、查詢剩余存儲空間。

        3.2.2 文件存取操作

        文件存取操作業務單元的業務用例視圖如圖3-2所示。

        圖3-2 文件存取操作用例視圖

        文件存取操作業務單元包括如下業務用例:建立文件、打開文件、讀文件、寫文件、關閉文件、保存文件、刪除文件、保存文件、列舉文件、檢索文件、復制文件等。

        3.2.3 用戶管理

        用戶管理用例視圖如圖3-3所示。

        圖3-3 用戶管理用例視圖

        用戶管理該業務單元包括的業務用例主要有填加用戶、刪除用戶、用戶登錄、用戶退出、設置用戶權限、修改用戶權限等。

        3.3業務用例場景

        3.3.1 劃分業務用例場景

        業務用例在實際執行的進程中可能會有多種不同的情況發生,每一種情況都稱為該業務用例的一個業務用例場景,也可以說業務用例場景是指實例化的用例。通過對文件系統的業務用例進行分析,劃分出文件系統的業務用例場景如表1所示。

        表3-1 文件系統業務用例場景

        業務用例

        業務用例場景

        說明

        初始化存儲空間

        初始化存儲空間

        對未進行初始化設置的空間進行初始化。

        分配存儲空間

        分配存儲空間

        為新創建的文件分配存儲空間。

        追加存儲空間

        追加存儲空間

        對現有存儲空間已滿的文件追加新的存儲空間

        回收存儲空間

        回收存儲空間

        文件被刪除后,回收不用的存儲空間

        建立文件

        創建文檔文件

        創建一個新的文件并存檔

        創建文件夾

        建立文件的組織單元

        打開文件

        打開文檔文件

        打開一個已經存在的文件

        打開文件夾

        打開一個已經存在的文件夾

        讀文件

        順序讀文件

        從文件頭順序讀取文件內容

        隨機讀文件

        從指定位置處讀取指定長度的文件內容

        寫文件

        寫文件

        從指定位置處向已創建文件中寫入內容

        關閉文件

        關閉文檔文件

        關閉已經打開的文件

        關閉文件夾

        關閉已經打開的文件夾

        保存文件

        保存文件

        對文件內容或屬性有過更改的文件進行存檔

        刪除文件

        刪除文件內容

        刪除指定位置處指定長度的文件內容

        刪除文件

        刪除已經存在的文檔性質的文件

        刪除文件夾

        刪除已經存在的存放文檔的文件夾

        列舉文件

        列舉當前文件夾下文件

        列舉當前文件夾目錄中的所有文件,包括文件夾和文檔文件。

        列舉存儲空間的所有文件

        列舉存儲空間中的所有文件夾和文件

        檢索文件

        在當前文件夾檢索

        在當前文件夾中查找指定名稱的文件或文件夾

        在整個存儲空間檢索

        從整個存儲空間查找指定名稱的文件或文件夾

        改變目錄

        進入子目錄

        進入當前目錄的下級目錄

        返回父目錄

        返回當前目錄的上級目錄

        填加用戶

        注冊用戶

        登記允許對存儲空間內文件進行操作的用戶信息

        刪除用戶

        刪除用戶

        刪除已登記的文件系統的用戶信息

        用戶登錄

        用戶登錄

        用戶進入文件存儲空間

        用戶退出

        用戶退出

        用戶退出文件存儲空間

        修改用戶信息

        修改用戶信息

        修改已登記的用戶信息

        設置用戶權限

        設置用戶權限

        對進入文件存儲空間用戶的文件操作權限進行設置

        3.3.2 描述業務用例

        本文對文件系統業務用例描述采用的是用例文檔和UML的活動圖,通過畫出文件系統業務用例場景的活動圖,按照所用例文檔模板的格式對活動圖進行描述,建立文件系統的業務用例模型,得到文件系統的業務需求文檔。

        3.4 提取原子業務

        前面對文件系統進行了業務建模,分析了文件系統的業務參與者、業務用例和業務場景,在此小結中將分析提取文件系統的原子業務。主要通過分析業務場景的主干流程來進行原子業務的提取。

        3.4.1 存儲空間管理原子業務分析

        以追加存儲空間為例分析業務流程。

        前置條件:文件當前存儲空間不足,文件剩余存儲空間中有足夠的空閑空間。

        后置條件:成功為文件追加空閑存儲空間。

        該業務流程由如下業務步驟組成:

        1>.文件存儲空間不足,申請新的存儲空間;

        2>.文件定位;

        3>.追加新的存儲空間。

        分析上述業務步驟,畫出追加存儲空間業務用例場景的業務流程圖如圖3-4所示。

        圖3-4 追加存儲空間活動圖

        經分析追加存儲空間該業務用例中可提取出兩個原子業務:文件定位、追加存儲空間。分析存儲空間管理業務單元其它業務用例場景的業務流程后,得出該業務單元原子業務樹狀結構圖如圖3-5所示。

        圖3-5 存儲空間管理原子業務模型結構圖

        3.4.2 文件存取操作原子業務分析

        以順序讀文件為例分析業務流程。

        前置條件:文件存在并且可讀。

        后置條件:從文件指定位置處順序讀取指定長度內容。

        該業務流程由如下業務步驟組成:

        1>.確定文件所在存儲空間;

        2>.打開目標文件;

        3>.讀取指定長度的文件內容;

        4>.關閉文件。

        分析上述業務步驟,畫出順序讀文件業務用例場景的業務流程圖如圖3-6所示。

        經分析順序讀取文件該業務用例中可提取出四個原子業務:文件定位、打開文件、順序讀文件、關閉文件。

        分析文件存取操作業務單元其它業務用例場景的業務流程后,提取出該業務單元原子業務樹狀結構圖如圖3-7所示。

        圖3-6 順序讀取文件業務活動圖

        3.4.3 用戶管理原子業務分析

        以注冊用戶為例分析業務流程。

        前置條件:有權限成為文件系統用戶。

        后置條件:注冊成功,分配用戶名。

        該業務流程由如下業務步驟組成:

        1>.管理員進入存儲空間;

        2>.登記用戶信息。

        分析上述業務步驟,畫出注冊用戶業務用例場景的業務流程圖如圖3-8所示。經分析注冊用戶該業務用例中可提取出兩個原子業務:用戶登錄、登記用戶信息。

        分析用戶管理業務單元其它業務用例場景的業務流程后,得出該業務單元原子業務部分樹狀結構圖如圖3-9所示。

        圖3-9 用戶管理原子業務模型結構圖

        通過以上對文件系統各業務單元的分析,提取文件系統完整的原子業務及其描述如表3-2所示。

        表3-2 文件系統原子業務及其描述

        序號

        原子業務

        描述

        1

        初始化空間(Initialize_Space)

        對文件系統的存儲空間容量大小和分區容量進行初始化設置。

        2

        分配空間(Allocate_Space)

        為新建文件或文件夾分配存儲空間

        3

        文件定位(Locate_File)

        確定文件所在存儲空間地址。

        4

        追加空間(Supplement_Space)

        文件存儲空間不足紿文件追加新的存儲空間。

        5

        釋放空間(Free_Space)

        將存儲空間改為未用。

        6

        查詢分區容量(Inquiry_Space)

        查詢分區空閑存儲空間大小。

        7

        設置文件為打開狀態(Set_File_Open)

        更改文件為“打開”狀態

        8

        設置文件夾為打狀態(Set_Folder_Open)

        更改文件夾為“打開”狀態

        9

        設置文件為關閉狀態(Set_File_Open)

        更改文件為“關閉”狀態

        10

        設置文件夾為關閉狀態(Set_Folder_Open)

        更改文件夾為“關閉”狀態

        11

        順序讀文件(Sequence_Read_File)

        按順序讀取指定長度的文件內容

        12

        隨機讀文件(Random_Read_File)

        隨機讀取指定長度的文件內容

        13

        寫文件(Write_File)

        向文件內寫入指定長度文件內容

        14

        更新文件(Update_File)

        文件進行讀寫后更改文年屬性和內容

        15

        查找文件(Find_File)

        在指定空間查找指定文件名的文件

        16

        列舉文件(File_Enumeration)

        列舉指定空間的所有文件

        17

        登記用戶信息(Rsgister_User_Information)

        登記文件系統用戶信息。

        18

        修改用戶信息(Modify_User_Information)

        修改已登記的用戶信息

        19

        刪除用戶信息

        (Delete_User_Information)

        刪除已登記的文件系統用戶信息

        20

        用戶進入

        (User_Enter)

        用戶進入文件存儲空間,查看空間內文件

        21

        用戶退出

        (User_Exit)

        用戶退出存儲空間

        22

        設置用戶權限(Set_Premissions)

        設置用戶訪問文件的權限。

        4 Petalinux及NFS網絡文件系統的移植

        Petalinux的移植主要工作為硬件平臺搭建,以及內核的裁剪與移植,其中硬件平臺的搭建在windows操作系統上安裝的Xilinx EDK環境中完成,選擇Virtex5-lx110t開發板,由于網絡文件服務器的需要選擇以太網的IP核,DDR,串口,定時器等并添加相應的中斷,成功建立工程的block diagram 如圖4-1所示。

        圖4-1 搭建工程框圖

        然后進行基于Petalinux軟件平臺的配置,操作系統和庫選項選擇Petalinux,修改主要存儲空間和輸入輸出的當前值,軟件平臺搭建完畢,最后生成庫和板級支持包,然后生成比特流文件下載至目標板測試工程的正確性。

        Petalinux是一套開發環境,linux內核的裁剪以及移植在安裝centos 5.6 操作系統的主機完成首先利用Petalinux自帶的工具創建嵌入式平臺,將在windows下完成的工程拷貝到Linux系統,轉換到Linux系統格式,根據開發板選擇新的平臺,然后用make menuconfig 命令進入內核裁剪的圖形化界面,合理的裁剪之后進行編譯將生成的image.bin文件通過下載線下載至開發板的DDR SDRAM中,在串口終端可以看到系統啟動信息,如圖4-2所示。

        圖4-2 系統啟動信息

        網絡文件系統支持以應用程序在客戶端通過網絡存取位于服務器磁盤中數據的一種文件系統協議,大多數網絡文件系統都分成客戶端和文件服務器兩部分。客戶端以邏輯文件塊的方式存取數據,文件服務器使用塊映射存取真正的磁盤塊,并完成磁盤格式和元數據(如目錄)的管理,對客戶端完全屏蔽,一般客戶端和文件服務器以TCP/IP方式通信。NFS是網絡文件系統(Network File System)的簡稱,是分布式計算機系統的一個組成部分,可實現在異種網絡上共享和裝配遠程文件系統,可讓不同操作系統的計算機共享數據。

        NFS服務器的移植:nfs服務器的實現需要內核nfsd的支持外加兩個應用程序套件 portmap 和nfs-utils ,Petalinux中移植此應用程序,下載此應用程序的源碼,添加到petalinux的usr目錄下,修改makefile 和config.in 文件,重新配置內核加入nfs服務器端的支持,同時交叉編譯此應用程序,將生成的可執行文件復制到 romfs 的bin 目錄下,再在etc 目錄下添加exports 文件用來設置可掛載目錄,使得Petalinux 系統具有nfs服務器端的功能。

        5 IDE硬盤控制器的設計

        IDE(Integrated Drive Electronics,集成驅動電子設備)是由Compaq開發并由Western Digital公司生產的硬盤驅動器。IDE是在早期的ST506硬盤基礎上改進而成的,采用40線的單組電纜進行連接,數據傳輸的可靠性得到了增強,硬盤制造起來變得容易,因為廠商不需要再擔心自己的硬盤是否與其他廠商生產的控制器兼容,對用戶而言,硬盤安裝起來也更為方便。因此IDE接口實際上是系統級接口,故也稱為ATA(Advanced Technology Attachment)接口,(ATA更接近于接口的協議層標準,而IDE多用于描述接口的物理結構)。其傳輸方式主要有和DMA兩種。ATA接口規范從最初的ATA-1版本已發展到ATA-7版本。

        5.1 硬盤接口信號

        ATA/ATAPI-6標準中定義的主機和設備端之間的通信連接信號如表5-1所示。其中,左邊是對信號的描述,中間表示信號的傳輸方向(由主機到設備還是由設備到主機),右邊表示信號的名稱。

        1. CS(1:0)-:主機發送給硬盤的片選信號,實現對寄存器的選擇;
        2. DA(2:0):主機發送給硬盤的地址信號,用來實現對硬盤寄存器的尋址;
        3. DD(15:0):主機與硬盤之間的數據連接線,當主機對硬盤寄存器進行讀寫時,使用該數據總線的低八位進行數據傳輸,當對數據寄存器進行讀寫時,用該總線的16位進行數據傳輸;
        4. DIOR-:HDMARDY-:HSTROBE:復用信號,表示對寄存器讀信號/Ultra DMA就緒/Ultra DMA數據輸出同步信號,DIOR-表示主機對硬盤寄存器的讀信號,HDMARDY-表示Ultra DMA數據輸入時,主機發出的就緒信號,HSTROBE表示Ultra DMA數據輸出時主機發出的時鐘同步信號,雙沿有效,即在該信號的上升沿和下降沿,主機將數據輸出;
        5. DIOW-:STOP:復用信號,表示主機寫寄存器命令/主機終止Ultra DMA突發傳輸信號,DIOW-表示主機發出的對硬盤寄存器的寫命令信號。在Ultra DMA突發傳輸時,主機可通過使能STOP信號來終止Ultra DMA突發傳輸。
        6. DMACK-:在DMA開始傳輸時,主機對硬盤發出的DMA傳輸請求的應答信號;
        7. DMARQ:當硬盤準備好數據收發時,給主機發出的DMA傳輸請求信號;
        8. INTRQ:硬盤發出的中斷請求信號;
        9. IORDY:DDMARDY-:DSTROBE:硬盤發出的I/O通道就緒/Ultra DMA硬盤就緒/Ultra DMA數據輸入同步信號。IORDY表示在數據傳輸中,當硬盤沒有準備好數據傳輸時,使能該信號無效以延長主機對硬盤的訪問時間。DDMARDY-表示在Ultra DMA數據傳輸中硬盤發出的流量控制信號,該數據有效時,表示硬盤已準備好接收Ultra DMA傳輸數據,硬盤使能該信號無效可暫停Ultra DMA數據傳輸。DSTROBE表示在Ultra DMA數據傳輸時,硬盤發出的數據鎖存信號,主機可在該信號的上升沿和下降沿接收數據;
        10. RESET-:主機發出的硬盤復位信號,低電平有效。

        表5-1 硬盤接口信號

        5.2 硬盤接口寄存器

        主機對硬盤的訪問是通過對接口寄存器的訪問來實現的。ATA-6標準規定的硬盤接口寄存器如表5-2所示。這些寄存器按照功能劃分為命令寄存器(Command block registers)和控制寄存器(Control block registers)。命令寄存器用來接收主機發出的各種命令和傳送數據,包括數據寄存器、扇區計數寄存器等。控制寄存器用作控制硬盤操作,如使能硬盤中斷、選擇硬盤等。

        表5-2 硬盤端接口寄存器

        5.3 硬盤控制器模塊設計

        硬盤控制器模塊內部結構如圖5-1所示。

        圖5-1 硬盤控制器模塊內部結構

        5.3.1 總線接口模塊

        總線接口模塊是硬盤控制器與PLB總線的連接模塊,接收處理器通過PLB總線發來的操作命令及讀寫數據。

        5.3.2 硬盤復位模塊

        硬盤上電后需要完成一個復位過程,即ATA/ATAPI-6標準中描述的上電及硬件復位協議。復位過程既可以通過軟件編程實現也可以通過在硬盤控制器內部設計專用的邏輯來實現。系統上電后,硬盤控制器通過硬盤復位模塊生成一個寬帶大于25us的低電平復位信號,復位信號回到高電平2ms后,即復位操作完成。復位信號波形如圖5-2所示。

        圖5-2 復位信號波形

        5.3.3 模塊

        該模塊的功能是產生讀寫硬盤內部寄存器的時序,該模塊產生待訪問的硬盤寄存器的地址線,并輸出讀寫信號,根據數據傳輸方向,發送數據到數據線或從數據線上讀取數據,操作完成后,釋放地址、數據線。

        根據PIO讀寫時序,該模塊應實現以下功能:

        1. 產生訪問硬盤寄存器的地址信號,并具有一定有效寬帶。
        2. 產生相應的讀寫信號DIOR-/DIOW-,當為寫操作時,使數據具有規定的建立和保持時間;當為讀操作時,給出讀數據的時機。
        3. 處理硬盤輸入的IORDY信號,當IORDY無效時,應延長對硬盤的讀寫周期。

        5.3.4 Ultra DMA模塊

        Ultra DMA模塊是硬盤控制器的關鍵模塊,其主要功能是實現Ultra DMA突發數據輸出時序的控制。Ultra DMA操作可分為三個階段,分別是初始階段、數據傳輸階段、傳輸中止階段。

        初始階段的時序描述為:當硬盤發出DMA請求信號DMARQ,控制器通過DMACK-進行應答,等到硬盤發出的DDMARDY-信號有效后,控制器開始輸出HSTROBE信號。

        數據傳輸階段的時序描述為:HSTROBE時鐘的上升沿和下降沿都觸發數據輸出,在數據傳輸過程中,控制器可通過停止產生HSTROBE信號來暫停數據的輸出,硬盤可以通過使DDMARDY-信號無效來暫停數據的接收。

        傳輸終止階段,控制器和硬盤都可終止數據傳輸,終止數據傳輸可分為四個過程:停止請求、停止檢查、HSTROBE返回高電平、發送CRC校驗值。對于控制器停止數據傳輸,首先停止產生HSTROBE時鐘信號,發出STOP命令信號,控制器檢查硬盤的DDMARDY和DMARQ均無效后,使HSTROBE返回高電平,使DMACK-無效,并在DMACK-信號跳變沿處輸出CRC校驗值到數據線DD(15:0),如圖5-3所示。對于硬盤停止數據傳輸,通過使DDMARDY和DMARQ均無效來停止數據傳輸,控制器需要在tL1時間內發出STOP信號,使HSTROBE返回高電平,使DMACK-無效,并輸出CRC校驗值至DD(15:0),如圖5-4所示。

        圖5-3 控制器終止Ultra DMA數據傳輸時序

        圖5-4 硬盤終止Ultra DMA數據傳輸時序

        5.3.5 控制器模塊

        控制模塊是硬盤控制器的核心,該模塊的主要功能是實現CPU對硬盤控制器中寄存器的配置,并根據相關寄存器的寫入信息實現對應的控制操作。

        6 總結

        項目設計一種基于“流程+引擎+構件”SOA三層架構的網絡硬盤控制器。采用FPGA作為系統控制器,在MicroBlaze軟核處理器上移植PetaLinux操作系統,加載NFS網絡文件系統,將擴展Int 13H規范中定義的基本硬盤操作指令封裝成原子構件,采用VHDL硬件描述語言實現各原子構件操作。設計引擎管理模塊,根據NFS文件系統操作指令,調用相關原子操作,實現硬盤存儲空間管理、文件存儲操作、用戶管理等功能。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平果县| 安福县| 普格县| 靖江市| 莆田市| 赣榆县| 清水河县| 乐平市| 金湖县| 马尔康县| 杭锦后旗| 凤庆县| 松阳县| 沅江市| 准格尔旗| 吉林市| 衡南县| 贵定县| 镇坪县| 辽中县| 临武县| 股票| 饶阳县| 宝坻区| 广德县| 将乐县| 鲜城| 四会市| 南漳县| 会昌县| 定兴县| 丰原市| 东源县| 古交市| 孟津县| 安徽省| 湖北省| 大宁县| 扶余县| 师宗县| 三门县|