王金龍 方剛 王寶欣 原浩娟
摘要:介紹了VxWorks系統(tǒng)下嵌入式界面開發(fā)工具Tilcon的設(shè)計(jì)流程和工作方式,并針對(duì)某型武器實(shí)時(shí)維護(hù)系統(tǒng)功能選項(xiàng)多,數(shù)據(jù)刷新頻率高,實(shí)時(shí)網(wǎng)絡(luò)傳輸?shù)忍攸c(diǎn),通過(guò)Tilcon界面設(shè)計(jì)工具結(jié)合VxWorks系統(tǒng)多任務(wù)和共享內(nèi)存的處理方式完成了維護(hù)系統(tǒng)的界面設(shè)計(jì)。最終,通過(guò)武器系統(tǒng)聯(lián)合試驗(yàn),驗(yàn)證了維護(hù)軟件功能的正確性和穩(wěn)定性,具備一定的工程實(shí)踐價(jià)值。
關(guān)鍵詞:Tilcon;界面設(shè)計(jì);VxWorks;共享內(nèi)存
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)17-0074-02
1背景
某型武器實(shí)時(shí)維護(hù)軟件是工作于維護(hù)計(jì)算機(jī)上專門用于設(shè)備日常維護(hù)的專用功能軟件。本文采用了基于VxWorks系統(tǒng)和Tilcon界面開發(fā)工具的設(shè)計(jì)方式,完成了維護(hù)軟件的功能設(shè)計(jì),主要包括維護(hù)界面的狀態(tài)顯示,維護(hù)操作命令下發(fā)以及下位機(jī)反饋狀態(tài)的接收等功能。
VxWorks系統(tǒng)是Wind River公司開發(fā)的一種支持多任務(wù)處理的實(shí)時(shí)操作系統(tǒng),因其高可靠性、實(shí)時(shí)性和可裁剪性,被廣泛應(yīng)用于通信、軍事、航空、航天等高科技領(lǐng)域。Wind River提供了一種基于VxWorks系統(tǒng)的多媒體開發(fā)庫(kù)WindML(Wind Media Library)是,用于支持窗口圖形界面的顯示,但其功能相對(duì)簡(jiǎn)單,不適于功能復(fù)雜的軟件界面開發(fā)。而Tilcon是一種能夠基于WindML的可視化開發(fā)環(huán)境,不僅提供了許多成熟的控件,而且操作非常簡(jiǎn)便,避免了直接使用WindML開發(fā)界面的繁瑣過(guò)程。目前,利用Tilcon環(huán)境實(shí)現(xiàn)基于VxWorks系統(tǒng)的嵌入式界面開發(fā)已成為了一種廣泛應(yīng)用的圖形界面設(shè)計(jì)方案。
本文首先介紹了利用Tilcon工具設(shè)計(jì)界面的流程,并結(jié)合了實(shí)際功能需求,分析了維護(hù)軟件設(shè)計(jì)的關(guān)鍵要點(diǎn)。
2基于Tilcon的界面設(shè)計(jì)流程
Tilcon開發(fā)環(huán)境主要由三部分組成,即嵌入式矢量引擎EVE(Embeded Vector Engine),應(yīng)用程序API函數(shù)以及可視化界面編輯器,其中的EVE引擎可以看作是一個(gè)事件驅(qū)動(dòng)的微內(nèi)核,應(yīng)用程序可以通過(guò)API函數(shù)與EVE引擎交互。用戶通過(guò)界面編輯器設(shè)計(jì)的應(yīng)用程序界面,將保存為twd型資源文件,在實(shí)際使用過(guò)程中,通過(guò)應(yīng)用程序?qū)Y源文件進(jìn)行調(diào)用,完成圖形界面顯示,以下為VxWorks加載Tilcon界面的運(yùn)行過(guò)程:
首先在函數(shù)體中完成窗體數(shù)據(jù)的初始化,之后將對(duì)TRT_Getlnput函數(shù)的事件響應(yīng)進(jìn)行循環(huán)監(jiān)視,針對(duì)不同觸發(fā)事件進(jìn)行相應(yīng)的事件處理,直至收到退出指令,此時(shí),程序?qū)⑼顺鲅h(huán)、銷毀窗體數(shù)據(jù)并退出界面顯示函數(shù)。
3維護(hù)軟件設(shè)計(jì)與實(shí)現(xiàn)
維護(hù)軟件工作在維護(hù)計(jì)算機(jī)上,主要負(fù)責(zé)與某型系統(tǒng)的核心控制計(jì)算機(jī)通信以及維護(hù)界面顯示。維護(hù)軟件通過(guò)下發(fā)維護(hù)命令,使系統(tǒng)進(jìn)入不同的維護(hù)狀態(tài);同時(shí)接收控制計(jì)算機(jī)反饋的系統(tǒng)狀態(tài),并將其顯示在維護(hù)界面上。按照功能的不同,維護(hù)界面可以分為維護(hù)命令部分和狀態(tài)顯示部分。
3.1維護(hù)軟件功能設(shè)計(jì)
通過(guò)對(duì)功能需求的分析,本文將維護(hù)軟件將劃分為三個(gè)任務(wù)來(lái)實(shí)現(xiàn),分別負(fù)責(zé)維護(hù)界面的顯示任務(wù)RCS_MaintDisp、網(wǎng)絡(luò)數(shù)據(jù)接收任務(wù)RCS_LanRecv和網(wǎng)絡(luò)數(shù)據(jù)發(fā)送任務(wù)RCS_Lan-Send。
3.2網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)
VxWorks提供了完備的網(wǎng)絡(luò)功能,特別適用于提供嵌入式網(wǎng)絡(luò)傳輸功能。VxWorks的網(wǎng)絡(luò)層次結(jié)構(gòu)主要分為應(yīng)用程序?qū)?、協(xié)議接口層、多路復(fù)合層、鏈路層,其中,軟件開發(fā)人員只需了解應(yīng)用層中Socket函數(shù)的調(diào)用方法,而不需要了解協(xié)議中具體的實(shí)現(xiàn)方式。
由于維護(hù)計(jì)算機(jī)和控制計(jì)算機(jī)間的硬件電路采用點(diǎn)對(duì)點(diǎn)的連接方式,因此無(wú)需通過(guò)TCP協(xié)議中的握手過(guò)程來(lái)確認(rèn)服務(wù)器和客戶端的連接,因此維護(hù)軟件可以直接采用UDP協(xié)議進(jìn)行數(shù)據(jù)傳輸。
維護(hù)軟件的網(wǎng)絡(luò)數(shù)據(jù)收發(fā)是通過(guò)創(chuàng)建一個(gè)接收任務(wù)和一個(gè)發(fā)送任務(wù)實(shí)現(xiàn)的,發(fā)送任務(wù)首先完成數(shù)據(jù)初始化以及客戶端的創(chuàng)建,根據(jù)定時(shí)器觸發(fā),定時(shí)向控制計(jì)算機(jī)創(chuàng)建的服務(wù)器發(fā)送報(bào)文;接收任務(wù)完成了服務(wù)器的創(chuàng)建和相應(yīng)數(shù)據(jù)的初始化后,除了收到控制計(jì)算機(jī)發(fā)送過(guò)來(lái)的報(bào)文數(shù)據(jù),將一直處在掛起狀態(tài)。相較于使用單任務(wù),在網(wǎng)絡(luò)任務(wù)中建立一個(gè)客戶端也可以與控制計(jì)算機(jī)的服務(wù)器完成網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)工作,但將通信工作分為收發(fā)兩個(gè)任務(wù)的方式可以使軟件編寫更加簡(jiǎn)單。
3.3臨界段數(shù)據(jù)的保護(hù)
維護(hù)界面顯示任務(wù)RCS_MaintDisp和網(wǎng)絡(luò)傳輸任務(wù)間存在數(shù)據(jù)交流。VxWorks系統(tǒng)中提供了多種任務(wù)間交流的方式,其中包括共享內(nèi)存、信號(hào)量、消息隊(duì)列和管道以及網(wǎng)絡(luò)套接字等。其中,共享內(nèi)存是任務(wù)之間的一種簡(jiǎn)單、快捷的數(shù)據(jù)交流方式。
界面顯示任務(wù)和網(wǎng)絡(luò)發(fā)送任務(wù)之間共享發(fā)送報(bào)文緩存空間SendPacket,其中,界面顯示任務(wù)為生產(chǎn)者而網(wǎng)絡(luò)發(fā)送任務(wù)為消費(fèi)者。當(dāng)人工操作維護(hù)界面下發(fā)維護(hù)命令后,界面顯示任務(wù)將對(duì)共享空間SendPacket進(jìn)行異步寫人操作,由于網(wǎng)絡(luò)發(fā)送任務(wù)是以固定周期定時(shí)發(fā)送數(shù)據(jù)的,而人工下發(fā)命令時(shí)機(jī)不確定,因此可能存在異步寫入數(shù)據(jù)過(guò)程中,發(fā)送任務(wù)搶奪了CPU控制權(quán),開始讀取共享內(nèi)存發(fā)送數(shù)據(jù)報(bào),導(dǎo)致錯(cuò)誤報(bào)文出現(xiàn)。因此,我們需要對(duì)共享資源進(jìn)行保護(hù),常用的保護(hù)手段包括禁止中斷、禁止CPU資源搶占以及信號(hào)量互斥等方式。其中,信號(hào)量互斥是保護(hù)任務(wù)間共享內(nèi)存最好的方式,相比于禁止搶占,互斥信號(hào)量提供了更精確的互斥顆粒度,僅對(duì)與共享資源相關(guān)的任務(wù)進(jìn)行限制。VxWorks系統(tǒng)提供了二進(jìn)制信號(hào)量、互斥信號(hào)量以及計(jì)數(shù)信號(hào)量三種不同形式的信號(hào)量,其中,互斥信號(hào)量是針對(duì)互斥事件對(duì)普通二進(jìn)制信號(hào)量的優(yōu)化,特別適合實(shí)現(xiàn)對(duì)共享資源的保護(hù)。
雖然接收任務(wù)和界面顯示任務(wù)也存在內(nèi)存共享,但是由于寫接收?qǐng)?bào)文緩存的時(shí)間要遠(yuǎn)小于維護(hù)界面刷新的時(shí)間,因此無(wú)需對(duì)共享數(shù)據(jù)段進(jìn)行保護(hù)。
3結(jié)束語(yǔ)
本文梳理某型武器實(shí)時(shí)維護(hù)系統(tǒng)的設(shè)計(jì)需求及功能布局,通過(guò)Tilcon界面設(shè)計(jì)工具開發(fā)流程和工作流程,并結(jié)合維護(hù)軟件中網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)和共享數(shù)據(jù)段保護(hù)的設(shè)計(jì)要點(diǎn)進(jìn)行了詳盡的闡述,具備一定的工程實(shí)踐價(jià)值。