任華鋒 高傳發(fā) 孫振華
摘要:介紹了一種在智能繼電保護(hù)裝置中,基于Pcle總線技術(shù)實(shí)現(xiàn)大容量存儲(chǔ)系統(tǒng)設(shè)計(jì)方法。該方法選用飛思卡爾P2020處理器為硬件平臺(tái),88se9170做為Pcle轉(zhuǎn)sATA接口控制器,以固態(tài)硬盤為存儲(chǔ)介質(zhì),采用兼容性好的FAT文件系統(tǒng)管理數(shù)據(jù)存儲(chǔ)。該存儲(chǔ)系統(tǒng)具有高速、支持熱插拔、可脫機(jī)運(yùn)行等特點(diǎn)。經(jīng)EMc試驗(yàn)和具體智能變電站工程運(yùn)行驗(yàn)證,滿足智能繼電保護(hù)裝置對(duì)數(shù)據(jù)處理安全可靠的要求。
關(guān)鍵詞:Pcle:ssD;sATA控制器:AHcl;FAT
引言
新一代的智能電網(wǎng)繼電保護(hù)裝置軟硬件平臺(tái)研發(fā)設(shè)計(jì)中大都采用了多種類型的組件技術(shù),根據(jù)功能可分解為環(huán)境建模、推理決策、系統(tǒng)監(jiān)控、領(lǐng)域?qū)W習(xí)和領(lǐng)域知識(shí)庫(kù)等各類邏輯實(shí)現(xiàn)組件,組件與外部或組件間都有大量的數(shù)據(jù)傳遞和處理,這些關(guān)鍵數(shù)據(jù)不僅需要高速穩(wěn)定的存儲(chǔ)系統(tǒng)來存儲(chǔ),還要存儲(chǔ)系統(tǒng)能在惡劣電磁干擾環(huán)境下保證數(shù)據(jù)的正確完整性。針對(duì)這些要求,文中著重研究了在飛思卡爾P2020多核處理器下通過PCIe實(shí)現(xiàn)的嵌入式固態(tài)硬盤存儲(chǔ)技術(shù),就存儲(chǔ)系統(tǒng)的硬件設(shè)計(jì)和軟件驅(qū)動(dòng)設(shè)計(jì)等方面進(jìn)行了詳細(xì)的闡述,并通過EMC專業(yè)測(cè)試和具體智能變電站工程進(jìn)行了可靠性驗(yàn)證。
1.存儲(chǔ)系統(tǒng)架構(gòu)設(shè)計(jì)
根據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì)需求,要求該系統(tǒng)具有大容量數(shù)據(jù)存儲(chǔ)、高速總線、熱插拔等特點(diǎn)。按照模塊化的設(shè)計(jì)思路,兼顧繼電保護(hù)裝置機(jī)箱插件式結(jié)構(gòu)的特點(diǎn),將存儲(chǔ)設(shè)備設(shè)計(jì)為獨(dú)立的插件模塊,通過機(jī)箱背板的高速PCIE擴(kuò)展總線與主控CPU模塊插件相連。其組成結(jié)構(gòu)如圖1所示。
2.存儲(chǔ)系統(tǒng)硬件設(shè)計(jì)
2.1P2020處理器主控單元CPU模塊設(shè)計(jì)
CPU模塊采用飛思卡爾新推出的低功耗P2020多核微處理器,P2020處理器具有雙ES00v2內(nèi)核,最高主頻可達(dá)到1.2GHz,集成了PCIe、SGMI、SD/MMC等接口。包含P2020處理器的主控CPU主要由復(fù)位電路、時(shí)鐘電路、時(shí)序邏輯控制電路、DDR內(nèi)存電路和接口模塊電路組成。為了節(jié)省硬件資源和降低功耗,P2020處理器外圍接口電路采用了復(fù)用Se rDes(串行器解串器)設(shè)計(jì),通過處理器上電復(fù)位時(shí)初始化設(shè)備狀態(tài)寄存器,將P2020的四個(gè)Se rDes通道靈活配置成PCIE、SGMII等接口。兩個(gè)E500內(nèi)核可根據(jù)具體的軟件設(shè)計(jì)非常方便地通過SerDes訪問存儲(chǔ)設(shè)備。PCIe接口的數(shù)據(jù)收發(fā)差分線和時(shí)鐘線經(jīng)過CPU插件上的高速連接器擴(kuò)展到機(jī)箱背板。
2.2固態(tài)硬盤存儲(chǔ)模塊設(shè)計(jì)
固態(tài)硬盤(SSD)是一種基于閃存的存儲(chǔ)技術(shù),具有能耗低、無(wú)機(jī)械活動(dòng)部件、讀寫速度快、抗震動(dòng)等優(yōu)點(diǎn)。該存儲(chǔ)模塊使用工業(yè)級(jí)固態(tài)硬盤(>=120G)作為存儲(chǔ)介質(zhì),解決了智能保護(hù)裝置采用Flash或SD卡存儲(chǔ)空間容量小、傳輸速率慢、不能脫機(jī)運(yùn)行的劣勢(shì)。
SATA控制器是固態(tài)硬盤控制的核心。系統(tǒng)選用Marvell88SE9170作為SATA控制器,該芯片有兩個(gè)支持SATA 3.0規(guī)范的SATA端口,一個(gè)lane PCIe2.0接口。6路可設(shè)置方向的GPlo,用于操作固態(tài)硬盤的數(shù)據(jù)指示燈閃爍指示等功能。88SE9170是Marvell新推出的一款工業(yè)級(jí)PCIE轉(zhuǎn)SATA的控制芯片,兼容SATA3.0以下的SATA協(xié)議規(guī)范,支持SATA端口的FIS和COMMAND交換技術(shù),支持SATA常見的硬盤NCQ(全速命令隊(duì)列)、AHCI(高級(jí)主機(jī)控制器接口)接口模式等功能。
88SE9170自帶一個(gè)支持SPI接口的512KB固件FLASH芯片,芯片上可由寫片器寫入BlOS和引導(dǎo)碼,通過軟件運(yùn)行將FLASH內(nèi)容映射到內(nèi)存指定地址來加載或由88SE9170上電時(shí)自動(dòng)加載,完成88SE9170片內(nèi)寄存器的配置。另外一種方式不需要SPI flash,每次上電時(shí)由處理器通過PCIE接口對(duì)88SE9170進(jìn)行寄存器配置,配置參數(shù)掉電丟失。缺點(diǎn)是該存儲(chǔ)模塊不能脫離CPU模塊獨(dú)立運(yùn)行,通用性不好。
由88SE9170 SATA控制器通過SATA協(xié)議實(shí)現(xiàn)處理器和固態(tài)硬盤之間的數(shù)據(jù)傳輸和管理。數(shù)據(jù)傳輸速率可達(dá)2.5Gbps或5Gbps。模塊示意圖如圖2所示。
3.軟件和驅(qū)動(dòng)設(shè)計(jì)
嵌入式操作系統(tǒng)采用國(guó)外引進(jìn)的嵌入式實(shí)時(shí)操作系統(tǒng)Nucleus Plus。Nucleus Plus具有實(shí)時(shí)的、搶先的、多任務(wù)的內(nèi)核。95%的內(nèi)核代碼由C語(yǔ)言編寫,開放性好,一些開源的驅(qū)動(dòng)代碼和應(yīng)用代碼能很容易地添加到操作系統(tǒng)中。在嵌入式操作系統(tǒng)下運(yùn)行驅(qū)動(dòng)軟件可以分為三部分:P2020處理器PCIe設(shè)備初始化、88SE9170 SATA控制器驅(qū)動(dòng)初始化和文件系統(tǒng)實(shí)現(xiàn)。存儲(chǔ)系統(tǒng)的驅(qū)動(dòng)軟件框架結(jié)構(gòu)如圖3所示。
3.1PCIe設(shè)備初始化
PCIe總線采用點(diǎn)對(duì)點(diǎn)的串行連接方式,每個(gè)PCIe設(shè)備都有獨(dú)立的數(shù)據(jù)傳輸通道,該通道對(duì)其他設(shè)備來說是封閉的,可避免其他設(shè)備的干擾。能有效提高智能繼電保護(hù)裝置的產(chǎn)品可靠性。P2020處理器可提供3個(gè)工作在2.5/5 GHz頻率下的串行PCIe控制器接口。本設(shè)計(jì)中P2020處理器的PCIe控制器初始化參考了UBOOT開源代碼的相關(guān)部分。在Nucleus嵌入式操作系統(tǒng)啟動(dòng)時(shí),根據(jù)硬件設(shè)計(jì),對(duì)應(yīng)設(shè)置P2020處理器復(fù)用Serdes的配置。劃分PCIe控制器地址空間。初始化PCIe控制器的配置寄存器和中斷設(shè)置寄存器。PCIe控制器的初始化流程見圖4。
3.288SE9170 SATA控制器驅(qū)動(dòng)初始化
3.2.1SATA控制器的PCIe設(shè)備注冊(cè)
P2020處理器通過設(shè)置為RC模式的PCIe控制器掃描PCIe總線上的設(shè)備,通過配置空間讀取88SE9170的設(shè)備ID和廠商ID等屬性,向PCIe控制器硬件驅(qū)動(dòng)層注冊(cè)。注冊(cè)完成后,處理器即可通過PCIE總線,對(duì)88SE9170的SATA控制器進(jìn)行初始化配置和固態(tài)硬盤訪問。
3.2.2SATA控制器的工作模式選擇
88se9170 SATA控制器支持PCI-IDE模式和AHCI模式。lDE模式是為了兼容lDE硬盤。AHCI為SSD固態(tài)硬盤的首選模式。AHCI是由Inter指導(dǎo)下多家公司聯(lián)合研發(fā)的接口標(biāo)準(zhǔn)。AHCI在PCIe和串行SATA設(shè)備內(nèi)部邏輯間扮演標(biāo)準(zhǔn)接口的角色,通過PCI BAR5,實(shí)現(xiàn)原生的SATA功能,為設(shè)備制造商省去了單獨(dú)開發(fā)接口的工作。C語(yǔ)言編寫的開源AHCI接口驅(qū)動(dòng)能非常容易添加進(jìn)嵌入式Nucleus操作系統(tǒng)中。
3.2.3SATA控制器AHCI接口初始化
在PCIE總線初始化完成后,可將AHCI的配置空間映射到BAR5寄存器指定的一段非緩存的內(nèi)存空間,通過內(nèi)存操作直接對(duì)AHCI的配置寄存器進(jìn)行初始化操作。AHCI標(biāo)準(zhǔn)指定了寄存器的偏移地址,偏移地址小于100h的為通用控制寄存器空間,大于100h的為SATA端口寄存器空間。88se9170的HBACapability支持64位尋址、NCQ、端口復(fù)用等常見SATA控制器特性。SATA控制器初始化完成后,掃描SATA端口,建立物理連接,通過AHCI驅(qū)動(dòng)的讀寫函數(shù)完成對(duì)SATA接口固態(tài)硬盤的操作。AHCI初始化流程見圖5。
3.3文件系統(tǒng)實(shí)現(xiàn)
現(xiàn)有智能繼電保護(hù)裝置為節(jié)省硬件資源,大都采用嵌入式環(huán)境下對(duì)FLASH存儲(chǔ)器支持較好的小巧精簡(jiǎn)的YAFFS或JFFS文件系統(tǒng)。這兩種文件系統(tǒng)在目前主流的桌面系統(tǒng)中都不能直接兼容,不利于移動(dòng)存儲(chǔ)設(shè)備的脫機(jī)運(yùn)行。為保證不同桌面系統(tǒng)下工具軟件對(duì)存儲(chǔ)設(shè)備能夠直接操作和讀寫,進(jìn)行數(shù)據(jù)分析,本設(shè)計(jì)選用了兼容性好的FAT文件系統(tǒng),來有效管理寫入固態(tài)硬盤內(nèi)的數(shù)據(jù)。
FAT文件系統(tǒng)整體上可以劃分為四個(gè)部分:保留區(qū)、FAT表區(qū)、數(shù)據(jù)區(qū)和剩余扇區(qū),這四部分在存儲(chǔ)設(shè)備格式化時(shí)被創(chuàng)建,并且在數(shù)據(jù)存儲(chǔ)期間不可被更改。FAT文件系統(tǒng)是完全免費(fèi)開源的,具有高效和代碼小的優(yōu)點(diǎn)。在P2020處理器上移植時(shí),根據(jù)處理器定義改動(dòng)FAT文件系統(tǒng)的數(shù)據(jù)類型和文件系統(tǒng)的配置頭文件ff.h,重新編寫DISK I/O層的驅(qū)動(dòng)函數(shù)。I/O函數(shù)主要有disk_jnitialize(),disk_read(),disk_status(),disk_write(),disk_ioctl(),get_fattime(),通過調(diào)用AHCI驅(qū)動(dòng)函數(shù),分別實(shí)現(xiàn)固態(tài)硬盤初始化、狀態(tài)獲取、讀寫、命令控制等功能。具體流程見圖6。