摘 要:嵌入式導航終端是嵌入式地理信息系統(Embedded Geographic Information System,EGIS)的典型應用。由于嵌入式技術的發展以及用戶對導航應用需求的不斷增加,軟件可重用性、互通互聯互操作性成為導航應用軟件發展的新方向。采用中間件和構件化的設計思想,對導航終端體系結構進行改進設計,并給出系統部分模塊的設計模型和關鍵技術,滿足了實時性和可靠性要求,增強了系統的通用性。
關鍵詞:嵌入式導航終端;中間件;構件;多任務;嵌入式GUI
中圖分類號:TP3021 文獻標識碼: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
嵌入式導航終端將導航引擎嵌入到小型移動設備上,實現導航數據的采集、處理、傳輸、存儲、管理、查詢檢索、分析、表達和應用功能,該系統具有體積小、功耗低、攜帶方便等特點。特別是在軍事領域中,嵌入式導航終端有著廣闊的發展前景[1],他能有效地應用于單兵作戰系統、聯絡指揮系統、巡邏和追捕系統、航空中的調度指揮等系統中,能夠讓作戰個體精確地確定自己的位置,為特殊地形下的部隊集結或特定目的行進提供保證。
目前,國內外市場上嵌入式導航終端種類繁多,如手持、車載和艦載等類型,他們所用的硬件和操作系統各不相同,而上層應用軟件往往只針對其中一種操作系統而開發,因而減弱了應用軟件的通用性,降低各類導航設備間的互通互聯互操作能力,阻礙了信息共享。在地圖顯示處理技術方面,當要顯示海量的數據,特別是復雜的軍事地理要素時,由于嵌入式在計算能力、內存大小和存儲資源方面的限制,使圖形平臺和地理信息服務的處理速度緩慢,實時性不強,若用于戰場上將難以適應瞬息萬變的戰場環境。
鑒于以上原因,可靠性高、性能優良、能滿足戰術需求的嵌入式導航終端應具備如下特征:
(1) 適合嵌入式系統、桌面系統使用,能應用于多種操作系統和多種硬件平臺,具有統一的輸入輸出接口,代碼能夠方便的移植;
(2) 在多操作系統和多處理器環境基礎上,支持可裁剪、可定制的通用導航功能構件庫;
(3) 具有較強的實時顯示功能,實現快速地圖瀏覽、地圖縮放、平滑漫游;
(4) 具有方便靈活的圖形用戶界面GUI系統,提供統一的圖形編程接口函數,實現地圖、地理要素符號的快速繪制與實時顯示,支持用戶對GUI系統的動態配置和裁剪。
本文將從4個方面介紹高性能嵌入式導航終端的改進設計。
1 建立通用嵌入式軟件支撐平臺
目前,中間件(Middleware)在信息技術領域應用非常廣泛。利用中間件可以很方便地開發、集成、升級和維護應用系統,降低應用軟件開發的成本,提高開發效率[2]。在嵌入式導航終端軟件設計中引入中間件的概念,搭建通用軟件支撐平臺,該平臺是位于底層硬件、操作系統平臺之上,應用層之下的中間適配層,包括操作系統的適配和對硬件的驅動。該層向下屏蔽硬件平臺或操作系統平臺的差異,向上為應用層提供統一的標準接口。不管底層的軟件怎樣更新換代,只需改變中間適配層的幾個參數,保持對上層的接口定義不變,就可以直接將應用程序移植;所有代碼只需編寫一次就可以在其他系統上運行,大大縮短了系統研制的周期,提高了開發效率,同時還保證了系統的高伸縮性、易升級性和穩定性。
通用嵌入式導航終端體系結構如圖1所示,該系統包括:硬件平臺、操作系統平臺、中間適配層、地理信息功能模塊層和應用層。

在通用支撐平臺上,硬件驅動面向的是從具體設備中抽象出來的無差別的邏輯設備,解決對邏輯設備的管理、調度以及從邏輯設備到具體物理設備的映射問題。提供一系列硬件管理功能,包括中斷管理、設備管理、資源管理、時鐘管理、看門狗等。操作系統適配通過建立統一的線程接口、優先級映射關系以及多任務保護等,屏蔽底層具體操作系統的差異,提供與操作系統無關的調用接口,并實現這些調用接口到具體操作系統的直接或間接路由,該調用接口由操作系統提供的API特征和導航應用軟件調用需求確定。
2 功能模塊構件化
基于構件的軟件開發技術近年來得到突飛猛進的發展,構件是抽取應用系統中相對穩定的成分[3],封裝了其設計和實現的、能向外部提供接口的、相對獨立的軟件實體,其可復用,并用以構造其他軟件系統的軟件單元。本文將構件技術應用于導航終端軟件中,解決開放性和復用性不強的問題。
依據嵌入式環境特點和導航應用需求,對構件進行抽象和提煉,劃分出地圖瀏覽、定位、導航、地圖量算、信息查詢、地圖標繪、路徑規劃、三維引擎等獨立的功能構件。各個構件內部實現雖各不相同,但提供給軟件框架的接口和對構件的描述方法卻是無差別的。所以在設計構件時采用所有構件通用的數據結構,每個構件必須包括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接口提供構件描述信息,包括構件的名稱、類型、版本、創建者、創建時間等信息;GisComConfig接口主要完成構件加載和卸載時的初始化(GisCom[CD#*2]Init)和釋放(GisCom[CD#*2]Release)工作;GisComRun為構件運行的主體接口,主要包括構件的消息處理(GisCom[CD#*2]MsgProc)和屏幕顯示函數(GisCom[CD#*2]ScreenDisp),函數Expand則留作構件的擴展之用。
用戶可以根據具體的應用需求從導航構件庫中選取適當的構件,在相應的軟件構架下像“搭積木”一樣方便快速地完成軟件的集成,例如要構建一個簡單的具有定位導航功能的可視化系統,需要選擇地圖瀏覽構件、定位構件和導航構件。以上過程稱之為構件的組裝,如圖2所示,系統初始化后通過構件注冊函數GISCom[CD#*2]Regist()將選取的所有構件載入系統構件鏈,運行遍歷系統構件鏈上的構件,根據一定的調度規則對鏈上有效構件的相關接口進行調用,組成新的應用系統,完成相應的應用功能。“即插即用”的應用系統快速構造法,提高了開發效率,并且使應用軟件更加規范,更加可靠。

3 基于多任務的地圖顯示策略
地圖瀏覽是導航系統的核心模塊,通過數據讀取與組織、文件緩存和地圖顯示功能實現地圖的選擇、顯示、放大、縮小、漫游。本文采取多任務調度的方式進行這一系列的地圖顯示處理,他的工作原理是:利用CPU空閑時間完成地圖數據的讀取、組織等預處理工作,并將處理結果以消息的方式通知主線程,由主線程調度顯示任務完成地圖顯示。傳統的單任務機制下,程序設計采用順序執行方式,程序的可讀性和可維護性差,調度不便。而多任務程序結構將數據讀取、數據組織、文件緩存等任務并行執行,工作流程如圖3所示。將各任務設置優先級,級別較高的能得到及時處理;當任務處理完成后,將自身掛起,交出處理器控制權,使得較低優先級別的任務能夠及時得到運行,保證了任務調度的公平性;當系統中所有任務都處于掛起狀態時,可以讓處理器進入空閑狀態或休眠模式。

多任務的顯示策略將耗時的數據處理過程放在系統空閑時間進行,并且各個子任務在自己的時間片內運行,通過設計合理的時間片大小和任務優先級,減少延時對CPU的占用,提高CPU的資源利用率,從而提高了顯示的實時性。
4 有效的GUI設計
圖形用戶界面(Graphical User Interface,GUI)是提供用戶同導航設備交互的模塊,位于操作系統之上,向用戶提供豐富的圖形編程接口,方便用戶快速編制友好的界面應用程序。本文采用分層式組件設計,將GUI模塊劃分為設備驅動層、圖形引擎層、GUI應用程序接口層,體系結構如圖4所示。設備驅動層實現圖形設備接口(GDI)功能,將圖形指令和對屏幕、鍵盤、鼠標/觸筆等實際操作對應起來,實現輸入/輸出控制,提供對不同芯片、不同操作系統以及不同顯示模式的支持;圖形引擎層實現圖形設備管理和基本繪圖操作功能,例如畫點、畫線、區域填充、調色板等;GUI應用程序接口提供各種GUI對象(如窗口、對話框、控件、菜單等)的應用編程接口函數。GUI系統應用程序接口API(Application Programming Interface)向用戶提供圖形設備初始化與析構、設備的應用與圖形API三大功能。

該分層體系結構使上層設計與設備無關,便于GUI系統封裝,可移植性強,方便用戶進行擴展和修改,例如,在圖形引擎層加入專為軍標符號庫提供的繪圖設備接口,便成為軍用導航設備。另外,操作系統抽象層為GUI系統屏蔽了底層的差異,使GUI系統具有通用性,能夠跨平臺使用;多線程調度與多窗口管理機制,便于實時性操作。
5 結 語
本設計方案已應用于某導航定位系統中,性能測試結果表明:中間件及構件化技術的引入不僅提高了導航應用軟件的可復用性和開發效率,使導航系統能運行于多操作系統和多硬件平臺;同時,多任務調度策略提高了地圖瀏覽的實時性;GUI系統具有良好的跨平臺特性,能快速繪制地圖中的各種地理要素。總體上,改進的設計方法增強了異構環境下各嵌入式導航終端之間的互通、互聯、互操作,更加具有實用性。
參 考 文 獻
[1]孫柏林.從自成體系到嵌為一體[CD2]軍用嵌入式系統漫談[J].自動化博覽,2004,21(4):5-8.
[2]詹肖華.中間件技術及其應用[J].科技資訊,2005(24):80-81.
[3]申利民.柔性軟件開發技術[M].北京:國防工業出版社,2003.
[4]傅音翔,王直杰,張玨.一種基于構件的軟件開發方法[J].微計算機信息,2006,22(3):228-230.
[5]周航慈,吳光文.基于嵌入式實時操作系統的程序設計技術[M].北京:北京航空航天大學出版社,2006.
[6]宋立強,許強.基于μC/OS Ⅱ的圖形界面系統的設計與應用[J].微計算機信息,2005,21(4):129-131.
作者簡介
盧 青 女,1983年出生,云南昆明人,碩士研究生。主要從事嵌入式系統開發應用與地理信息系統方面的研究。