摘 要:嵌入式導(dǎo)航終端是嵌入式地理信息系統(tǒng)(Embedded Geographic Information System,EGIS)的典型應(yīng)用。由于嵌入式技術(shù)的發(fā)展以及用戶對導(dǎo)航應(yīng)用需求的不斷增加,軟件可重用性、互通互聯(lián)互操作性成為導(dǎo)航應(yīng)用軟件發(fā)展的新方向。采用中間件和構(gòu)件化的設(shè)計思想,對導(dǎo)航終端體系結(jié)構(gòu)進行改進設(shè)計,并給出系統(tǒng)部分模塊的設(shè)計模型和關(guān)鍵技術(shù),滿足了實時性和可靠性要求,增強了系統(tǒng)的通用性。
關(guān)鍵詞:嵌入式導(dǎo)航終端;中間件;構(gòu)件;多任務(wù);嵌入式GUI
中圖分類號:TP3021 文獻標(biāo)識碼:B
文章編號:1004-373X(2008)10-109-03
Design of Embedded Navigation Fermind Software Based on Middleware Technology
LU Qing,YUE Chunsheng
(Institute of Information Engineering,PLA Information Engineering University,Zhengzhou,450002,China)
Abstract:Embedded navigation terminal is the typical application of Embedded Geographic Information System.Since the development of embedded technique and the increasing demand on navigation application,the software reusability and interoperability become a new tendency.This paper adopts the idea of middleware and component-based to improve the system structure.The paper gives the design of partial modules and key technique which enhances its reliability,generalization and quality of real-time.
Keywords:embedded navigation terminal;middleware;component;multi-task;embedded GUI
嵌入式導(dǎo)航終端將導(dǎo)航引擎嵌入到小型移動設(shè)備上,實現(xiàn)導(dǎo)航數(shù)據(jù)的采集、處理、傳輸、存儲、管理、查詢檢索、分析、表達和應(yīng)用功能,該系統(tǒng)具有體積小、功耗低、攜帶方便等特點。特別是在軍事領(lǐng)域中,嵌入式導(dǎo)航終端有著廣闊的發(fā)展前景[1],他能有效地應(yīng)用于單兵作戰(zhàn)系統(tǒng)、聯(lián)絡(luò)指揮系統(tǒng)、巡邏和追捕系統(tǒng)、航空中的調(diào)度指揮等系統(tǒng)中,能夠讓作戰(zhàn)個體精確地確定自己的位置,為特殊地形下的部隊集結(jié)或特定目的行進提供保證。
目前,國內(nèi)外市場上嵌入式導(dǎo)航終端種類繁多,如手持、車載和艦載等類型,他們所用的硬件和操作系統(tǒng)各不相同,而上層應(yīng)用軟件往往只針對其中一種操作系統(tǒng)而開發(fā),因而減弱了應(yīng)用軟件的通用性,降低各類導(dǎo)航設(shè)備間的互通互聯(lián)互操作能力,阻礙了信息共享。在地圖顯示處理技術(shù)方面,當(dāng)要顯示海量的數(shù)據(jù),特別是復(fù)雜的軍事地理要素時,由于嵌入式在計算能力、內(nèi)存大小和存儲資源方面的限制,使圖形平臺和地理信息服務(wù)的處理速度緩慢,實時性不強,若用于戰(zhàn)場上將難以適應(yīng)瞬息萬變的戰(zhàn)場環(huán)境。
鑒于以上原因,可靠性高、性能優(yōu)良、能滿足戰(zhàn)術(shù)需求的嵌入式導(dǎo)航終端應(yīng)具備如下特征:
(1) 適合嵌入式系統(tǒng)、桌面系統(tǒng)使用,能應(yīng)用于多種操作系統(tǒng)和多種硬件平臺,具有統(tǒng)一的輸入輸出接口,代碼能夠方便的移植;
(2) 在多操作系統(tǒng)和多處理器環(huán)境基礎(chǔ)上,支持可裁剪、可定制的通用導(dǎo)航功能構(gòu)件庫;
(3) 具有較強的實時顯示功能,實現(xiàn)快速地圖瀏覽、地圖縮放、平滑漫游;
(4) 具有方便靈活的圖形用戶界面GUI系統(tǒng),提供統(tǒng)一的圖形編程接口函數(shù),實現(xiàn)地圖、地理要素符號的快速繪制與實時顯示,支持用戶對GUI系統(tǒng)的動態(tài)配置和裁剪。
本文將從4個方面介紹高性能嵌入式導(dǎo)航終端的改進設(shè)計。
1 建立通用嵌入式軟件支撐平臺
目前,中間件(Middleware)在信息技術(shù)領(lǐng)域應(yīng)用非常廣泛。利用中間件可以很方便地開發(fā)、集成、升級和維護應(yīng)用系統(tǒng),降低應(yīng)用軟件開發(fā)的成本,提高開發(fā)效率[2]。在嵌入式導(dǎo)航終端軟件設(shè)計中引入中間件的概念,搭建通用軟件支撐平臺,該平臺是位于底層硬件、操作系統(tǒng)平臺之上,應(yīng)用層之下的中間適配層,包括操作系統(tǒng)的適配和對硬件的驅(qū)動。該層向下屏蔽硬件平臺或操作系統(tǒng)平臺的差異,向上為應(yīng)用層提供統(tǒng)一的標(biāo)準接口。不管底層的軟件怎樣更新?lián)Q代,只需改變中間適配層的幾個參數(shù),保持對上層的接口定義不變,就可以直接將應(yīng)用程序移植;所有代碼只需編寫一次就可以在其他系統(tǒng)上運行,大大縮短了系統(tǒng)研制的周期,提高了開發(fā)效率,同時還保證了系統(tǒng)的高伸縮性、易升級性和穩(wěn)定性。
通用嵌入式導(dǎo)航終端體系結(jié)構(gòu)如圖1所示,該系統(tǒng)包括:硬件平臺、操作系統(tǒng)平臺、中間適配層、地理信息功能模塊層和應(yīng)用層。
在通用支撐平臺上,硬件驅(qū)動面向的是從具體設(shè)備中抽象出來的無差別的邏輯設(shè)備,解決對邏輯設(shè)備的管理、調(diào)度以及從邏輯設(shè)備到具體物理設(shè)備的映射問題。提供一系列硬件管理功能,包括中斷管理、設(shè)備管理、資源管理、時鐘管理、看門狗等。操作系統(tǒng)適配通過建立統(tǒng)一的線程接口、優(yōu)先級映射關(guān)系以及多任務(wù)保護等,屏蔽底層具體操作系統(tǒng)的差異,提供與操作系統(tǒng)無關(guān)的調(diào)用接口,并實現(xiàn)這些調(diào)用接口到具體操作系統(tǒng)的直接或間接路由,該調(diào)用接口由操作系統(tǒng)提供的API特征和導(dǎo)航應(yīng)用軟件調(diào)用需求確定。
2 功能模塊構(gòu)件化
基于構(gòu)件的軟件開發(fā)技術(shù)近年來得到突飛猛進的發(fā)展,構(gòu)件是抽取應(yīng)用系統(tǒng)中相對穩(wěn)定的成分[3],封裝了其設(shè)計和實現(xiàn)的、能向外部提供接口的、相對獨立的軟件實體,其可復(fù)用,并用以構(gòu)造其他軟件系統(tǒng)的軟件單元。本文將構(gòu)件技術(shù)應(yīng)用于導(dǎo)航終端軟件中,解決開放性和復(fù)用性不強的問題。
依據(jù)嵌入式環(huán)境特點和導(dǎo)航應(yīng)用需求,對構(gòu)件進行抽象和提煉,劃分出地圖瀏覽、定位、導(dǎo)航、地圖量算、信息查詢、地圖標(biāo)繪、路徑規(guī)劃、三維引擎等獨立的功能構(gòu)件。各個構(gòu)件內(nèi)部實現(xiàn)雖各不相同,但提供給軟件框架的接口和對構(gòu)件的描述方法卻是無差別的。所以在設(shè)計構(gòu)件時采用所有構(gòu)件通用的數(shù)據(jù)結(jié)構(gòu),每個構(gòu)件必須包括GisComInfo,GisComConfig,GisComRun三個接口。
CM = {GisComInfo,GisComConfig,GisComRun};
Interface GisComInfo{
char*Name;
char* Type;
char* Version;
char* Creator;
char* Time;
}
Interface GisComConfig{
bool GisCom[CD#*2]Init(void);
bool GisCom[CD#*2]Release(void);
}
Interface GisComRun{
void GisCom[CD#*2]MsgProc(MESSAGE *msg);
void GisCom[CD#*2]ScreenDisp(void);
void Expand (void);
}
其中,GisComInfo接口提供構(gòu)件描述信息,包括構(gòu)件的名稱、類型、版本、創(chuàng)建者、創(chuàng)建時間等信息;GisComConfig接口主要完成構(gòu)件加載和卸載時的初始化(GisCom[CD#*2]Init)和釋放(GisCom[CD#*2]Release)工作;GisComRun為構(gòu)件運行的主體接口,主要包括構(gòu)件的消息處理(GisCom[CD#*2]MsgProc)和屏幕顯示函數(shù)(GisCom[CD#*2]ScreenDisp),函數(shù)Expand則留作構(gòu)件的擴展之用。
用戶可以根據(jù)具體的應(yīng)用需求從導(dǎo)航構(gòu)件庫中選取適當(dāng)?shù)臉?gòu)件,在相應(yīng)的軟件構(gòu)架下像“搭積木”一樣方便快速地完成軟件的集成,例如要構(gòu)建一個簡單的具有定位導(dǎo)航功能的可視化系統(tǒng),需要選擇地圖瀏覽構(gòu)件、定位構(gòu)件和導(dǎo)航構(gòu)件。以上過程稱之為構(gòu)件的組裝,如圖2所示,系統(tǒng)初始化后通過構(gòu)件注冊函數(shù)GISCom[CD#*2]Regist()將選取的所有構(gòu)件載入系統(tǒng)構(gòu)件鏈,運行遍歷系統(tǒng)構(gòu)件鏈上的構(gòu)件,根據(jù)一定的調(diào)度規(guī)則對鏈上有效構(gòu)件的相關(guān)接口進行調(diào)用,組成新的應(yīng)用系統(tǒng),完成相應(yīng)的應(yīng)用功能?!凹床寮从谩钡膽?yīng)用系統(tǒng)快速構(gòu)造法,提高了開發(fā)效率,并且使應(yīng)用軟件更加規(guī)范,更加可靠。
3 基于多任務(wù)的地圖顯示策略
地圖瀏覽是導(dǎo)航系統(tǒng)的核心模塊,通過數(shù)據(jù)讀取與組織、文件緩存和地圖顯示功能實現(xiàn)地圖的選擇、顯示、放大、縮小、漫游。本文采取多任務(wù)調(diào)度的方式進行這一系列的地圖顯示處理,他的工作原理是:利用CPU空閑時間完成地圖數(shù)據(jù)的讀取、組織等預(yù)處理工作,并將處理結(jié)果以消息的方式通知主線程,由主線程調(diào)度顯示任務(wù)完成地圖顯示。傳統(tǒng)的單任務(wù)機制下,程序設(shè)計采用順序執(zhí)行方式,程序的可讀性和可維護性差,調(diào)度不便。而多任務(wù)程序結(jié)構(gòu)將數(shù)據(jù)讀取、數(shù)據(jù)組織、文件緩存等任務(wù)并行執(zhí)行,工作流程如圖3所示。將各任務(wù)設(shè)置優(yōu)先級,級別較高的能得到及時處理;當(dāng)任務(wù)處理完成后,將自身掛起,交出處理器控制權(quán),使得較低優(yōu)先級別的任務(wù)能夠及時得到運行,保證了任務(wù)調(diào)度的公平性;當(dāng)系統(tǒng)中所有任務(wù)都處于掛起狀態(tài)時,可以讓處理器進入空閑狀態(tài)或休眠模式。
多任務(wù)的顯示策略將耗時的數(shù)據(jù)處理過程放在系統(tǒng)空閑時間進行,并且各個子任務(wù)在自己的時間片內(nèi)運行,通過設(shè)計合理的時間片大小和任務(wù)優(yōu)先級,減少延時對CPU的占用,提高CPU的資源利用率,從而提高了顯示的實時性。
4 有效的GUI設(shè)計
圖形用戶界面(Graphical User Interface,GUI)是提供用戶同導(dǎo)航設(shè)備交互的模塊,位于操作系統(tǒng)之上,向用戶提供豐富的圖形編程接口,方便用戶快速編制友好的界面應(yīng)用程序。本文采用分層式組件設(shè)計,將GUI模塊劃分為設(shè)備驅(qū)動層、圖形引擎層、GUI應(yīng)用程序接口層,體系結(jié)構(gòu)如圖4所示。設(shè)備驅(qū)動層實現(xiàn)圖形設(shè)備接口(GDI)功能,將圖形指令和對屏幕、鍵盤、鼠標(biāo)/觸筆等實際操作對應(yīng)起來,實現(xiàn)輸入/輸出控制,提供對不同芯片、不同操作系統(tǒng)以及不同顯示模式的支持;圖形引擎層實現(xiàn)圖形設(shè)備管理和基本繪圖操作功能,例如畫點、畫線、區(qū)域填充、調(diào)色板等;GUI應(yīng)用程序接口提供各種GUI對象(如窗口、對話框、控件、菜單等)的應(yīng)用編程接口函數(shù)。GUI系統(tǒng)應(yīng)用程序接口API(Application Programming Interface)向用戶提供圖形設(shè)備初始化與析構(gòu)、設(shè)備的應(yīng)用與圖形API三大功能。
該分層體系結(jié)構(gòu)使上層設(shè)計與設(shè)備無關(guān),便于GUI系統(tǒng)封裝,可移植性強,方便用戶進行擴展和修改,例如,在圖形引擎層加入專為軍標(biāo)符號庫提供的繪圖設(shè)備接口,便成為軍用導(dǎo)航設(shè)備。另外,操作系統(tǒng)抽象層為GUI系統(tǒng)屏蔽了底層的差異,使GUI系統(tǒng)具有通用性,能夠跨平臺使用;多線程調(diào)度與多窗口管理機制,便于實時性操作。
5 結(jié) 語
本設(shè)計方案已應(yīng)用于某導(dǎo)航定位系統(tǒng)中,性能測試結(jié)果表明:中間件及構(gòu)件化技術(shù)的引入不僅提高了導(dǎo)航應(yīng)用軟件的可復(fù)用性和開發(fā)效率,使導(dǎo)航系統(tǒng)能運行于多操作系統(tǒng)和多硬件平臺;同時,多任務(wù)調(diào)度策略提高了地圖瀏覽的實時性;GUI系統(tǒng)具有良好的跨平臺特性,能快速繪制地圖中的各種地理要素??傮w上,改進的設(shè)計方法增強了異構(gòu)環(huán)境下各嵌入式導(dǎo)航終端之間的互通、互聯(lián)、互操作,更加具有實用性。
參 考 文 獻
[1]孫柏林.從自成體系到嵌為一體[CD2]軍用嵌入式系統(tǒng)漫談[J].自動化博覽,2004,21(4):5-8.
[2]詹肖華.中間件技術(shù)及其應(yīng)用[J].科技資訊,2005(24):80-81.
[3]申利民.柔性軟件開發(fā)技術(shù)[M].北京:國防工業(yè)出版社,2003.
[4]傅音翔,王直杰,張玨.一種基于構(gòu)件的軟件開發(fā)方法[J].微計算機信息,2006,22(3):228-230.
[5]周航慈,吳光文.基于嵌入式實時操作系統(tǒng)的程序設(shè)計技術(shù)[M].北京:北京航空航天大學(xué)出版社,2006.
[6]宋立強,許強.基于μC/OS Ⅱ的圖形界面系統(tǒng)的設(shè)計與應(yīng)用[J].微計算機信息,2005,21(4):129-131.
作者簡介
盧 青 女,1983年出生,云南昆明人,碩士研究生。主要從事嵌入式系統(tǒng)開發(fā)應(yīng)用與地理信息系統(tǒng)方面的研究。