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