文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.181196
中文引用格式: 周浩尚,高照玲. VxWorks下TRDP協(xié)議棧移植[J].電子技術(shù)應(yīng)用,2018,44(10):56-59.
英文引用格式: Zhou Haoshang,Gao Zhaoling. TRDP protocol stack transplantation on VxWorks[J]. Application of Electronic Technique,2018,44(10):56-59.
0 引言
本文簡(jiǎn)要介紹TRDP協(xié)議棧移植目標(biāo)系統(tǒng)及其所處位置、工作硬件環(huán)境,分析并解決移植之后遇到的問(wèn)題,指出目前系統(tǒng)后門問(wèn)題。
1 TRDP協(xié)議棧所在軟硬件環(huán)境
VxWorks操作系統(tǒng)是美國(guó)風(fēng)河(Wind River)公司在1983年開發(fā)的一款強(qiáng)實(shí)時(shí)嵌入式操作系統(tǒng),因具有良好的可靠性、高性能的內(nèi)核、卓越的實(shí)時(shí)性以及友好的用戶開發(fā)環(huán)境等使其在嵌入式實(shí)時(shí)操作系統(tǒng)中獨(dú)領(lǐng)風(fēng)騷。目前VxWorks廣泛應(yīng)用于高精尖技術(shù)及對(duì)實(shí)時(shí)性要求極高的領(lǐng)域中。
以太網(wǎng)技術(shù)已經(jīng)被廣泛應(yīng)用在列車通信網(wǎng)絡(luò)和車載終端設(shè)備,主要是滿足大數(shù)據(jù)量傳輸?shù)南到y(tǒng),如車載廣播系統(tǒng)、視頻系統(tǒng)、下載固件程序等,可以減少系統(tǒng)更新時(shí)間,提高工作效率。但由于以太網(wǎng)本身的鏈路層、協(xié)議棧的復(fù)雜性,其可靠性、網(wǎng)絡(luò)失效影響及Robust等都還在驗(yàn)證中。國(guó)外一些大的軌道設(shè)備供貨商都已經(jīng)研制出了相關(guān)以太網(wǎng)產(chǎn)品,如龐巴迪研制的完全基于以太網(wǎng)控制的列車已經(jīng)交付到德國(guó)與荷蘭開始正式運(yùn)行;EKE也已經(jīng)形成了基于EKE-Trainnet IP/Ethernet的完整解決方案;MOXA、UniControls等公司已經(jīng)研發(fā)出符合IEC新標(biāo)準(zhǔn)的ETBN交換機(jī),正在進(jìn)行調(diào)試及一致性測(cè)試;株洲機(jī)車研究所也已經(jīng)推出基于ECN與ETB的相關(guān)實(shí)驗(yàn)室產(chǎn)品,2014年其新一代列車網(wǎng)絡(luò)控制系統(tǒng)(DTECS-2)產(chǎn)品代表中國(guó)在業(yè)界首次亮相,并成功通過(guò)國(guó)際專家組測(cè)試考核。
國(guó)際標(biāo)準(zhǔn)化組織(IEC)推出了基于以太網(wǎng)的列車通信網(wǎng)絡(luò)標(biāo)準(zhǔn),包括列車骨干以太網(wǎng)(Ethernet Train Backbone,ETB,由IEC61375-2-5定義)和編組以太網(wǎng)(Ethernet Consist Network,ECN,由IEC61375-3-4定義)。ETB界定了不同列車編組之間的互連接和互操作規(guī)范,而ECN界定了在每個(gè)編組內(nèi)各個(gè)終端設(shè)備構(gòu)成的以太網(wǎng)的通信規(guī)范。在2015年7月出臺(tái)了機(jī)車車輛使用的工業(yè)以太網(wǎng)標(biāo)準(zhǔn)IEC61375-2-3,Edition1.0,其為ECN與ETB的4~7層都將使用專為鐵路用途開發(fā)的自主協(xié)議列車實(shí)時(shí)數(shù)據(jù)協(xié)議(Train Real-time Data Protocol,TRDP),并通過(guò)行業(yè)團(tuán)體TCNOpen以開源的形式公開,可在對(duì)應(yīng)網(wǎng)站https://sourceforge.net/projects/tcnopen/下載其源碼,截止到目前,其最新版本為1717。
TRDP協(xié)議棧在以太網(wǎng)中所處位置[1]如圖1所示。
TRDP協(xié)議棧在應(yīng)用系統(tǒng)中位置如圖2所示。
列車中央控制單元(Central Control Unit,CCU)是列車網(wǎng)絡(luò)控制系統(tǒng)的一個(gè)核心部件,負(fù)責(zé)整個(gè)車輛的網(wǎng)絡(luò)管理和車輛運(yùn)行控制功能。其硬件部分采用低功耗嵌入式PC/104結(jié)構(gòu)的工業(yè)計(jì)算機(jī)104-1645CLDN-(24B)板卡,集成了AMD LX800CPU、256 MB DDR、一個(gè)PC/104擴(kuò)展接口、一個(gè)10/100 Mb/s自適應(yīng)網(wǎng)口、一個(gè)IDE接口、兩個(gè)串口、USB2.0接口等[2]。
其軟件部分主要包括底層系統(tǒng)軟件和應(yīng)用層軟件,前者是后者的操作系統(tǒng)平臺(tái),在本設(shè)計(jì)中采用基于x86硬件平臺(tái)VxWorks操作系統(tǒng),進(jìn)行軟件IO映射管理、內(nèi)存管理、任務(wù)調(diào)度,通過(guò)運(yùn)行相關(guān)任務(wù)的方式完成和上位機(jī)的通信、MVB數(shù)據(jù)的收發(fā)、PLC控制任務(wù)、在線監(jiān)視、運(yùn)行數(shù)據(jù)記錄、故障記錄、列車級(jí)速度控制、牽引制動(dòng)控制等。
由于TRDP源代碼開發(fā)環(huán)境為Wind River Workbench 3.0,對(duì)應(yīng)VxWorks版本為6.6,代碼測(cè)試硬件為PPC603,因此,不只是開發(fā)環(huán)境版本高于項(xiàng)目所使用的開發(fā)環(huán)境,測(cè)試硬件架構(gòu)也不同,所以當(dāng)需要改變運(yùn)行環(huán)境后就必須考慮TRDP協(xié)議棧移植及其帶來(lái)的新問(wèn)題。
2 TRDP組播TTL問(wèn)題
把TRDP協(xié)議棧移植到VxWorks 6.5下,編譯無(wú)誤通過(guò)。下載到頭車CCU中運(yùn)行,發(fā)現(xiàn)尾車CCU收不到對(duì)應(yīng)數(shù)據(jù)。經(jīng)研究代碼和反復(fù)測(cè)試及使用以太網(wǎng)工具Wireshark抓包分析發(fā)現(xiàn)組播數(shù)據(jù)報(bào)文中TTL(Time To Live)值為1,所以影響數(shù)據(jù)包通過(guò)ETBN(Ethernet Train Backbone Node)到尾車CCU中。
選中setsockopt后按F1查看官方幫助文檔[3],其中關(guān)于TTL如圖3所示。
按照說(shuō)明重新設(shè)置TTL=64:
setsockopt返回錯(cuò)誤代碼0x16,即非法參數(shù)。此時(shí)數(shù)據(jù)包雖然可以發(fā)出,但其TTL值仍為默認(rèn)值,即TTL=1,不符合期望以太網(wǎng)包跨2個(gè)以上交換機(jī)通信的要求。說(shuō)明由于VxWorks內(nèi)核問(wèn)題,設(shè)置TTL時(shí)不能安裝默認(rèn)設(shè)置方式進(jìn)行設(shè)置。
繼續(xù)測(cè)試發(fā)現(xiàn)setsockopt對(duì)單播設(shè)置時(shí)可以通過(guò)sizeof(int)傳入第4個(gè)參數(shù),而組播時(shí)只能用sizeof(char)或直接寫入1來(lái)傳入第4個(gè)參數(shù)。此時(shí),抓包顯示TTL=64,為期望值,而setsockopt返回值亦正確。
總之,當(dāng)需要跨多個(gè)交換機(jī)進(jìn)行組播數(shù)據(jù),需要設(shè)置其TTL時(shí),VxWorks 6.5系統(tǒng)底層函數(shù)實(shí)現(xiàn)有bug,和單播設(shè)置TTL時(shí)不一樣,值得開發(fā)者注意。
3 以太網(wǎng)組播數(shù)據(jù)停止發(fā)送問(wèn)題
為了保證系統(tǒng)長(zhǎng)時(shí)間運(yùn)行穩(wěn)定可靠,要其連續(xù)數(shù)百小時(shí)不間斷工作,從而滿足列車長(zhǎng)遠(yuǎn)距離運(yùn)輸?shù)男枰?。但是在測(cè)試過(guò)程中出現(xiàn)了CCU運(yùn)行一段時(shí)間(長(zhǎng)短不固定)后以太網(wǎng)組播數(shù)據(jù)停止發(fā)送的問(wèn)題,此時(shí)可正常接收數(shù)據(jù)。
經(jīng)研究代碼和在代碼中增加調(diào)試輸出語(yǔ)句,發(fā)現(xiàn)TRDP協(xié)議棧在時(shí)間比較上采用宏定義方式,例如:
該種方式運(yùn)行的結(jié)果是某個(gè)時(shí)刻后比較結(jié)果與實(shí)際計(jì)算結(jié)果相反,導(dǎo)致發(fā)送條件不能滿足,而且比較失敗后會(huì)一直都保持這種錯(cuò)誤的比較結(jié)果,即使被比較的參數(shù)已經(jīng)發(fā)生變化還是返回錯(cuò)誤的比較結(jié)果,從而導(dǎo)致某時(shí)刻之后數(shù)據(jù)停止發(fā)送的問(wèn)題。因此可以斷定該版本的VxWorks系統(tǒng)已經(jīng)將這個(gè)比較宏定義函數(shù)修改成錯(cuò)誤的比較方式。
注釋掉這些宏定義比較函數(shù),并新設(shè)計(jì)時(shí)間比較函數(shù):
在讀取本地時(shí)間時(shí)采取獲取系統(tǒng)啟動(dòng)后tick個(gè)數(shù)來(lái)作為基準(zhǔn)并進(jìn)行時(shí)間暫存,即:
即使出現(xiàn)當(dāng)前tick小于暫存tick時(shí)重置tick=0,從而可以保證在出問(wèn)題時(shí)在兩個(gè)tick之后會(huì)自動(dòng)恢復(fù),同時(shí)重新初始化TRDP協(xié)議棧。
經(jīng)過(guò)修改并進(jìn)行多臺(tái)設(shè)備長(zhǎng)時(shí)間運(yùn)行測(cè)試,該方式完全可以滿足實(shí)際系統(tǒng)需要。到目前為止,運(yùn)行該系統(tǒng)的CCU設(shè)備裝車幾十臺(tái)(輛),沒(méi)有再發(fā)生一起不發(fā)送過(guò)程數(shù)據(jù)的問(wèn)題。
4 FTP賬戶問(wèn)題
在交叉編譯環(huán)境下,設(shè)置目標(biāo)機(jī)為FTP服務(wù)器,使用電腦FTP工具登錄,并傳輸文件到目標(biāo)機(jī)進(jìn)行軟件開發(fā)測(cè)試時(shí)會(huì)非常方便。VxWorks也提供該項(xiàng)功能,設(shè)置也比較簡(jiǎn)單:在工程中雙擊Kernel Configuration即可打開組建配置界面,在Network Components--Network Applications--FTP Components中即可找到FTP組件,添加FTP Server后,對(duì)其進(jìn)行相應(yīng)設(shè)置,保存重新編譯后即可使用了,見(jiàn)圖4。
若想限制FTP登錄人員,可以設(shè)置賬號(hào)密碼,設(shè)置方式為在Network Components下,Network Authentication Components組件下,IPCOM authentication configurations下有Auth configuration #1~#6,最多可以設(shè)置6個(gè)賬號(hào)密碼,見(jiàn)圖5。每當(dāng)需要登錄FTP時(shí),可選擇任意一個(gè)賬號(hào)登錄。當(dāng)不設(shè)置任何賬號(hào)密碼時(shí)默認(rèn)為匿名登錄,只可查看及下載數(shù)據(jù),不可進(jìn)行上傳、修改、刪除等操作。
但是在實(shí)際中,只要添加FTP組件后就會(huì)有一個(gè)管理員賬戶,其用戶名和密碼并不復(fù)雜,況且該賬號(hào)密碼并不會(huì)在組件配置界面顯示。只要知道目標(biāo)機(jī)IP(此并非難事),使用該賬號(hào)密碼均可通過(guò)FTP登錄目標(biāo)機(jī),并可進(jìn)行任何操作,危險(xiǎn)系數(shù)較大。經(jīng)過(guò)多次測(cè)試,該賬號(hào)密碼廣泛存在于VxWorks 6.5版本中。
5 結(jié)論
本文首先闡述了TRDP協(xié)議棧所處的軟硬件系統(tǒng)環(huán)境,解決了其從VxWorks高版本、Power PC平臺(tái)移植到VxWorks低版本、X86平臺(tái)下遇到的問(wèn)題;其次針對(duì)以太網(wǎng)組播數(shù)據(jù)有時(shí)發(fā)送失敗原因進(jìn)行了分析與解決;最后指出并測(cè)試出VxWorks 6.5系統(tǒng)下的FTP組件確實(shí)存在后門問(wèn)題。該協(xié)議棧已經(jīng)在動(dòng)力集中動(dòng)車組中應(yīng)用,經(jīng)過(guò)歷時(shí)兩年的考驗(yàn),在北京東郊鐵科院環(huán)鐵試驗(yàn)場(chǎng)的環(huán)線測(cè)試及重慶北-趕水東線路試驗(yàn),到蘭州局20萬(wàn)公里運(yùn)用考核,該方案穩(wěn)定可靠。以上均是基于作者在課題研究中遇到的問(wèn)題并在解決問(wèn)題后的經(jīng)驗(yàn)總結(jié),并提供一些解決問(wèn)題的思路,希望對(duì)讀者有所幫助。
參考文獻(xiàn)
[1] IEC61375-2-3 Electronic railway equipment-Train communication network(TCN)-Part 2-3:TCN communication profile(IEC 61375-2-3 Edition 1.0)[S].2015.
[2] 任寶兵.城軌車輛中央控制單元設(shè)計(jì)[D].大連:大連理工大學(xué),2014.
[3] VxWorks OS Libraries API Reference 5.5(Edition 2)[S].2003.
作者信息:
周浩尚1,2,高照玲3
(1.中車大連電力牽引研發(fā)中心有限公司,遼寧 大連116052;
2.動(dòng)車組和機(jī)車牽引與控制國(guó)家重點(diǎn)實(shí)驗(yàn)室,遼寧 大連116052;3.大連東軟信息學(xué)院 電子工程系,遼寧 大連116023)