新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于SOA架構(gòu)的網(wǎng)絡(luò)硬盤(pán)控制器的設(shè)計(jì)

基于SOA架構(gòu)的網(wǎng)絡(luò)硬盤(pán)控制器的設(shè)計(jì)

作者: 時(shí)間:2017-06-04 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/201706/348101.htm

摘要:

項(xiàng)目設(shè)計(jì)一種采用“流程+引擎+構(gòu)件”的SOA三層架構(gòu)的。系統(tǒng)采用FPGA作為系統(tǒng),在FPGA內(nèi)部MicroBlaze軟核處理器上移植PetaLinux操作系統(tǒng),加載NFS網(wǎng)絡(luò)文件系統(tǒng),將擴(kuò)展Int 13H規(guī)范中定義的基本硬盤(pán)操作指令封裝成原子構(gòu)件,并采用VHDL硬件描述語(yǔ)言實(shí)現(xiàn)各原子構(gòu)件,實(shí)現(xiàn)對(duì)硬盤(pán)的基本操作。設(shè)計(jì)引擎模塊,根據(jù)NFS文件系統(tǒng)操作指令,調(diào)用相關(guān)原子操作,實(shí)現(xiàn)硬盤(pán)存儲(chǔ)空間管理、文件存儲(chǔ)操作、用戶管理等功能。本文設(shè)計(jì)可作為個(gè)人存儲(chǔ)服務(wù)器連接到以太網(wǎng),用戶可通過(guò)連接網(wǎng)絡(luò)的任意主機(jī)實(shí)現(xiàn)對(duì)服務(wù)器硬盤(pán)的訪問(wèn)管理。

1 引言

隨著電子郵箱及的普及,用戶可不用攜帶存儲(chǔ)設(shè)備,而直接通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)的上傳和下載,實(shí)現(xiàn)個(gè)人數(shù)據(jù)的管理。然而,使用網(wǎng)絡(luò)運(yùn)營(yíng)商提供的網(wǎng)絡(luò)硬盤(pán)可用空間有限,且數(shù)據(jù)保密性不強(qiáng)。本項(xiàng)目旨在研究一種適合于個(gè)人應(yīng)用的網(wǎng)絡(luò)硬盤(pán)存儲(chǔ)裝置,該網(wǎng)絡(luò)硬盤(pán)使用RJ45接口連接到以太網(wǎng),通過(guò)以太網(wǎng)以TCP/IP協(xié)議,用戶可用以太網(wǎng)上任意主機(jī)實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)硬盤(pán)的管理操作,與電子郵箱及網(wǎng)絡(luò)運(yùn)營(yíng)商提供的網(wǎng)絡(luò)硬盤(pán)相比,此項(xiàng)目設(shè)計(jì)的個(gè)人網(wǎng)絡(luò)存儲(chǔ)硬盤(pán)有著存儲(chǔ)空間容量大、使用安全、可靠性較高等優(yōu)點(diǎn)。

2 系統(tǒng)原理與特點(diǎn)

系統(tǒng)結(jié)構(gòu)如圖2-1所示。

圖2-1 系統(tǒng)結(jié)構(gòu)

用戶通過(guò)連接網(wǎng)絡(luò)的客戶端PC機(jī)采用TCP/IP協(xié)議實(shí)現(xiàn)文件的上傳和下載,上傳文件時(shí),用戶通過(guò)客戶端PC機(jī)向網(wǎng)絡(luò)硬盤(pán)控制器發(fā)送上傳文件指令,并發(fā)送文件數(shù)據(jù),F(xiàn)PGA內(nèi)以太網(wǎng)控制器模塊接收數(shù)據(jù)并由DDR2控制器模塊寫(xiě)入到DDR2中緩存,然后根據(jù)NFS協(xié)議將數(shù)據(jù)從DDR2中讀出經(jīng)硬盤(pán)控制器模塊寫(xiě)入到硬盤(pán)中保存;客戶端下載文件時(shí),用戶通過(guò)客戶端PC機(jī)向硬盤(pán)控制器發(fā)送下載文件指令,F(xiàn)PGA內(nèi)以太網(wǎng)控制器模塊接收指令后,根據(jù)NFS協(xié)議將文件數(shù)據(jù)通過(guò)硬盤(pán)控制器模塊讀出并寫(xiě)入到DDR2緩存中,然后將數(shù)據(jù)由DDR2中讀出并由以太網(wǎng)控制器模塊,加載網(wǎng)絡(luò)協(xié)議棧,將數(shù)據(jù)由網(wǎng)絡(luò)發(fā)送到客戶端PC。

FPGA內(nèi)部調(diào)用MicroBlaze處理器,移植PetaLinux操作系統(tǒng),配置TCP/IP協(xié)議棧,加載NFS網(wǎng)絡(luò)文件系統(tǒng),利用VHDL語(yǔ)言設(shè)計(jì)Int13H規(guī)范中定義的對(duì)硬盤(pán)操作的原子構(gòu)件,并設(shè)計(jì)對(duì)原子構(gòu)件調(diào)用的引擎管理模塊,將原子構(gòu)件與引擎管理模塊以用戶IP核形式添加到與MicroBlaze處理器互聯(lián)的PLB片內(nèi)總線,F(xiàn)PGA內(nèi)部系統(tǒng)模塊框圖如圖2-2所示。

圖2-2 FPGA內(nèi)功能模塊

3 硬盤(pán)引擎管理模塊設(shè)計(jì)

借鑒互聯(lián)網(wǎng)分布式計(jì)算領(lǐng)域中網(wǎng)格計(jì)算、云計(jì)算技術(shù)廣泛采用的為核心設(shè)計(jì)思想,首先進(jìn)行業(yè)務(wù)需求分析、根據(jù)業(yè)務(wù)用例、用例場(chǎng)景、業(yè)務(wù)步驟的分析過(guò)程找出對(duì)應(yīng)的原子業(yè)務(wù)。根據(jù)業(yè)務(wù)原子業(yè)務(wù)映射到相應(yīng)的系統(tǒng)需求進(jìn)行系統(tǒng)建模,通過(guò)形式語(yǔ)義將場(chǎng)景步驟序列描述為由一系列原子構(gòu)件的組合。完成“流程+引擎+構(gòu)件”的三層SOA結(jié)構(gòu)的文件系統(tǒng)設(shè)計(jì)。

3.1 文件系統(tǒng)業(yè)務(wù)單元

文件系統(tǒng)是操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件系統(tǒng)。主要負(fù)責(zé)對(duì)文件存儲(chǔ)器空間進(jìn)行組織和分配,文件的存儲(chǔ)以及對(duì)存入的文件進(jìn)行保護(hù)和檢索。文件系統(tǒng)主要包括存儲(chǔ)空間管理、文件存儲(chǔ)操作、用戶管理這三個(gè)業(yè)務(wù)單元。

存儲(chǔ)實(shí)間管理主要包括對(duì)存儲(chǔ)空間的組織、分配和回收。文件存儲(chǔ)操作主要包括用戶對(duì)存儲(chǔ)空間文件的基本操作,包含文件的生成、刪除、打開(kāi)、關(guān)閉、文件讀、文件寫(xiě)等。用戶管理主要包括用戶的注冊(cè)、登錄以及用戶權(quán)限管理等。

3.2 提取業(yè)務(wù)用例

在提取文件系統(tǒng)的業(yè)務(wù)用例時(shí),主要是從業(yè)務(wù)主角——用戶的角度出發(fā),對(duì)文件系統(tǒng)的每一個(gè)業(yè)務(wù)單元進(jìn)行分析提取業(yè)務(wù)用例。

3.2.1 存儲(chǔ)空間管理

存儲(chǔ)空間管理業(yè)務(wù)單元的用例視圖如圖3-1所示。

圖3-1 存儲(chǔ)空間管理用例視圖

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

3.2.2 文件存取操作

文件存取操作業(yè)務(wù)單元的業(yè)務(wù)用例視圖如圖3-2所示。

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

文件存取操作業(yè)務(wù)單元包括如下業(yè)務(wù)用例:建立文件、打開(kāi)文件、讀文件、寫(xiě)文件、關(guān)閉文件、保存文件、刪除文件、保存文件、列舉文件、檢索文件、復(fù)制文件等。

3.2.3 用戶管理

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

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

用戶管理該業(yè)務(wù)單元包括的業(yè)務(wù)用例主要有填加用戶、刪除用戶、用戶登錄、用戶退出、設(shè)置用戶權(quán)限、修改用戶權(quán)限等。

3.3業(yè)務(wù)用例場(chǎng)景

3.3.1 劃分業(yè)務(wù)用例場(chǎng)景

業(yè)務(wù)用例在實(shí)際執(zhí)行的進(jìn)程中可能會(huì)有多種不同的情況發(fā)生,每一種情況都稱為該業(yè)務(wù)用例的一個(gè)業(yè)務(wù)用例場(chǎng)景,也可以說(shuō)業(yè)務(wù)用例場(chǎng)景是指實(shí)例化的用例。通過(guò)對(duì)文件系統(tǒng)的業(yè)務(wù)用例進(jìn)行分析,劃分出文件系統(tǒng)的業(yè)務(wù)用例場(chǎng)景如表1所示。

表3-1 文件系統(tǒng)業(yè)務(wù)用例場(chǎng)景

業(yè)務(wù)用例

業(yè)務(wù)用例場(chǎng)景

說(shuō)明

初始化存儲(chǔ)空間

初始化存儲(chǔ)空間

對(duì)未進(jìn)行初始化設(shè)置的空間進(jìn)行初始化。

分配存儲(chǔ)空間

分配存儲(chǔ)空間

為新創(chuàng)建的文件分配存儲(chǔ)空間。

追加存儲(chǔ)空間

追加存儲(chǔ)空間

對(duì)現(xiàn)有存儲(chǔ)空間已滿的文件追加新的存儲(chǔ)空間

回收存儲(chǔ)空間

回收存儲(chǔ)空間

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

建立文件

創(chuàng)建文檔文件

創(chuàng)建一個(gè)新的文件并存檔

創(chuàng)建文件夾

建立文件的組織單元

打開(kāi)文件

打開(kāi)文檔文件

打開(kāi)一個(gè)已經(jīng)存在的文件

打開(kāi)文件夾

打開(kāi)一個(gè)已經(jīng)存在的文件夾

讀文件

順序讀文件

從文件頭順序讀取文件內(nèi)容

隨機(jī)讀文件

從指定位置處讀取指定長(zhǎng)度的文件內(nèi)容

寫(xiě)文件

寫(xiě)文件

從指定位置處向已創(chuàng)建文件中寫(xiě)入內(nèi)容

關(guān)閉文件

關(guān)閉文檔文件

關(guān)閉已經(jīng)打開(kāi)的文件

關(guān)閉文件夾

關(guān)閉已經(jīng)打開(kāi)的文件夾

保存文件

保存文件

對(duì)文件內(nèi)容或?qū)傩杂羞^(guò)更改的文件進(jìn)行存檔

刪除文件

刪除文件內(nèi)容

刪除指定位置處指定長(zhǎng)度的文件內(nèi)容

刪除文件

刪除已經(jīng)存在的文檔性質(zhì)的文件

刪除文件夾

刪除已經(jīng)存在的存放文檔的文件夾

列舉文件

列舉當(dāng)前文件夾下文件

列舉當(dāng)前文件夾目錄中的所有文件,包括文件夾和文檔文件。

列舉存儲(chǔ)空間的所有文件

列舉存儲(chǔ)空間中的所有文件夾和文件

檢索文件

在當(dāng)前文件夾檢索

在當(dāng)前文件夾中查找指定名稱的文件或文件夾

在整個(gè)存儲(chǔ)空間檢索

從整個(gè)存儲(chǔ)空間查找指定名稱的文件或文件夾

改變目錄

進(jìn)入子目錄

進(jìn)入當(dāng)前目錄的下級(jí)目錄

返回父目錄

返回當(dāng)前目錄的上級(jí)目錄

填加用戶

注冊(cè)用戶

登記允許對(duì)存儲(chǔ)空間內(nèi)文件進(jìn)行操作的用戶信息

刪除用戶

刪除用戶

刪除已登記的文件系統(tǒng)的用戶信息

用戶登錄

用戶登錄

用戶進(jìn)入文件存儲(chǔ)空間

用戶退出

用戶退出

用戶退出文件存儲(chǔ)空間

修改用戶信息

修改用戶信息

修改已登記的用戶信息

設(shè)置用戶權(quán)限

設(shè)置用戶權(quán)限

對(duì)進(jìn)入文件存儲(chǔ)空間用戶的文件操作權(quán)限進(jìn)行設(shè)置

3.3.2 描述業(yè)務(wù)用例

本文對(duì)文件系統(tǒng)業(yè)務(wù)用例描述采用的是用例文檔和UML的活動(dòng)圖,通過(guò)畫(huà)出文件系統(tǒng)業(yè)務(wù)用例場(chǎng)景的活動(dòng)圖,按照所用例文檔模板的格式對(duì)活動(dòng)圖進(jìn)行描述,建立文件系統(tǒng)的業(yè)務(wù)用例模型,得到文件系統(tǒng)的業(yè)務(wù)需求文檔。

3.4 提取原子業(yè)務(wù)

前面對(duì)文件系統(tǒng)進(jìn)行了業(yè)務(wù)建模,分析了文件系統(tǒng)的業(yè)務(wù)參與者、業(yè)務(wù)用例和業(yè)務(wù)場(chǎng)景,在此小結(jié)中將分析提取文件系統(tǒng)的原子業(yè)務(wù)。主要通過(guò)分析業(yè)務(wù)場(chǎng)景的主干流程來(lái)進(jìn)行原子業(yè)務(wù)的提取。

3.4.1 存儲(chǔ)空間管理原子業(yè)務(wù)分析

以追加存儲(chǔ)空間為例分析業(yè)務(wù)流程。

前置條件:文件當(dāng)前存儲(chǔ)空間不足,文件剩余存儲(chǔ)空間中有足夠的空閑空間。

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

該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:

1>.文件存儲(chǔ)空間不足,申請(qǐng)新的存儲(chǔ)空間;

2>.文件定位;

3>.追加新的存儲(chǔ)空間。

分析上述業(yè)務(wù)步驟,畫(huà)出追加存儲(chǔ)空間業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程圖如圖3-4所示。

圖3-4 追加存儲(chǔ)空間活動(dòng)圖

經(jīng)分析追加存儲(chǔ)空間該業(yè)務(wù)用例中可提取出兩個(gè)原子業(yè)務(wù):文件定位、追加存儲(chǔ)空間。分析存儲(chǔ)空間管理業(yè)務(wù)單元其它業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程后,得出該業(yè)務(wù)單元原子業(yè)務(wù)樹(shù)狀結(jié)構(gòu)圖如圖3-5所示。

圖3-5 存儲(chǔ)空間管理原子業(yè)務(wù)模型結(jié)構(gòu)圖

3.4.2 文件存取操作原子業(yè)務(wù)分析

以順序讀文件為例分析業(yè)務(wù)流程。

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

后置條件:從文件指定位置處順序讀取指定長(zhǎng)度內(nèi)容。

該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:

1>.確定文件所在存儲(chǔ)空間;

2>.打開(kāi)目標(biāo)文件;

3>.讀取指定長(zhǎng)度的文件內(nèi)容;

4>.關(guān)閉文件。

分析上述業(yè)務(wù)步驟,畫(huà)出順序讀文件業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程圖如圖3-6所示。

經(jīng)分析順序讀取文件該業(yè)務(wù)用例中可提取出四個(gè)原子業(yè)務(wù):文件定位、打開(kāi)文件、順序讀文件、關(guān)閉文件。

分析文件存取操作業(yè)務(wù)單元其它業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程后,提取出該業(yè)務(wù)單元原子業(yè)務(wù)樹(shù)狀結(jié)構(gòu)圖如圖3-7所示。

圖3-6 順序讀取文件業(yè)務(wù)活動(dòng)圖

3.4.3 用戶管理原子業(yè)務(wù)分析

以注冊(cè)用戶為例分析業(yè)務(wù)流程。

前置條件:有權(quán)限成為文件系統(tǒng)用戶。

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

該業(yè)務(wù)流程由如下業(yè)務(wù)步驟組成:

1>.管理員進(jìn)入存儲(chǔ)空間;

2>.登記用戶信息。

分析上述業(yè)務(wù)步驟,畫(huà)出注冊(cè)用戶業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程圖如圖3-8所示。經(jīng)分析注冊(cè)用戶該業(yè)務(wù)用例中可提取出兩個(gè)原子業(yè)務(wù):用戶登錄、登記用戶信息。

分析用戶管理業(yè)務(wù)單元其它業(yè)務(wù)用例場(chǎng)景的業(yè)務(wù)流程后,得出該業(yè)務(wù)單元原子業(yè)務(wù)部分樹(shù)狀結(jié)構(gòu)圖如圖3-9所示。

圖3-9 用戶管理原子業(yè)務(wù)模型結(jié)構(gòu)圖

通過(guò)以上對(duì)文件系統(tǒng)各業(yè)務(wù)單元的分析,提取文件系統(tǒng)完整的原子業(yè)務(wù)及其描述如表3-2所示。

表3-2 文件系統(tǒng)原子業(yè)務(wù)及其描述

序號(hào)

原子業(yè)務(wù)

描述

1

初始化空間(Initialize_Space)

對(duì)文件系統(tǒng)的存儲(chǔ)空間容量大小和分區(qū)容量進(jìn)行初始化設(shè)置。

2

分配空間(Allocate_Space)

為新建文件或文件夾分配存儲(chǔ)空間

3

文件定位(Locate_File)

確定文件所在存儲(chǔ)空間地址。

4

追加空間(Supplement_Space)

文件存儲(chǔ)空間不足紿文件追加新的存儲(chǔ)空間。

5

釋放空間(Free_Space)

將存儲(chǔ)空間改為未用。

6

查詢分區(qū)容量(Inquiry_Space)

查詢分區(qū)空閑存儲(chǔ)空間大小。

7

設(shè)置文件為打開(kāi)狀態(tài)(Set_File_Open)

更改文件為“打開(kāi)”狀態(tài)

8

設(shè)置文件夾為打狀態(tài)(Set_Folder_Open)

更改文件夾為“打開(kāi)”狀態(tài)

9

設(shè)置文件為關(guān)閉狀態(tài)(Set_File_Open)

更改文件為“關(guān)閉”狀態(tài)

10

設(shè)置文件夾為關(guān)閉狀態(tài)(Set_Folder_Open)

更改文件夾為“關(guān)閉”狀態(tài)

11

順序讀文件(Sequence_Read_File)

按順序讀取指定長(zhǎng)度的文件內(nèi)容

12

隨機(jī)讀文件(Random_Read_File)

隨機(jī)讀取指定長(zhǎng)度的文件內(nèi)容

13

寫(xiě)文件(Write_File)

向文件內(nèi)寫(xiě)入指定長(zhǎng)度文件內(nèi)容

14

更新文件(Update_File)

文件進(jìn)行讀寫(xiě)后更改文年屬性和內(nèi)容

15

查找文件(Find_File)

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

16

列舉文件(File_Enumeration)

列舉指定空間的所有文件

17

登記用戶信息(Rsgister_User_Information)

登記文件系統(tǒng)用戶信息。

18

修改用戶信息(Modify_User_Information)

修改已登記的用戶信息

19

刪除用戶信息

(Delete_User_Information)

刪除已登記的文件系統(tǒng)用戶信息

20

用戶進(jìn)入

(User_Enter)

用戶進(jìn)入文件存儲(chǔ)空間,查看空間內(nèi)文件

21

用戶退出

(User_Exit)

用戶退出存儲(chǔ)空間

22

設(shè)置用戶權(quán)限(Set_Premissions)

設(shè)置用戶訪問(wèn)文件的權(quán)限。

4 Petalinux及NFS網(wǎng)絡(luò)文件系統(tǒng)的移植

Petalinux的移植主要工作為硬件平臺(tái)搭建,以及內(nèi)核的裁剪與移植,其中硬件平臺(tái)的搭建在windows操作系統(tǒng)上安裝的Xilinx EDK環(huán)境中完成,選擇Virtex5-lx110t開(kāi)發(fā)板,由于網(wǎng)絡(luò)文件服務(wù)器的需要選擇以太網(wǎng)的IP核,DDR,串口,定時(shí)器等并添加相應(yīng)的中斷,成功建立工程的block diagram 如圖4-1所示。

圖4-1 搭建工程框圖

然后進(jìn)行基于Petalinux軟件平臺(tái)的配置,操作系統(tǒng)和庫(kù)選項(xiàng)選擇Petalinux,修改主要存儲(chǔ)空間和輸入輸出的當(dāng)前值,軟件平臺(tái)搭建完畢,最后生成庫(kù)和板級(jí)支持包,然后生成比特流文件下載至目標(biāo)板測(cè)試工程的正確性。

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

圖4-2 系統(tǒng)啟動(dòng)信息

網(wǎng)絡(luò)文件系統(tǒng)支持以應(yīng)用程序在客戶端通過(guò)網(wǎng)絡(luò)存取位于服務(wù)器磁盤(pán)中數(shù)據(jù)的一種文件系統(tǒng)協(xié)議,大多數(shù)網(wǎng)絡(luò)文件系統(tǒng)都分成客戶端和文件服務(wù)器兩部分??蛻舳艘赃壿嬑募K的方式存取數(shù)據(jù),文件服務(wù)器使用塊映射存取真正的磁盤(pán)塊,并完成磁盤(pán)格式和元數(shù)據(jù)(如目錄)的管理,對(duì)客戶端完全屏蔽,一般客戶端和文件服務(wù)器以TCP/IP方式通信。NFS是網(wǎng)絡(luò)文件系統(tǒng)(Network File System)的簡(jiǎn)稱,是分布式計(jì)算機(jī)系統(tǒng)的一個(gè)組成部分,可實(shí)現(xiàn)在異種網(wǎng)絡(luò)上共享和裝配遠(yuǎn)程文件系統(tǒng),可讓不同操作系統(tǒng)的計(jì)算機(jī)共享數(shù)據(jù)。

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

5 IDE硬盤(pán)控制器的設(shè)計(jì)

IDE(Integrated Drive Electronics,集成驅(qū)動(dòng)電子設(shè)備)是由Compaq開(kāi)發(fā)并由Western Digital公司生產(chǎn)的硬盤(pán)驅(qū)動(dòng)器。IDE是在早期的ST506硬盤(pán)基礎(chǔ)上改進(jìn)而成的,采用40線的單組電纜進(jìn)行連接,數(shù)據(jù)傳輸?shù)目煽啃缘玫搅嗽鰪?qiáng),硬盤(pán)制造起來(lái)變得容易,因?yàn)閺S商不需要再擔(dān)心自己的硬盤(pán)是否與其他廠商生產(chǎn)的控制器兼容,對(duì)用戶而言,硬盤(pán)安裝起來(lái)也更為方便。因此IDE接口實(shí)際上是系統(tǒng)級(jí)接口,故也稱為ATA(Advanced Technology Attachment)接口,(ATA更接近于接口的協(xié)議層標(biāo)準(zhǔn),而IDE多用于描述接口的物理結(jié)構(gòu))。其傳輸方式主要有和DMA兩種。ATA接口規(guī)范從最初的ATA-1版本已發(fā)展到ATA-7版本。

5.1 硬盤(pán)接口信號(hào)

ATA/ATAPI-6標(biāo)準(zhǔn)中定義的主機(jī)和設(shè)備端之間的通信連接信號(hào)如表5-1所示。其中,左邊是對(duì)信號(hào)的描述,中間表示信號(hào)的傳輸方向(由主機(jī)到設(shè)備還是由設(shè)備到主機(jī)),右邊表示信號(hào)的名稱。

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

表5-1 硬盤(pán)接口信號(hào)

5.2 硬盤(pán)接口寄存器

主機(jī)對(duì)硬盤(pán)的訪問(wèn)是通過(guò)對(duì)接口寄存器的訪問(wèn)來(lái)實(shí)現(xiàn)的。ATA-6標(biāo)準(zhǔn)規(guī)定的硬盤(pán)接口寄存器如表5-2所示。這些寄存器按照功能劃分為命令寄存器(Command block registers)和控制寄存器(Control block registers)。命令寄存器用來(lái)接收主機(jī)發(fā)出的各種命令和傳送數(shù)據(jù),包括數(shù)據(jù)寄存器、扇區(qū)計(jì)數(shù)寄存器等??刂萍拇嫫饔米骺刂朴脖P(pán)操作,如使能硬盤(pán)中斷、選擇硬盤(pán)等。

表5-2 硬盤(pán)端接口寄存器

5.3 硬盤(pán)控制器模塊設(shè)計(jì)

硬盤(pán)控制器模塊內(nèi)部結(jié)構(gòu)如圖5-1所示。

圖5-1 硬盤(pán)控制器模塊內(nèi)部結(jié)構(gòu)

5.3.1 總線接口模塊

總線接口模塊是硬盤(pán)控制器與PLB總線的連接模塊,接收處理器通過(guò)PLB總線發(fā)來(lái)的操作命令及讀寫(xiě)數(shù)據(jù)。

5.3.2 硬盤(pán)復(fù)位模塊

硬盤(pán)上電后需要完成一個(gè)復(fù)位過(guò)程,即ATA/ATAPI-6標(biāo)準(zhǔn)中描述的上電及硬件復(fù)位協(xié)議。復(fù)位過(guò)程既可以通過(guò)軟件編程實(shí)現(xiàn)也可以通過(guò)在硬盤(pán)控制器內(nèi)部設(shè)計(jì)專用的邏輯來(lái)實(shí)現(xiàn)。系統(tǒng)上電后,硬盤(pán)控制器通過(guò)硬盤(pán)復(fù)位模塊生成一個(gè)寬帶大于25us的低電平復(fù)位信號(hào),復(fù)位信號(hào)回到高電平2ms后,即復(fù)位操作完成。復(fù)位信號(hào)波形如圖5-2所示。

圖5-2 復(fù)位信號(hào)波形

5.3.3 模塊

該模塊的功能是產(chǎn)生讀寫(xiě)硬盤(pán)內(nèi)部寄存器的時(shí)序,該模塊產(chǎn)生待訪問(wèn)的硬盤(pán)寄存器的地址線,并輸出讀寫(xiě)信號(hào),根據(jù)數(shù)據(jù)傳輸方向,發(fā)送數(shù)據(jù)到數(shù)據(jù)線或從數(shù)據(jù)線上讀取數(shù)據(jù),操作完成后,釋放地址、數(shù)據(jù)線。

根據(jù)PIO讀寫(xiě)時(shí)序,該模塊應(yīng)實(shí)現(xiàn)以下功能:

  1. 產(chǎn)生訪問(wèn)硬盤(pán)寄存器的地址信號(hào),并具有一定有效寬帶。
  2. 產(chǎn)生相應(yīng)的讀寫(xiě)信號(hào)DIOR-/DIOW-,當(dāng)為寫(xiě)操作時(shí),使數(shù)據(jù)具有規(guī)定的建立和保持時(shí)間;當(dāng)為讀操作時(shí),給出讀數(shù)據(jù)的時(shí)機(jī)。
  3. 處理硬盤(pán)輸入的IORDY信號(hào),當(dāng)IORDY無(wú)效時(shí),應(yīng)延長(zhǎng)對(duì)硬盤(pán)的讀寫(xiě)周期。

5.3.4 Ultra DMA模塊

Ultra DMA模塊是硬盤(pán)控制器的關(guān)鍵模塊,其主要功能是實(shí)現(xiàn)Ultra DMA突發(fā)數(shù)據(jù)輸出時(shí)序的控制。Ultra DMA操作可分為三個(gè)階段,分別是初始階段、數(shù)據(jù)傳輸階段、傳輸中止階段。

初始階段的時(shí)序描述為:當(dāng)硬盤(pán)發(fā)出DMA請(qǐng)求信號(hào)DMARQ,控制器通過(guò)DMACK-進(jìn)行應(yīng)答,等到硬盤(pán)發(fā)出的DDMARDY-信號(hào)有效后,控制器開(kāi)始輸出HSTROBE信號(hào)。

數(shù)據(jù)傳輸階段的時(shí)序描述為:HSTROBE時(shí)鐘的上升沿和下降沿都觸發(fā)數(shù)據(jù)輸出,在數(shù)據(jù)傳輸過(guò)程中,控制器可通過(guò)停止產(chǎn)生HSTROBE信號(hào)來(lái)暫停數(shù)據(jù)的輸出,硬盤(pán)可以通過(guò)使DDMARDY-信號(hào)無(wú)效來(lái)暫停數(shù)據(jù)的接收。

傳輸終止階段,控制器和硬盤(pán)都可終止數(shù)據(jù)傳輸,終止數(shù)據(jù)傳輸可分為四個(gè)過(guò)程:停止請(qǐng)求、停止檢查、HSTROBE返回高電平、發(fā)送CRC校驗(yàn)值。對(duì)于控制器停止數(shù)據(jù)傳輸,首先停止產(chǎn)生HSTROBE時(shí)鐘信號(hào),發(fā)出STOP命令信號(hào),控制器檢查硬盤(pán)的DDMARDY和DMARQ均無(wú)效后,使HSTROBE返回高電平,使DMACK-無(wú)效,并在DMACK-信號(hào)跳變沿處輸出CRC校驗(yàn)值到數(shù)據(jù)線DD(15:0),如圖5-3所示。對(duì)于硬盤(pán)停止數(shù)據(jù)傳輸,通過(guò)使DDMARDY和DMARQ均無(wú)效來(lái)停止數(shù)據(jù)傳輸,控制器需要在tL1時(shí)間內(nèi)發(fā)出STOP信號(hào),使HSTROBE返回高電平,使DMACK-無(wú)效,并輸出CRC校驗(yàn)值至DD(15:0),如圖5-4所示。

圖5-3 控制器終止Ultra DMA數(shù)據(jù)傳輸時(shí)序

圖5-4 硬盤(pán)終止Ultra DMA數(shù)據(jù)傳輸時(shí)序

5.3.5 控制器模塊

控制模塊是硬盤(pán)控制器的核心,該模塊的主要功能是實(shí)現(xiàn)CPU對(duì)硬盤(pán)控制器中寄存器的配置,并根據(jù)相關(guān)寄存器的寫(xiě)入信息實(shí)現(xiàn)對(duì)應(yīng)的控制操作。

6 總結(jié)

項(xiàng)目設(shè)計(jì)一種基于“流程+引擎+構(gòu)件”SOA三層架構(gòu)的網(wǎng)絡(luò)硬盤(pán)控制器。采用FPGA作為系統(tǒng)控制器,在MicroBlaze軟核處理器上移植PetaLinux操作系統(tǒng),加載NFS網(wǎng)絡(luò)文件系統(tǒng),將擴(kuò)展Int 13H規(guī)范中定義的基本硬盤(pán)操作指令封裝成原子構(gòu)件,采用VHDL硬件描述語(yǔ)言實(shí)現(xiàn)各原子構(gòu)件操作。設(shè)計(jì)引擎管理模塊,根據(jù)NFS文件系統(tǒng)操作指令,調(diào)用相關(guān)原子操作,實(shí)現(xiàn)硬盤(pán)存儲(chǔ)空間管理、文件存儲(chǔ)操作、用戶管理等功能。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉