摘要:針對嵌入式系統(tǒng)下圖形界而開發(fā)困難的問題,以一個(gè)通用的IO控制板測試軟件的開發(fā)為例,介紹了一種嵌入式下圖形開發(fā)工具Tilcon,深入分析和研究了開發(fā)中涉及的BSP和WindML圖形庫組件的配置以及Tilcon工具的裁減和配置,對基于Tilcon的程序開發(fā)方法和流程進(jìn)行了分析和說明。工程應(yīng)用實(shí)踐表明,軟件的可靠性和實(shí)時(shí)性得以保證,操作方便有較高的實(shí)用價(jià)值。
關(guān)鍵詞:Vxworks;WindML;BSP;Tilcon;圖形界面
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1007—9599 (2012) 14—0000—05
一、引言
VxWorks是由美國風(fēng)河系統(tǒng)公司開發(fā)的高性能嵌入式實(shí)時(shí)操作系統(tǒng)之一,它以其優(yōu)秀的可靠性、實(shí)時(shí)性及內(nèi)核的可裁減性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域。WindML是Wind River公司提供的基于VxWorks的多媒體的支持庫,為各種體系結(jié)構(gòu)的計(jì)算機(jī)提供基本圖形媒體庫,但是WindML功能單一,代碼繁瑣,效率較低,開發(fā)高質(zhì)量的圖形界面相當(dāng)困難。為滿足復(fù)雜圖形界面用戶需求,目前風(fēng)河公司推薦使用Tilcon工具,它同步支持最新版本的Tornado/VxWorks以及WindML多媒體庫。
Tilcon是一個(gè)支持多種操作系統(tǒng)平臺的圖形用戶界面的開發(fā)工具,它是目前最先進(jìn)的Vxworks下實(shí)時(shí)操作系統(tǒng)圖形開發(fā)工具。Tilcon本身已經(jīng)集成大量成熟控件,用戶可以像Windows下VC可視化編程一樣用拖動(dòng)控件的方式構(gòu)造自己的圖形應(yīng)用,用戶運(yùn)用它能夠快速、方便地開發(fā)出令人滿意的圖形界面應(yīng)用程序,所開發(fā)的程序不需要修改代碼就可以從一個(gè)操作系統(tǒng)移植到另一個(gè)操作系統(tǒng)之上,徹底解決了困擾嵌入式實(shí)時(shí)圖形領(lǐng)域應(yīng)用的難題,具有極高的可靠性和可維護(hù)性。
本文以一塊通用的IO控制板的可視化測試軟件的開發(fā)和實(shí)現(xiàn)過程為例,結(jié)合上述各個(gè)軟件工具的開發(fā)特點(diǎn),針對開發(fā)過程中各個(gè)工具使用的關(guān)鍵和難點(diǎn),提出一種基于嵌入式圖形軟件開發(fā)的方案,該開發(fā)方法適用于嵌入式系統(tǒng)WindRiver VxWorks利用Tilcon與Tornado集成開發(fā)環(huán)境之間的無縫聯(lián)接,實(shí)現(xiàn)嵌入式實(shí)時(shí)操作系統(tǒng)下圖形的開發(fā)。
二、硬件系統(tǒng)設(shè)計(jì)
IO控制板的作用是進(jìn)行數(shù)據(jù)的控制,其外部連接16路開關(guān)輸入和16路輸出來控制設(shè)備狀態(tài)的顯示。內(nèi)部通過橋接芯片9052進(jìn)行PCI總線與局部總線之間的轉(zhuǎn)換,并與主機(jī)通信。開關(guān)量的通信和控制主要是采用FPGA EP1C3T144I來實(shí)現(xiàn)的。接收到主機(jī)的開關(guān)量控制信號后,經(jīng)過EP1C3T144I的譯碼、光耦A(yù)CPL247隔離、繼電器驅(qū)動(dòng),輸出電源24V或者24VGND;同時(shí),開關(guān)量輸入輸出模塊接收到開關(guān)量輸入,經(jīng)過光耦A(yù)CPL247隔離、信號整形后,送入FPGA,再以中斷方式發(fā)送給主機(jī)。
IO控制板采用多個(gè)中斷復(fù)用的方式,當(dāng)IO開關(guān)量任意一個(gè)輸入產(chǎn)生中斷時(shí),均向主機(jī)產(chǎn)生中斷。主機(jī)讀取中斷狀態(tài)寄存器來判斷中斷源,讀取后中斷狀態(tài)寄存器自動(dòng)清0,硬件原理圖如圖1所示:
三、軟件系統(tǒng)設(shè)計(jì)
軟件設(shè)計(jì)包含六個(gè)部分,主要涉及VxWorks下BSP系統(tǒng)支持包的配置、WindML的配置和編譯、Tilcon的裁減與配置、以及驅(qū)動(dòng)程序的設(shè)計(jì)、人機(jī)交互演示程序的設(shè)計(jì),軟件各個(gè)部分的關(guān)系如圖2所示。
為了實(shí)現(xiàn)應(yīng)用軟件的可視化,本系統(tǒng)采用Tilcon工具進(jìn)行圖形界面的設(shè)計(jì)。Tilcon在VxWorks下的應(yīng)用是基于風(fēng)河公司的WindML的,所以,必須對WindML和Tilcon進(jìn)行必要的裁減和配置,接下來將對各個(gè)部分作具體的介紹。
(一)系統(tǒng)支持軟件的設(shè)計(jì)
板級支持包(BSP)軟件是VxWork操作系統(tǒng)與便件目標(biāo)板的橋梁和屏障,它對上屏蔽目標(biāo)板的硬件細(xì)節(jié),為VxWorks操作系統(tǒng)的應(yīng)用程序提供了一個(gè)統(tǒng)一的接口。對BSP的配置首先要分析主機(jī)系統(tǒng)以及目標(biāo)板的架構(gòu)和組成,因?yàn)橄到y(tǒng)主機(jī)采用855GME芯片組構(gòu)建主處理器板,主處理器板提供的各種端口都是標(biāo)準(zhǔn)端口,所以選用Tornado2.2 下PENTIUM4配置作為模板進(jìn)行開發(fā),該BSP可以支持主處理器板的大多數(shù)標(biāo)準(zhǔn)設(shè)備。在pcPentium4標(biāo)準(zhǔn)BSP的基礎(chǔ)上,通過修改對應(yīng)的選項(xiàng)為主處理器板做支持。
IO控制板支持16路獨(dú)立的IO控制通道,可控制16個(gè)IO開關(guān)量輸入和16個(gè)IO開關(guān)量輸出,支持查詢的方式獲取IO輸入狀態(tài),當(dāng)IO輸入狀態(tài)方式變化時(shí),支持以中斷的方式獲取IO輸入狀態(tài)的變化。因此在驅(qū)動(dòng)程序設(shè)計(jì)上按照字符設(shè)備驅(qū)動(dòng)模式來開發(fā),支持標(biāo)準(zhǔn)的creat、open、read、write、ioctl、close、delete函數(shù)訪問。當(dāng)基于Tilcon進(jìn)行界面設(shè)計(jì)時(shí),只需要將Tilcon所對應(yīng)的按鈕或文本框等消息響應(yīng)函數(shù)與驅(qū)動(dòng)接口函數(shù)進(jìn)行連接就可以了。
(二)WindML的配置和編譯
用Tilcon完成應(yīng)用程序圖形用戶界面開發(fā)的前提條件就是對WindML進(jìn)行相應(yīng)項(xiàng)目配置和系統(tǒng)編譯并將其加載到嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks內(nèi)核,經(jīng)此處理后方可在Tornado集成開發(fā)環(huán)境中進(jìn)行源代碼編程與API函數(shù)調(diào)用。WindML的配置是指用戶根據(jù)目標(biāo)機(jī)配置情況及應(yīng)用需求對WindML的處理器類型、圖形設(shè)備、輸出設(shè)備、字體、音頻設(shè)備等選項(xiàng)進(jìn)行配置。完成配置后,需對所配置的WindML進(jìn)行編譯并生成目標(biāo)文件,具體步驟如下:
1.進(jìn)入Tornado集成開發(fā)環(huán)境后,選擇Tools/WindML/Configure步驟,打開WindML Configuration配置對話框,結(jié)合主處理器和IO控制板硬件構(gòu)成對WindML進(jìn)行配置。具體配置參見下表:
2.按上表所示流程來配置對應(yīng)選項(xiàng),根據(jù)實(shí)際圖形用戶界面開發(fā)需要選擇添加WindML components組件。選擇添加WindML devices下的WindML input device下的PS2 keyboard和PS2 mouse和graphics device以及select 2D layer link method下的complete 2D library。
為檢驗(yàn)WindML媒體庫是否配置、編譯成功,按如下路徑關(guān)系$(WIND_BASE)\target\src\ugl\example定位到ugldemo.c文件,并在Tornado環(huán)境下建立Downloadable工程經(jīng)編譯下載運(yùn)行后,如果能在目標(biāo)機(jī)上出現(xiàn)歡迎界面則表示W(wǎng)indML操作成功。
(三)Tilcon的裁減與配置
四、典型應(yīng)用程序的設(shè)計(jì)
根據(jù)武器顯控系統(tǒng)對IO控制板的具體要求,可視化測試軟件可以劃分為以下幾個(gè)功能模塊:初始化模塊、數(shù)據(jù)通信模塊、人機(jī)交互顯示模塊。初始化模塊主要完成Tilcon和驅(qū)動(dòng)的初始化,如對中文字體的注冊以及主窗體和驅(qū)動(dòng)的加載等功能。數(shù)據(jù)通信模塊主要是將各種TRT事件與IO控制板數(shù)據(jù)的輸入和輸出控制連接起來。人機(jī)交互顯示模塊就是通過響應(yīng)TRT事件從界面上設(shè)置或接收并顯示IO控制板數(shù)據(jù)通信的結(jié)果。軟件設(shè)計(jì)流程圖3如下:
程序設(shè)計(jì)時(shí)應(yīng)該包括一個(gè)主事件循環(huán)來控制用戶界面。首先使用TRT_Start函數(shù)啟動(dòng)一個(gè)Tilcon圖形引擎,這樣VxWorks與Tilcon之間就建立了連接,在完成了圖形用戶界面窗口初始化操作并進(jìn)行加載顯示之后就可以與此引擎進(jìn)行通信。這時(shí),程序創(chuàng)建兩個(gè)任務(wù),其中一個(gè)任務(wù)進(jìn)入主循環(huán)等待事件的產(chǎn)生,另一個(gè)任務(wù)處理接收和發(fā)送的IO控制板的數(shù)據(jù)。當(dāng)有按鈕或文本框等事件產(chǎn)生時(shí),Tilcon傳送一個(gè)描述此事件的數(shù)據(jù)結(jié)構(gòu)Recdata.data給用戶程序,分析此數(shù)據(jù)結(jié)構(gòu),然后根據(jù)界面的設(shè)計(jì)確定此事件對應(yīng)的是IO控制板數(shù)據(jù)的輸入還是輸出或是對中斷數(shù)據(jù)的接收等控制動(dòng)作。Tilcon的圖形引擎把GUI函數(shù)調(diào)用和用戶程序隔離開來,它是一個(gè)獨(dú)立的進(jìn)程,這種結(jié)構(gòu)在保證用戶程序?qū)崟r(shí)性的同時(shí)提高了系統(tǒng)的可靠性,用戶程序不需要等待命令是否被處理完畢或圖形顯示是否被更新,就可以直接返回到主任務(wù)中。
程度設(shè)計(jì)時(shí)還需要注意以下兩點(diǎn):
1.應(yīng)當(dāng)在Bootable工程項(xiàng)目usrAppInit.c文件中的用戶初始化函數(shù)usrAppInit中定義系統(tǒng)盤名稱掛載硬盤,如:usrAtaConfig(1,0,\"/ata0\")表示本系統(tǒng)電子盤掛在1控制器上的第0個(gè)設(shè)備,ata0是對系統(tǒng)第一個(gè)分區(qū)的命名。
2.在Bootable工程項(xiàng)目usrAppInit.c文件中指定Tilcon所使用的版本序列號,即:putenv(″Tilcon_5_4=/ata0″),本系統(tǒng)中ata0就是系統(tǒng)盤C,設(shè)置這個(gè)環(huán)境變量就是使其指向注冊文件地址。
程序的基本框架和主要代碼如下:
五、結(jié)束語
IO控制板可視化測試軟件采用VxWorks操作系統(tǒng),以Tilcon設(shè)計(jì)用戶操控界面,使用時(shí)直接在圖形界面上對IO控制板進(jìn)行控制和操作,實(shí)現(xiàn)了數(shù)據(jù)的同步顯示,此軟件的設(shè)計(jì)流程和架構(gòu)可以作為Tilcon開發(fā)的通用模板使用。經(jīng)測試表明,運(yùn)行效果和圖形質(zhì)量以及可操作性都較單獨(dú)使用WindML有較大的提高,這樣的設(shè)計(jì)既縮短了軟件設(shè)計(jì)周期,又提高了系統(tǒng)的可靠性和可維護(hù)性,可視化測試軟件界面美觀操作方便,具有良好的可視化效果和很高的實(shí)用價(jià)值。
參考文獻(xiàn):
[1]李陽,黃浩華,劉曉亮.嵌入式圖形系統(tǒng)Tilcon及應(yīng)用研究[J].計(jì)算機(jī)與數(shù)字工程,2008,2:110—112
[2]廖容,馬忠,肖成俊.Tilcon在VxWorks操作系統(tǒng)中的[J].艦船電子工程,2007,2:124—126
[3]姜飛,王屹華,崔曉宇.VxWorks下Tilcon嵌入式圖形界面設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2008,3:29—33
[4]Tilcon公司Tilcon User Guide 2005
[5]W indMl3.0 Programers'' Guide