基于ETX與VxWorks的嵌入式車(chē)輛導航系統的設計
(4)無(wú)線(xiàn)通訊模塊
本系統的無(wú)線(xiàn)通訊部分采用了短消息方式,選用了深圳科靈通科技有限公司生產(chǎn)的短消息模塊DTR2000。它主要由西門(mén)子公司生產(chǎn)的工業(yè)級GSM模塊和一款高性能的處理器組成,可通過(guò)短消息功能實(shí)現無(wú)線(xiàn)數據傳送的功能,且支持中文傳輸。其傳輸數據透明,協(xié)議簡(jiǎn)單,能夠方便的進(jìn)行模塊之間以及模塊與手機之間的通訊。
(5)其它
本系統采用了GPS定位方式,通過(guò)彩色LCD進(jìn)行電子地圖及定位點(diǎn)的顯示,并采用了可與ETX直接相連的CF卡作為存儲設備。
4 系統的軟件設計
由于車(chē)輛導航系統對多任務(wù)性、實(shí)時(shí)性、穩定性的要求比較高,因此本系統采用了VxWorks嵌入式操作系統。它包括了進(jìn)程管理、存儲管理、設備管理、文件系統管理、網(wǎng)絡(luò )協(xié)議及系統應用等幾個(gè)部分,而且高度可裁減,只占用很小的存儲空間,保證了其能以較高的效率運行于導航系統中。VxWorks包括微內核wind、高級的網(wǎng)絡(luò )支持、強有力的文件系統和I/O管理、C++和其他標準支持等核心功能。微內核wind處于VxWorks操作系統的核心,支持所有的實(shí)時(shí)特征:快速任務(wù)切換、中斷支持、搶占式和時(shí)間片輪轉調度等,能夠很好的滿(mǎn)足導航系統對實(shí)時(shí)性和多任務(wù)的要求。
本系統的軟件功能框圖如圖-3所示,分為VxWorks環(huán)境下的驅動(dòng)程序和應用軟件兩部分。前者主要是對TL16C554驅動(dòng)的開(kāi)發(fā),而其它設備(如顯卡,網(wǎng)卡等)由于VxWorks自帶了X86的相關(guān)驅動(dòng)而不必涉及。TL16C554的驅動(dòng)開(kāi)發(fā)可參照VxWorks自帶的串行驅動(dòng)模板來(lái)進(jìn)行,這里只簡(jiǎn)單描述一下開(kāi)發(fā)步驟。VxWorks系統的串行設備驅動(dòng)不是直接掛在IO系統中,而是由虛擬設備ttyDrv在中間充當轉換層。因此驅動(dòng)需要根據系統接口實(shí)現驅動(dòng)并掛到ttyDrv上。首先需要修改config.h、sysSerial.c等文件中的相關(guān)參數,然后再編寫(xiě)具體的驅動(dòng)程序實(shí)現設備的 I/O操作,包括TL16C554的初始化函數、I/O控制函數、中斷處理函數等。這樣,系統在初始化時(shí)就會(huì )將設備和驅動(dòng)程序安裝好,應用程序就可以按照與設備無(wú)關(guān)的統一方式進(jìn)行I/O操作了。
應用軟件的開(kāi)發(fā)包括電子地圖和導航應用程序設計兩部分的設計:
(1)電子地圖的設計
電子地圖的設計包括圖形界面和地圖數據庫兩部分。本系統通過(guò)VxWorks的WindML(Wind River Multimedia Library)實(shí)現了電子地圖的圖形界面。WindML主要是用來(lái)實(shí)現基本的圖形、視頻和音頻技術(shù)以及設計標準設備驅動(dòng)程序框架,它提供了一個(gè)統一的圖形硬件接口以及處理輸入設備和輸入設備事件的能力。電子地圖數據庫的數據結構采用了Arc—Node結構。該結構的基本原理是采用“以直代曲”的思想,即在允許的精度范圍內,通過(guò)加入多個(gè)節點(diǎn)將現實(shí)中的真實(shí)道路用一系列線(xiàn)段來(lái)模擬或近似表示,整個(gè)道路網(wǎng)絡(luò )就是由Arc(小段的線(xiàn)段)和Node(Arc的兩個(gè)端點(diǎn))組成,并具有明確的拓撲關(guān)系,可以實(shí)現路徑規劃。本系統實(shí)現了北京市四環(huán)以?xún)鹊碾娮拥貓D,并實(shí)現了地圖瀏覽、地點(diǎn)查詢(xún)、路徑規劃等功能。
(2)導航應用程序的設計
導航應用程序包括了對電子地圖的操作、GPS定位、收發(fā)短消息、語(yǔ)音提示、人機接口等功能的實(shí)現。在設計中,根據VxWorks提供的良好的多任務(wù)特性,將不同的導航功能模塊分給了不同任務(wù)去執行,通過(guò)任務(wù)間通信機制保證多任務(wù)的同步。其中系統的主任務(wù)負責實(shí)現硬件設備的初始化(如串口、看門(mén)狗的配置等)、電子地圖的初始化和首次顯示、發(fā)起子任務(wù)等功能,其流程圖可如圖-4所示。
主任務(wù)中發(fā)起了四個(gè)子任務(wù),分別負責響應用戶(hù)的輸入、標準串口的數據輸入、ISA總線(xiàn)16C554的數據輸入以及實(shí)現路徑規劃算法。前三個(gè)功能獨立出來(lái)是因為這些功能的觸發(fā)時(shí)間都是不確定的,需要單獨監視;最后一個(gè)則因為需要較大的運算量。這里只以接收串口數據的子任務(wù)為例進(jìn)行分析。該任務(wù)需要監視兩個(gè)串口的信息:GPS數據和從語(yǔ)音模塊返回的狀態(tài)信息。VxWorks將I/O系統設計成為與設備無(wú)關(guān)的接口,因此對串口的操作可以視為對文件的操作。串口的打開(kāi),關(guān)閉和寫(xiě)操作均比較簡(jiǎn)單,而串口的讀操作采用了select函數,利用其觸發(fā)機制阻塞任務(wù)。有數據到來(lái)時(shí),任務(wù)才會(huì )被激活并從串口讀取數據,然后通過(guò)任務(wù)間通信機制,通知主任務(wù)進(jìn)行相應的處理,如進(jìn)行地圖更新、輸出語(yǔ)音提示等操作。
5 結束語(yǔ)
經(jīng)過(guò)實(shí)驗,本系統能夠穩定可靠的運行。系統的實(shí)驗結果可如圖-5所示,展示了其GPS定位和路徑規劃的功能。本系統功能的實(shí)現證明了ETX平臺以及VxWorks操作系統的優(yōu)良性能,表明兩者的結合具有開(kāi)發(fā)簡(jiǎn)單、性能可靠等優(yōu)點(diǎn),有著(zhù)良好的應用前景。
參 考 文 獻
[1] 張其善等. 智能車(chē)輛定位導航系統及應用. 北京:科學(xué)出版社,2002
[2] 探矽工作室. 嵌入式系統開(kāi)發(fā)圣經(jīng). 北京:中國鐵道出版社,2003
[3] 陳智育等. VxWorks程序開(kāi)發(fā)實(shí)踐. 北京:人民郵電出版社,2004
[4] 何江水等. VxWorks漢字的顯示支持. 微計算機信息,2005年第五期
評論