一種基于PCIe固態(tài)硬盤存儲系統(tǒng)的設計和實現(xiàn)
摘要: 介紹了一種在智能繼電保護裝置中,基于PCIe總線技術實現(xiàn)大容量存儲系統(tǒng)設計方法。該方法選用飛思卡爾P2020處理器為硬件平臺,88se9170做為PCIe轉(zhuǎn)SATA接口控制器,以固態(tài)硬盤為存儲介質(zhì),采用兼容性好的FAT文件系統(tǒng)管理數(shù)據(jù)存儲。該存儲系統(tǒng)具有高速、支持熱插拔、可脫機運行等特點。經(jīng)EMC試驗和具體智能變電站工程運行驗證,滿足智能繼電保護裝置對數(shù)據(jù)處理安全可靠的要求。
本文引用地址:http://m.butianyuan.cn/article/201603/288913.htm引言
新一代的智能電網(wǎng)繼電保護裝置軟硬件平臺研發(fā)設計中大都采用了多種類型的組件技術,根據(jù)功能可分解為環(huán)境建模、推理決策、系統(tǒng)監(jiān)控、領域?qū)W習和領域知識庫等各類邏輯實現(xiàn)組件,組件與外部或組件間都有大量的數(shù)據(jù)傳遞和處理,這些關鍵數(shù)據(jù)不僅需要高速穩(wěn)定的存儲系統(tǒng)來存儲,還要存儲系統(tǒng)能在惡劣電磁干擾環(huán)境下保證數(shù)據(jù)的正確完整性。針對這些要求,文中著重研究了在飛思卡爾P2020多核處理器下通過PCIe實現(xiàn)的嵌入式固態(tài)硬盤存儲技術,就存儲系統(tǒng)的硬件設計和軟件驅(qū)動設計等方面進行了詳細的闡述,并通過EMC專業(yè)測試和具體智能變電站工程進行了可靠性驗證。
1 存儲系統(tǒng)架構設計
根據(jù)存儲系統(tǒng)的設計需求,要求該系統(tǒng)具有大容量數(shù)據(jù)存儲、高速總線、熱插拔等特點。按照模塊化的設計思路,兼顧繼電保護裝置機箱插件式結(jié)構的特點,將存儲設備設計為獨立的插件模塊,通過機箱背板的高速PCIE擴展總線與主控CPU模塊插件相連。其組成結(jié)構如圖1所示。
2 存儲系統(tǒng)硬件設計
2.1 P2020處理器主控單元CPU模塊設計
CPU模塊采用飛思卡爾新推出的低功耗P2020多核微處理器, P2020處理器具有雙E500v2內(nèi)核,最高主頻可達到1.2GHz,集成了PCIe、SGMI、SD/MMC等接口。包含P2020處理器的主控CPU主要由復位電路、時鐘電路、時序邏輯控制電路、DDR內(nèi)存電路和接口模塊電路組成。為了節(jié)省硬件資源和降低功耗,P2020處理器外圍接口電路采用了復用SerDes(串行器解串器)設計,通過處理器上電復位時初始化設備狀態(tài)寄存器,將P2020的四個SerDes通道靈活配置成PCIE、SGMII等接口。兩個E500內(nèi)核可根據(jù)具體的軟件設計非常方便地通過SerDes訪問存儲設備。PCIe接口的數(shù)據(jù)收發(fā)差分線和時鐘線經(jīng)過CPU插件上的高速連接器擴展到機箱背板。
2.2 固態(tài)硬盤存儲模塊設計
固態(tài)硬盤(SSD)是一種基于閃存的存儲技術,具有能耗低、無機械活動部件、讀寫速度快、抗震動等優(yōu)點。該存儲模塊使用工業(yè)級固態(tài)硬盤(>=120G)作為存儲介質(zhì),解決了智能保護裝置采用Flash或SD卡存儲空間容量小、傳輸速率慢、不能脫機運行的劣勢。
SATA控制器是固態(tài)硬盤控制的核心。系統(tǒng)選用Marvell 88SE9170作為SATA控制器,該芯片有兩個支持SATA 3.0規(guī)范的SATA端口,一個lane PCIe2.0接口。6路可設置方向的GPIO,用于操作固態(tài)硬盤的數(shù)據(jù)指示燈閃爍指示等功能。88SE9170是Marvell新推出的一款工業(yè)級PCIE轉(zhuǎn)SATA的控制芯片,兼容SATA3.0以下的SATA協(xié)議規(guī)范,支持SATA端口的FIS和COMMAND交換技術,支持SATA常見的硬盤NCQ(全速命令隊列)、AHCI(高級主機控制器接口)接口模式等功能。
88SE9170自帶一個支持SPI接口的512KB固件FLASH芯片,芯片上可由寫片器寫入BIOS和引導碼,通過軟件運行將FLASH內(nèi)容映射到內(nèi)存指定地址來加載或由88SE9170上電時自動加載,完成88SE9170片內(nèi)寄存器的配置。另外一種方式不需要SPI flash,每次上電時由處理器通過PCIE接口對88SE9170進行寄存器配置,配置參數(shù)掉電丟失。缺點是該存儲模塊不能脫離CPU模塊獨立運行,通用性不好。
由88SE9170 SATA控制器通過SATA協(xié)議實現(xiàn)處理器和固態(tài)硬盤之間的數(shù)據(jù)傳輸和管理。數(shù)據(jù)傳輸速率可達2.5Gbps或5Gbps。模塊示意圖如圖2所示。
3 軟件和驅(qū)動設計
嵌入式操作系統(tǒng)采用國外引進的嵌入式實時操作系統(tǒng)Nucleus Plus。Nucleus Plus具有實時的、搶先的、多任務的內(nèi)核。95%的內(nèi)核代碼由C語言編寫,開放性好,一些開源的驅(qū)動代碼和應用代碼能很容易地添加到操作系統(tǒng)中。在嵌入式操作系統(tǒng)下運行驅(qū)動軟件可以分為三部分: P2020處理器PCIe設備初始化、88SE9170 SATA控制器驅(qū)動初始化和文件系統(tǒng)實現(xiàn)。存儲系統(tǒng)的驅(qū)動軟件框架結(jié)構如圖3所示。
3.1 PCIe設備初始化
PCIe總線采用點對點的串行連接方式,每個PCIe設備都有獨立的數(shù)據(jù)傳輸通道,該通道對其他設備來說是封閉的,可避免其他設備的干擾。能有效提高智能繼電保護裝置的產(chǎn)品可靠性。P2020處理器可提供3個工作在2.5/5 GHz頻率下的串行PCIe控制器接口。本設計中P2020處理器的PCIe控制器初始化參考了UBOOT開源代碼的相關部分。在Nucleus 嵌入式操作系統(tǒng)啟動時, 根據(jù)硬件設計,對應設置P2020 處理器復用Serdes的配置。劃分PCIe控制器地址空間。初始化PCIe控制器的配置寄存器和中斷設置寄存器。PCIe控制器的初始化流程見圖4。
3.2 88SE9170 SATA控制器驅(qū)動初始化
3.2.1 SATA控制器的PCIe設備注冊
P2020處理器通過設置為RC模式的PCIe 控制器掃描PCIe總線上的設備,通過配置空間讀取88SE9170的設備ID和廠商ID等屬性,向PCIe控制器硬件驅(qū)動層注冊。注冊完成后,處理器即可通過PCIE總線,對88SE9170的SATA控制器進行初始化配置和固態(tài)硬盤訪問。
3.2.2 SATA控制器的工作模式選擇
88se9170 SATA控制器支持PCI-IDE模式和AHCI模式。IDE模式是為了兼容IDE硬盤。AHCI為SSD固態(tài)硬盤的首選模式。AHCI是由Inter指導下多家公司聯(lián)合研發(fā)的接口標準。AHCI在PCIe和串行SATA設備內(nèi)部邏輯間扮演標準接口的角色,通過PCI BAR5,實現(xiàn)原生的SATA功能,為設備制造商省去了單獨開發(fā)接口的工作。C語言編寫的開源AHCI接口驅(qū)動能非常容易添加進嵌入式Nucleus操作系統(tǒng)中。
3.2.3 SATA控制器AHCI接口初始化
在PCIE總線初始化完成后,可將AHCI的配置空間映射到BAR5寄存器指定的一段非緩存的內(nèi)存空間,通過內(nèi)存操作直接對AHCI的配置寄存器進行初始化操作。AHCI標準指定了寄存器的偏移地址,偏移地址小于100h的為通用控制寄存器空間,大于100h的為SATA端口寄存器空間。88se9170 的HBA Capability 支持64位尋址、NCQ、端口復用等常見SATA控制器特性。SATA控制器初始化完成后,掃描SATA端口,建立物理連接,通過AHCI驅(qū)動的讀寫函數(shù)完成對SATA接口固態(tài)硬盤的操作。AHCI初始化流程見圖5。
3.3 文件系統(tǒng)實現(xiàn)
現(xiàn)有智能繼電保護裝置為節(jié)省硬件資源,大都采用嵌入式環(huán)境下對FLASH存儲器支持較好的小巧精簡的YAFFS或JFFS文件系統(tǒng)。這兩種文件系統(tǒng)在目前主流的桌面系統(tǒng)中都不能直接兼容,不利于移動存儲設備的脫機運行。為保證不同桌面系統(tǒng)下工具軟件對存儲設備能夠直接操作和讀寫,進行數(shù)據(jù)分析,本設計選用了兼容性好的FAT文件系統(tǒng),來有效管理寫入固態(tài)硬盤內(nèi)的數(shù)據(jù)。
FAT文件系統(tǒng)整體上可以劃分為四個部分:保留區(qū)、 FAT 表區(qū)、數(shù)據(jù)區(qū)和剩余扇區(qū), 這四部分在存儲設備格式化時被創(chuàng)建,并且在數(shù)據(jù)存儲期間不可被更改。FAT文件系統(tǒng)是完全免費開源的,具有高效和代碼小的優(yōu)點。在P2020處理器上移植時,根據(jù)處理器定義改動FAT文件系統(tǒng)的數(shù)據(jù)類型和文件系統(tǒng)的配置頭文件ff.h,重新編寫DISK I/O層的驅(qū)動函數(shù)。I/O函數(shù)主要有disk_initialize(),disk_read(),disk_status(),disk_write(),disk_ioctl(),get_fattime(),通過調(diào)用AHCI驅(qū)動函數(shù),分別實現(xiàn)固態(tài)硬盤初始化、狀態(tài)獲取、讀寫、命令控制等功能。具體流程見圖6。
4 測試驗證
4.1 固態(tài)硬盤數(shù)據(jù)讀寫測試
選用固態(tài)硬盤支持的三種SATA命令:IDENTIFY、WRITE DMA EXT和READ DMA EXT來測試固態(tài)硬盤數(shù)據(jù)讀寫數(shù)據(jù)的可靠性。
(1) IDENTIFY測試
利用NUCLEUS 操作系統(tǒng)的測試代碼,操作SATA控制器AHCI I/O接口函數(shù)ahci_device_data_io(u8 port, u8 *fis, int fis_len, u8 *buf,int buf_len, u8 is_write),下發(fā)IDENTIFY FIS命令,函數(shù)返回256字節(jié)buf數(shù)據(jù)區(qū)IDENTIFY命令響應數(shù)據(jù),該數(shù)據(jù)根據(jù)硬盤生產(chǎn)廠商不同,數(shù)據(jù)內(nèi)容也有差別,主要內(nèi)容有制造廠商的名稱、產(chǎn)品序列號、硬盤大小、支持的功能等參數(shù)。與選用的固態(tài)硬盤廠商提供的數(shù)據(jù)手冊相關內(nèi)容逐項核對后,內(nèi)容一致,測試正常。
(2) 利用WRITE DMA EXT、READ DMA EXT命令循環(huán)測試讀寫固態(tài)硬盤數(shù)據(jù),對寫入和讀取相同硬盤扇區(qū)的數(shù)據(jù)進行比較,判斷數(shù)據(jù)讀寫的正確性。部分相關測試代碼見如下:
u8 user_buffer_read [2048];
u8 user_buffer_write[2048];
int sata_ahci_sectortest_read_write(u8 ahci_port,u8 is_write,u64 lba_start,u16 block_count);
while(1)
{ …
count=4;
ata_ahci_sectortest_read_write(0,1,lba,count)//WRITE 2K 數(shù)據(jù)
ata_ahci_sectortest_read_write(0,0,lba,count)//READ 2K 數(shù)據(jù)
if(data_compare(&user_buffer_write,& user_buffer_read)!=0)
{ printf ("ahci: sata data error! Return!rn")
Break;}
lba=lba+4;
…
}
通過測試代碼可對固態(tài)硬盤數(shù)據(jù)區(qū)進行全覆蓋測試,根據(jù)1000次測試輸出結(jié)果來看,數(shù)據(jù)讀寫正常。
隨后用大數(shù)據(jù)文件(>5G)的讀寫進行測試,對讀寫時間進行了統(tǒng)計,計算下來,可以達到240MB/S的讀取速度,180MB/S的寫入速度,滿足設計要求。
4.2 PCIE總線數(shù)據(jù)傳輸可靠性驗證
智能繼電保護裝置為機箱插件式結(jié)構,本設計中固態(tài)硬盤插件和應用P2020處理器的CPU插件由PCIE總線經(jīng)機箱PCB背板擴展后連接。PCIE的信號完整性和EMC耐受能力,將影響系統(tǒng)的穩(wěn)定性和可靠性。為驗證硬件設計的可靠性,對整裝置進行了靜電放電抗擾度、快速瞬變脈沖群抗擾度、浪涌抗擾度、阻尼震蕩波等多項EMC試驗。試驗結(jié)果表明,PCIE總線物理連接可靠,存儲系統(tǒng)無數(shù)據(jù)丟失和出錯現(xiàn)象。
4.3 具體智能變電站工程現(xiàn)場運行驗證
采用新一代智能變電站保護軟硬件平臺設計的繼電保護和通信裝置,在吉林500kV包家智能變電站、重慶500kV玉屏智能變電站等多個新建智能變電站掛網(wǎng)運行,現(xiàn)場運行狀況良好。
5 結(jié)束語
本文介紹的基于PCIe實現(xiàn)固態(tài)硬盤存儲系統(tǒng)的設計方案,采用了應用范圍廣泛和成熟的PCIe總線技術和基于SATA的AHCI驅(qū)動接口規(guī)范,有效提高了智能繼電保護裝置的數(shù)據(jù)存儲性能。大容量存儲系統(tǒng)的應用使智能繼電保護裝置集成大數(shù)據(jù)錄波、PMU、在線監(jiān)測等功能成為可能,特別是為站域和廣域集中式軟件功能復雜數(shù)據(jù)容量大的保護裝置提供了硬件實現(xiàn)基礎。此外,在PCIe總線硬件設計環(huán)節(jié)中,如何設計才能提高總線的抗電磁干擾能力也是值得研究的地方。
參考文獻:
[1]劉振亞. 智能電網(wǎng)技術[M]. 中國電力出版社,2010
[2]王齊. PCI Express 體系結(jié)構導讀[M]. 北京機械工業(yè)出版社,2010
[3]Serial ATA International Organization. Serial ATA Revision 3.0[S],2009
[4]PCISIG. PCI Express Base Specification Revision 2.0[S],2009
[5]Serial ATA AHCI 1.3specification [Z],2008,6
[6]Freescale Semiconductor Corp. Qor IQ TM P2020 Integrated Pr-ocessor Reference Manual[M].America: Freescale Semicon-ductor,2009
[7]Freescale Semiconductor Corp. Power PCTM e500 Core Family Reference Manual[[M]. America: Freescale Semiconductor,2005
本文來源于中國科技期刊《電子產(chǎn)品世界》2016年第3期第64頁,歡迎您寫論文時引用,并注明出處。
評論