車輛導航是一門融合了汽車、計算機、通信、交通、系統科學等領域技術的課題,一直是國內外眾多高科技公司和高校研究的重點。
對比而言,國內的導航系統發展比較緩慢,在硬件制造、軟件功能、電子地圖等方面與國外都有較大差距,迄今為止,真正實用的高質量導航產品寥寥無幾;而國外的導航系統雖然軟硬件水平先進,但受電子地圖數據庫等因素的制約,也沒有大規模進入國內市場。
近年來,嵌入式系統憑借強大的功能、小巧的體積、極低的功耗等優良特性得以突飛猛進的發展,逐漸滲透到了生活的各個方面,為車輛導航系統的發展帶來了新的動力。
本文介紹了一種嵌入式車輛導航系統的設計方案,采用基于X86架構的ETX(EmbeddedTechnologyExtended)硬件平臺和VxWorks嵌入式操作系統,在軟硬件方面都能較好的滿足導航系統的要求,具有良好的應用前景。
1、車輛導航系統的組成
對各部分簡要介紹如下:
路徑引導:引導用戶沿著所規劃的路徑行駛;
人機接口:提供友好的界面允許用戶與系統進行人機交互;
電子地圖數據庫:包含以預定格式存貯的數字地圖信息,是系統的軟件平臺;
地圖匹配模塊:通過適當的匹配和識別過程來確定車輛在地圖上的位置;
路徑規劃:根據地圖數據庫及實時定位信息幫助駕駛員規劃路線;
定位模塊:通過GPS、慣性導航系統或移動通信等方法對車輛進行定位。
結合實際的軟硬件結構,本系統分成了四個層:最底層為硬件平臺層,包含了ETX嵌入式CPU模塊以及必要的傳感器/子模塊。
上面三層為軟件層,其中設備驅動層在硬件平臺和操作系統之間充當橋梁的作用,為上一層提供了與硬件設備無關的統一接口;VxWorks系統層提供庫函數、應用程序接口、任務調度機制等為用戶程序提供支持;應用軟件層是用戶自行開發的程序,這里主要包括電子地圖和導航應用程序,也是本系統的核心部分。下面從硬件和軟件兩方面來對系統進行介紹。
2、系統的硬件結構
(1)CPU模塊
車輛導航系統對硬件平臺的要求為:小型化、低功耗、接口豐富,并能適應復雜的環境。本系統選用的ETX嵌入式CPU模塊能夠完全滿足這些要求。它采用了IntelPentiumIII處理器,使用ACPI,APM1.2電源管理減低了功耗,使系統無需風扇裝置散熱。
此外它采用了VIAVT8603/VT82C686A芯片組、S3Savage4顯卡和VIA-enhanced聲卡,具有2個EIDE接口,支持UltraDMA/33,以及4個USB1.1,2個串口,1個EPP并口等。
ETX還提供了ISA總線接口和PCI總線接口,并具有看門狗,可以有效的解決死機問題。背面的4×100PIN總線定義了各種標準接口信號,使用時只需在母板設計對應的插座即可,開發起來非常方便
(2)串口擴展模塊
考慮到系統需要多個串口(與上位機通信、接收GPS信息、收發短消息、與語音模塊通信等),而ETX模塊只自帶了兩個串口,故采用了TL16C554進行串口擴展。
它內部帶有16字節收發FIFO的通用異步收發器,具有獨立的收發控制電路控制4路標準的串行接口,通過軟件可分別設置每一路的中斷允許、波特率、數據幀格式等信息。
TL16C554與ETX的ISA總線相連,通過一片CPLD完成兩者時序的轉換。由于系統的中斷資源比較緊張,而且考慮到各子模塊的數據不是很頻繁,因此采用了4個擴展串口共享中斷的方案。
(3)路徑引導模塊
本系統通過語音方式進行路徑引導,采用了安徽科大訊飛公司生產的XF-S3111中文語音合成芯片。它是利用嵌入式中文語音合成領域的最新研究成果——InterSound3.0中文語音合成系統設計的一款中文語音合成芯片,通過異步串口接收待合成的文本,直接合成為語音輸出,體積較小,使用方便,是一種完整的物美價廉的語音解決方案。
(4)無線通訊模塊
本系統的無線通訊部分采用了短消息方式,選用了深圳科靈通科技有限公司生產的短消息模塊DTR2000。它主要由西門子公司生產的工業級GSM模塊和一款高性能的處理器組成,可通過短消息功能實現無線數據傳送的功能,且支持中文傳輸。其傳輸數據透明,協議簡單,能夠方便的進行模塊之間以及模塊與手機之間的通訊。
(5)其它
本系統采用了GPS定位方式,通過彩色LCD進行電子地圖及定位點的顯示,并采用了可與ETX直接相連的CF卡作為存儲設備。
3、系統的軟件設計
由于車輛導航系統對多任務性、實時性、穩定性的要求比較高,因此本系統采用了VxWorks嵌入式操作系統。它包括了進程管理、存儲管理、設備管理、文件系統管理、網絡協議及系統應用等幾個部分,而且高度可裁減,只占用很小的存儲空間,保證了其能以較高的效率運行于導航系統中。
VxWorks包括微內核wind、高級的網絡支持、強有力的文件系統和I/O管理、C 和其他標準支持等核心功能。微內核wind處于VxWorks操作系統的核心,支持所有的實時特征:快速任務切換、中斷支持、搶占式和時間片輪轉調度等,能夠很好的滿足導航系統對實時性和多任務的要求。
本系統的軟件功能分為VxWorks環境下的驅動程序和應用軟件兩部分。前者主要是對TL16C554驅動的開發,而其它設備(如顯卡,網卡等)由于VxWorks自帶了X86的相關驅動而不必涉及。TL16C554的驅動開發可參照VxWorks自帶的串行驅動模板來進行,這里只簡單描述一下開發步驟。
VxWorks系統的串行設備驅動不是直接掛在IO系統中,而是由虛擬設備ttyDrv在中間充當轉換層。因此驅動需要根據系統接口實現驅動并掛到ttyDrv上。
首先需要修改config.h、sysSerial.c等文件中的相關參數,然后再編寫具體的驅動程序實現設備的I/O操作,包括TL16C554的初始化函數、I/O控制函數、中斷處理函數等。
這樣,系統在初始化時就會將設備和驅動程序安裝好,應用程序就可以按照與設備無關的統一方式進行I/O操作了。
應用軟件開發包括電子地圖和導航應用程序設計:
(1)電子地圖的設計
電子地圖的設計包括圖形界面和地圖數據庫兩部分。本系統通過VxWorks的WindML(WindRiverMultimediaLibrary)實現了電子地圖的圖形界面。
WindML主要是用來實現基本的圖形、視頻和音頻技術以及設計標準設備驅動程序框架,它提供了一個統一的圖形硬件接口以及處理輸入設備和輸入設備事件的能力。電子地圖數據庫的數據結構采用了Arc—Node結構。
該結構的基本原理是采用“以直代曲”的思想,即在允許的精度范圍內,通過加入多個節點將現實中的真實道路用一系列線段來模擬或近似表示,整個道路網絡就是由Arc(小段的線段)和Node(Arc的兩個端點)組成,并具有明確的拓撲關系,可以實現路徑規劃。本系統實現了北京市四環以內的電子地圖,并實現了地圖瀏覽、地點查詢、路徑規劃等功能。
(2)導航應用程序的設計
導航應用程序包括了對電子地圖的操作、GPS定位、收發短消息、語音提示、人機接口等功能的實現。在設計中,根據VxWorks提供的良好的多任務特性,將不同的導航功能模塊分給了不同任務去執行,通過任務間通信機制保證多任務的同步。其中系統的主任務負責實現硬件設備的初始化(如串口、看門狗的配置等)、電子地圖的初始化和首次顯示、發起子任務等功能。
主任務中發起了四個子任務,分別負責響應用戶的輸入、標準串口的數據輸入、ISA總線16C554的數據輸入以及實現路徑規劃算法。
前三個功能獨立出來是因為這些功能的觸發時間都是不確定的,需要單獨監視;最后一個則因為需要較大的運算量。這里只以接收串口數據的子任務為例進行分析。
該任務需要監視兩個串口的信息:GPS數據和從語音模塊返回的狀態信息。VxWorks將I/O系統設計成為與設備無關的接口,因此對串口的操作可以視為對文件的操作。
串口的打開,關閉和寫操作均比較簡單,而串口的讀操作采用了select函數,利用其觸發機制阻塞任務。有數據到來時,任務才會被激活并從串口讀取數據,然后通過任務間通信機制,通知主任務進行相應的處理,如進行地圖更新、輸出語音提示等操作。
4、結束語
經過實驗,本系統能夠穩定可靠的運行。該系統展示了其GPS定位和路徑規劃的功能。本系統功能的實現證明了ETX平臺以及VxWorks操作系統的優良性能,表明兩者的結合具有開發簡單、性能可靠等優點,有著良好的應用前景。
評論
查看更多