谷曉鵬,楊玉亮,張 然(.海軍指揮所,北京0084;.中國(guó)船舶重工集團(tuán)公司第七二四研究所,南京53)
?
基于VPX的SRIO通信模塊設(shè)計(jì)
谷曉鵬1,楊玉亮2,張然2
(1.海軍指揮所,北京100841;2.中國(guó)船舶重工集團(tuán)公司第七二四研究所,南京211153)
摘要:針對(duì)VPX下SRIO通信的需求,提出一種封裝SRIO通信接口的方法,設(shè)計(jì)并實(shí)現(xiàn)了一種SRIO通信模塊。SRIO通信模塊采用軟件模塊化設(shè)計(jì)思想,在SRIO通信接口的基礎(chǔ)上設(shè)計(jì)PowerPC板CPU之間的通用的數(shù)據(jù)通信方式,可實(shí)現(xiàn)PowerPC板內(nèi)、板間的數(shù)據(jù)通信。該模塊以庫(kù)函數(shù)形式實(shí)現(xiàn)二進(jìn)制重用,可移植于任意PowerPC程序設(shè)計(jì)中,實(shí)現(xiàn)通信參數(shù)的可視化配置,有利于軟件結(jié)構(gòu)化、模塊化設(shè)計(jì)。測(cè)試分析表明,該模塊具有良好的性能和二進(jìn)制可重用性。
關(guān)鍵詞:通信模塊; VPX; Serial RapidIO;軟件模塊化
隨著技術(shù)的進(jìn)步以及應(yīng)用性能需求的不斷提高,雷達(dá)系統(tǒng)各單元之間的通信對(duì)帶寬要求不斷提高。VPX各單元之間的Serial RapidIO(以下簡(jiǎn)稱SRIO)總線由于傳輸帶寬的優(yōu)勢(shì),應(yīng)用越來越廣泛,因此SRIO通信越來越普遍。但是,直接使用SRIO通信接口函數(shù)存在很多不足:
(1)SRIO通信相關(guān)接口函數(shù)多,使用不方便,每個(gè)軟件人員需花大量時(shí)間學(xué)習(xí)其使用方法;
(2)SRIO通信需要對(duì)CPUID、地址、門鈴等進(jìn)行約定,需各個(gè)軟件相關(guān)人員進(jìn)行討論確定;當(dāng)CPU之間需增加新的報(bào)文或者已有CPU與新的CPU進(jìn)行通信時(shí),整個(gè)項(xiàng)目相關(guān)人員可能都需對(duì)通信模塊程序進(jìn)行修改;
(3)程序運(yùn)行過程中,SRIO通信出現(xiàn)收不到數(shù)據(jù)或者數(shù)據(jù)錯(cuò)誤時(shí)很難進(jìn)行定位和排查;
(4)每個(gè)軟件人員對(duì)SRIO通信進(jìn)行設(shè)計(jì)時(shí)未對(duì)自身程序的通信速度、穩(wěn)定性等進(jìn)行系統(tǒng)的測(cè)試,很難保證通信的可靠性。
針對(duì)上述問題,提出一種封裝SRIO通信接口的方法,設(shè)計(jì)并實(shí)現(xiàn)了一種SRIO通信模塊。該模塊以庫(kù)函數(shù)形式實(shí)現(xiàn)二進(jìn)制重用,可移植于任意PowerPC程序設(shè)計(jì)中,實(shí)現(xiàn)通信參數(shù)的可視化配置,有利于軟件結(jié)構(gòu)化、模塊化設(shè)計(jì)。
VPX機(jī)箱中同一PowerPC板各單元之間通過Serial RapidIO高速串行總線進(jìn)行互連,每個(gè)CPU都有一個(gè)SRIO接口,通過switch路由于背板。不同PowerPC板間通過機(jī)箱中交換板進(jìn)行互連[1],如圖1所示。
VPX6-8640D的每個(gè)RapidIO設(shè)備(8640D cpu)都有inbound SRIO memory windows,允許其他RapidIO設(shè)備來訪問該設(shè)備。同時(shí),還有outbound SRIO memory windows,允許該RapidIO設(shè)備去訪問其他設(shè)備[2]。
圖1 SRIO通信架構(gòu)
2.1需求分析與設(shè)計(jì)
SRIO通信時(shí),首先需要對(duì)CPUID、地址、門鈴等進(jìn)行約定。當(dāng)通信需求改變時(shí),整個(gè)項(xiàng)目相關(guān)人員可能都需對(duì)通信模塊程序進(jìn)行修改。針對(duì)該問題,本模塊設(shè)計(jì)并實(shí)現(xiàn)了一種通信參數(shù)的可視化配置方法,通過該方法同時(shí)增加了模塊的通用性和可移植性
SRIO通信相關(guān)接口函數(shù)多,使用不方便,每個(gè)軟件人員需花大量時(shí)間學(xué)習(xí)其使用方法。本模塊提出一種封裝SRIO通信接口的方法,有效地解決了該問題。
2.1.1通信參數(shù)的可視化配置方法
(1)配置文件設(shè)計(jì)
參與通信的CPU采用統(tǒng)一配置文件,完成對(duì)CPUID、地址、門鈴等的配置。使用門鈴作為每條配置信息的唯一標(biāo)識(shí)。通信過程中,使用門鈴?fù)瓿膳渲眯畔⒌乃饕?,進(jìn)而實(shí)現(xiàn)CPU間數(shù)據(jù)到對(duì)應(yīng)地址的映射。
各CPU的發(fā)送和接收窗口個(gè)數(shù)均有一定限制(發(fā)送窗8個(gè),接收窗4個(gè)),需采用地址偏移方式實(shí)現(xiàn)多數(shù)據(jù)報(bào)文的通信。配置文件設(shè)計(jì)過程中,加入發(fā)送窗口和接收窗口建立標(biāo)識(shí),并通過地址偏移和門鈴的設(shè)置實(shí)現(xiàn)窗口的復(fù)用。
每個(gè)CPU可配置多條配置信息,每條配置信息又可實(shí)現(xiàn)多種報(bào)文的通信。配置信息結(jié)構(gòu)如圖2所示。
圖2 配置信息結(jié)構(gòu)圖
(2)可視化界面設(shè)計(jì)
參數(shù)配置程序用于生成或修改配置文件,效果如圖3所示。
設(shè)置配置文件參數(shù)過程中,當(dāng)參數(shù)設(shè)置不合理時(shí)將彈出提示對(duì)話框,例如地址越界、地址不對(duì)齊、地址重用等錯(cuò)誤。
2.1.2SRIO通信接口封裝方法[3-4]
該模塊設(shè)計(jì)提供3個(gè)功能模塊: SRIO初始化模塊、SRIO發(fā)送模塊和SRIO接收模塊,分別對(duì)應(yīng)3個(gè)功能接口函數(shù)。通信流程如圖4所示。增加新的報(bào)文或者增加新的通信CPU時(shí)僅需對(duì)配置文件進(jìn)行修改。
圖3 配置文件設(shè)置效果圖
圖4 SRIO模塊通信流程
(1)SRIO初始化模塊
初始化模塊主要實(shí)現(xiàn)以下功能:
·SRIO接收窗口和發(fā)送窗口的創(chuàng)建;
·SRIO接收緩存區(qū)、信號(hào)量、相關(guān)變量的初始化;
·SRIO門鈴輸入的初始化,門鈴中斷處理函數(shù)的創(chuàng)建;
·SRIO接收任務(wù)的創(chuàng)建。
(2)SRIO發(fā)送模塊
該模塊設(shè)計(jì)流程為:
·將門鈴作為唯一標(biāo)識(shí),從配置信息中查找到對(duì)應(yīng)的發(fā)送地址;
·通過DMA傳輸方式,將待發(fā)送數(shù)據(jù)傳輸至發(fā)送地址中,完成數(shù)據(jù)到總線的映射;
·發(fā)送門鈴中斷通知接收端數(shù)據(jù)已更新。
(3)SRIO接收模塊
該模塊設(shè)計(jì)流程為:
·門鈴中斷輸入函數(shù)接收門鈴;
·判斷門鈴值,啟動(dòng)門鈴對(duì)應(yīng)的接收任務(wù);
·接收任務(wù)讀取對(duì)應(yīng)接收地址中的數(shù)據(jù)值接收緩存區(qū),接收地址通過門鈴值索引得到;
·通過讀取緩存區(qū)接口函數(shù),讀取緩存區(qū)數(shù)據(jù)。
2.2可靠性設(shè)計(jì)
模塊設(shè)計(jì)中主要采取了以下幾種方法提高模塊的可靠性:
(1)模塊編譯成庫(kù)函數(shù)的形式,僅提供給用戶庫(kù)函數(shù)和頭文件;
(2)通過編譯器的強(qiáng)類型檢查,接口參數(shù)使用錯(cuò)誤時(shí),報(bào)送錯(cuò)誤信息,避免運(yùn)行過程中產(chǎn)生通信錯(cuò)誤或者模塊崩潰;
(3)配置文件設(shè)置過程中,對(duì)各配置參數(shù)的有效性進(jìn)行檢查,避免了配置的設(shè)置參數(shù)無效產(chǎn)生通信錯(cuò)誤;
(4)通信過程中,數(shù)據(jù)包的最后16位作為校驗(yàn)位,以檢驗(yàn)數(shù)據(jù)包的有效性。
(1)可重用性
該模塊通過庫(kù)函數(shù)形式,可以實(shí)現(xiàn)二進(jìn)制重用,用戶無需對(duì)模塊代碼進(jìn)行學(xué)習(xí)和了解,僅通過接口函數(shù)的調(diào)用,即可完成相應(yīng)的SRIO通信。
(2)可靠性
模塊設(shè)計(jì)過程中充分考慮了可靠性的設(shè)計(jì)。開發(fā)完成后,對(duì)模塊完成了功能、性能和異常的測(cè)試,保證軟件具有成熟性、容錯(cuò)性。
(3)可維護(hù)性
通信過程中出現(xiàn)故障時(shí),通過檢查接口調(diào)用方式,參數(shù)配置等方式來確定故障位置。硬件升級(jí)或應(yīng)用環(huán)境能力改變,模塊的升級(jí)不影響庫(kù)函數(shù)的接口簽名,使得模塊易于升級(jí)。
4.1模塊功能測(cè)試
·測(cè)試硬件環(huán)境: VPX插箱,兩塊PowerPC板,1塊交換板,CPU類型:8640D;
·8片CPU接收緩存區(qū)均設(shè)置為4 MB,單數(shù)據(jù)包大小設(shè)置為1200 B,發(fā)送速度20 MBps,設(shè)置配置文件(共56條配置信息),完成每片CPU分別與其他7 片CPU的通信,測(cè)試5 min;
·記錄測(cè)試結(jié)果,發(fā)送接收數(shù)據(jù)一致;
·測(cè)試結(jié)果表明:參數(shù)配置程序完成了參數(shù)的可視化配置,同時(shí)模塊實(shí)現(xiàn)了多個(gè)CPU之間的數(shù)據(jù)通信。
4.2通信速度測(cè)試
測(cè)試硬件環(huán)境: VPX插箱,兩塊PowerPC板,1塊交換板,CPU類型:8640D。
4.2.1數(shù)據(jù)分類測(cè)試
接收緩存區(qū)大小為64 MB,單數(shù)據(jù)包大小分別為: 1200 B、65532 B、2 MB、8 MB、16 MB、32 MB時(shí),設(shè)置配置文件,實(shí)現(xiàn)兩PowerPC板上各一個(gè)CPU之間的通信,發(fā)送10 min,測(cè)試結(jié)果如表1所示。測(cè)試結(jié)果表明:該模塊對(duì)各種類型報(bào)文的通信都具有良好的性能。
表1 數(shù)據(jù)分類測(cè)試結(jié)果
4.2.2通信能力測(cè)試
模塊通信能力主要取決于DMA傳輸速度和內(nèi)存拷貝速度,二者均受到硬件條件限制,下面分別進(jìn)行測(cè)試。
改變單次發(fā)送數(shù)據(jù)包大小,分別設(shè)置為1 MB、2 MB、4 MB、8 MB、16 MB、32 MB,調(diào)用本模塊發(fā)送函數(shù)循環(huán)發(fā)送,接收模塊接收數(shù)據(jù)后循環(huán)拷貝至緩存,過程中分別計(jì)算DMA傳輸速度和內(nèi)存拷貝速度。
計(jì)算方法: DMA傳輸速度記為(VDMA)MBps,發(fā)送次數(shù)(N)次,單次數(shù)據(jù)包大小(L)MB,傳輸時(shí)間(T)s,則: VDMA= N* L/T;計(jì)算20次結(jié)果取平均值。內(nèi)存拷貝速度采用相同計(jì)算方法。測(cè)試結(jié)果如表2所示。
表2 模塊能力測(cè)試結(jié)果
由表2得出以下結(jié)論:
(1)DMA傳輸速度>800 MBps,而內(nèi)存拷貝速度峰值為110 MBps左右。該速度為通信過程中的峰值速度,大于該發(fā)送速度,接收端將不能及時(shí)讀取數(shù)據(jù)至緩存;
(2)測(cè)試結(jié)果表明:模塊通信速度受底層memcpy函數(shù)的限制,即硬件的處理能力,本模塊具有良好的性能,滿足通信需求。
4.3穩(wěn)定性測(cè)試
上一節(jié)測(cè)試中,分別挑選3種情況進(jìn)行長(zhǎng)時(shí)間測(cè)試,結(jié)果如下:
(1)1200 B數(shù)據(jù),0.2 ms/次發(fā)送速度,運(yùn)行2 h,記錄所有數(shù)據(jù)包的流水號(hào),并分段將輸入輸出詳細(xì)數(shù)據(jù)記文件,數(shù)據(jù)校驗(yàn)位正確,結(jié)果正確;
(2)65532 B數(shù)據(jù),1 ms/次發(fā)送速度,運(yùn)行2 h,記錄所有數(shù)據(jù)包的流水號(hào),并分段將輸入輸出詳細(xì)數(shù)據(jù)記文件,數(shù)據(jù)校驗(yàn)位正確,結(jié)果正確;
(3)32 MB數(shù)據(jù),500 ms/次發(fā)送速度,運(yùn)行2 h,記錄所有數(shù)據(jù)包的流水號(hào),并分段將輸入輸出詳細(xì)數(shù)據(jù)記文件,數(shù)據(jù)校驗(yàn)位正確,結(jié)果正確。
測(cè)試結(jié)果表明,該模塊具有良好的穩(wěn)定性。
4.4實(shí)用測(cè)試
該模塊已應(yīng)用于某項(xiàng)目中,VPX插箱中各CPU間SRIO通信均使用該模塊,滿足項(xiàng)目中所有通信需求。模塊的易用性和可靠性節(jié)省了項(xiàng)目軟件開發(fā)人員大量開發(fā)時(shí)間,并達(dá)到了所需的性能要求。
本文設(shè)計(jì)的SRIO通信模塊具備良好的工程實(shí)用性,后期將會(huì)應(yīng)用于更多的項(xiàng)目和產(chǎn)品中。其模塊化的特點(diǎn)在項(xiàng)目和產(chǎn)品的軟件開發(fā)中具有諸多優(yōu)勢(shì),后續(xù)的應(yīng)用反饋將使模塊更加完善。本文的設(shè)計(jì)思想為工程應(yīng)用中的軟件模塊化提供了參考。
參考文獻(xiàn):
[1]尹亞明,等.新型高性能RapidIO互連技術(shù)研究[J].計(jì)算機(jī)工程與科學(xué),2004(12).
[2]Sam Fuller.RapidIO嵌入式系統(tǒng)互連[M].北京:電子工業(yè)出版社,2006.
[3]李春田.模塊化研究[M].北京:中國(guó)標(biāo)準(zhǔn)出版社,2008.
[4]徐惠民.基于VxWorks的嵌入式系統(tǒng)及實(shí)驗(yàn)[M].北京:北京郵電大學(xué)出版社,2006.
Design of SRIO communication module based on VPX
GU Xiao-peng1,YANG Yu-liang2,ZHANG Ran2
(1.Naval Command Post,Beijing 100841; 2.No.724 Research Institute of CSIC,Nanjing 211153)
Abstract:According to the requirements of the SRIO communication for the VPX,a method of encapsulating the SRIO communication interface is proposed,and a SRIO communication module is designed and realized.The SRIO communication module adopts an idea of modularized software that the universal data communication mode between the CPUs of the PowerPC boards is designed based on the SRIO communication interface,which can realize the data communication between and inside the PowerPC boards.The binary system reusability for the module is realized in the form of library function.The module can be transplanted in any PowerPC programs,realizing the visualized configuration of the communication parameters and facilitating structural and modularized design of the software.The test results indicate that this module features good performance and binary system reusability.
Keywords:communication module; VPX; Serial RapidIO; modularized software
作者簡(jiǎn)介:谷曉鵬(1976-),男,工程師,碩士,研究方向:指揮自動(dòng)化信息處理技術(shù);楊玉亮(1987-),男,工程師,碩士,研究方向:雷達(dá)資源調(diào)度;張然(1989-),女,工程師,碩士,研究方向:雷達(dá)數(shù)據(jù)處理。
收稿日期:2015-03-03;修回日期:2015-03-18
文章編號(hào):1009-0401(2015)02-0064-05
文獻(xiàn)標(biāo)志碼:A
中圖分類號(hào):TN95