《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > VxWorks下TRDP協(xié)議棧移植
VxWorks下TRDP協(xié)議棧移植
2018年電子技術(shù)應(yīng)用第10期
周浩尚1,2,高照玲3
1.中車大連電力牽引研發(fā)中心有限公司,遼寧 大連116052; 2.動(dòng)車組和機(jī)車牽引與控制國(guó)家重點(diǎn)實(shí)驗(yàn)室,遼寧 大連116052;3.大連東軟信息學(xué)院 電子工程系,遼寧 大連116023
摘要: 在VxWorks操作系統(tǒng)下對(duì)TRDP協(xié)議棧移植遇到的問(wèn)題進(jìn)行分析與解決,介紹了在TRDP(Train Real-time Data Protocol)應(yīng)用過(guò)程中遇到數(shù)據(jù)發(fā)送失敗時(shí)的應(yīng)對(duì)方法,最后指出了目前VxWorks 6.5版本FTP組件中普遍存在的后門問(wèn)題。經(jīng)過(guò)兩年的驗(yàn)證,超20萬(wàn)公里運(yùn)用考核,在機(jī)車車輛網(wǎng)絡(luò)控制系統(tǒng)中應(yīng)用該協(xié)議棧所遇到的問(wèn)題及其解決方法,可以證明移植成功,方法可靠,值得推廣。
中圖分類號(hào): TP393.1
文獻(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.
TRDP protocol stack transplantation on VxWorks
Zhou Haoshang1,2,Gao Zhaoling3
1.CRRC Dalian R&D CO.,LTD.,Dalian 116052,China; 2.State Key Laboratory for Traction and Control System of EMU and Locomotive,Dalian 116052,China; 3.Department of Electronic Engineering,Dalian Neusoft University of Information,Dalian 116023,China
Abstract: Firstly,in the VxWorks operating system, the problems encountered in the train real-time data protocol(TRDP) stack transplant are analyzed and solved, and the solutions to the failure of data transmission in the process of TRDP application are encountered. Finally, the common backdoor problem in the current VxWorks 6.5 version FTP component are pointed out. After two years' verification, and assessment of the application of over 200 thousand kilometers,the problems encountered in the application of the protocol stack in the locomotive and vehicle network control system and the solution in the application of the protocol stack in the locomotive and vehicle network control system can prove that the transplant successes, the method is reliable, and it is worth popularizing.
Key words : VxWorks 6.5;TRDP protocol stack;CCU

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所示。

qrs1-t1.gif

    TRDP協(xié)議棧在應(yīng)用系統(tǒng)中位置如圖2所示。

qrs1-t2.gif

    列車中央控制單元(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所示。

qrs1-t3.gif

    按照說(shuō)明重新設(shè)置TTL=64:

qrs1-cx1.gif

    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í)間比較上采用宏定義方式,例如:

qrs1-cx2.gif

    該種方式運(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ù):

    qrs1-cx3.gif

qrs1-cx4.gif

qrs1-cx5.gif

    在讀取本地時(shí)間時(shí)采取獲取系統(tǒng)啟動(dòng)后tick個(gè)數(shù)來(lái)作為基準(zhǔn)并進(jìn)行時(shí)間暫存,即:

    qrs1-cx6.gif

    即使出現(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。

qrs1-t4.gif

    若想限制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)行上傳、修改、刪除等操作。

qrs1-t5.gif

    但是在實(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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。