基于嵌入式Linux系統(tǒng)的車載導(dǎo)航終端
摘要: 本文研究的是嵌入式系統(tǒng)在車載導(dǎo)航終端中的應(yīng)用,以Intel PXA255處理器為核心處理器,以嵌入式Linux系統(tǒng)為操作系統(tǒng),結(jié)合USB攝像頭,GPS接收機(jī),CDMA無(wú)線傳輸模塊等外設(shè)構(gòu)建了基于嵌入式系統(tǒng)的多功能車載導(dǎo)航系統(tǒng)。系統(tǒng)達(dá)到了設(shè)計(jì)要求,具有一定實(shí)用價(jià)值。
關(guān)鍵詞: ARM;嵌入式系統(tǒng);Linux;車載導(dǎo)航
車載導(dǎo)航系統(tǒng)是ITS系統(tǒng)(智能交通系統(tǒng))的重要組成部分,它將衛(wèi)星定位技術(shù)(GPS),地理信息系統(tǒng)(GIS)以及現(xiàn)代通信技術(shù)融于一身。主要功能是將裝有GPS接收機(jī)的移動(dòng)載體的動(dòng)態(tài)位置、時(shí)間、狀態(tài)等信息實(shí)時(shí)的通過(guò)無(wú)線網(wǎng)絡(luò)鏈接到指揮控制中心,而后在具有強(qiáng)大地理信息處理和查詢功能的電子地圖上進(jìn)行載體運(yùn)動(dòng)軌跡的顯示,并能對(duì)載體的準(zhǔn)確位置、速度、運(yùn)動(dòng)方向、車輛狀態(tài)等基本信息進(jìn)行監(jiān)控和查詢。
總體設(shè)計(jì)方案
系統(tǒng)采用Intel公司Xscal架構(gòu)的PXA255處理器為核心處理器,操作系統(tǒng)選用嵌入式Linux系統(tǒng)。本系統(tǒng)所包含的功能如下:視頻取證功能、衛(wèi)星防盜功能、無(wú)線追蹤功能、輔助倒車功能等。
本系統(tǒng)整體功能見(jiàn)圖1。其中多功能車載GPS終端分布在各移動(dòng)的車輛上,負(fù)責(zé)接收GPS衛(wèi)星定位信息,通過(guò)GPS接收機(jī)中的處理器解算出車輛所處的位置坐標(biāo)。坐標(biāo)數(shù)據(jù)經(jīng)處理后可以顯示在本機(jī)上,由 CDMA模塊,以短信的形式將車輛的位置、狀態(tài)等信息發(fā)送至公網(wǎng),公網(wǎng)將接收到的車輛定位信息傳送至監(jiān)控中心,在監(jiān)控中心經(jīng)過(guò)計(jì)算機(jī)系統(tǒng)的處理后與計(jì)算機(jī)系統(tǒng)上的GIS電子地圖進(jìn)行匹配,并在地圖上動(dòng)態(tài)顯示坐標(biāo)的正確位置。同時(shí),系統(tǒng)可以通過(guò)連接在終端上的視頻采集設(shè)備(USB攝像頭)對(duì)當(dāng)前的圖像以一定的速率采集并保存成視頻信息以供日后事故鑒定之用,也可選擇視頻實(shí)時(shí)顯示模式,作為輔助倒車之用。此外,截取的關(guān)鍵視頻圖片還可以通過(guò)無(wú)線網(wǎng)絡(luò)傳送到監(jiān)控中心,實(shí)現(xiàn)遠(yuǎn)程無(wú)線圖像監(jiān)控。
圖1系統(tǒng)整體功能模塊構(gòu)成示意圖
各主要功能模塊設(shè)計(jì)
本系統(tǒng)車載終端硬件部分主要包括X-Hyper Xscale PXA255B開(kāi)發(fā)板,液晶屏,GPS接收板,USB攝像頭、CDMA通信模塊等。軟件模塊主要包括GPS接收模塊、語(yǔ)音留言模塊、視頻取證與輔助倒車模塊、無(wú)線監(jiān)控模塊,并設(shè)計(jì)有統(tǒng)一的圖形用戶界面。
GPS定位模塊
GPS接收機(jī)采用u-Blox RCB-LC,接收數(shù)據(jù)采用NMEA0183格式,波特率設(shè)為9.6Kbps。GPS模塊的工作流程圖如圖2所示,對(duì)GPS數(shù)據(jù)的讀取需要通過(guò)對(duì)串口的操作來(lái)實(shí)現(xiàn)。在Linux下,所有的硬件設(shè)備都被看成是普通文件,可以通過(guò)和普通文件相同的標(biāo)準(zhǔn)系統(tǒng)調(diào)用來(lái)完成打開(kāi)、關(guān)閉、讀取和寫入設(shè)備等操作。系統(tǒng)中每一個(gè)設(shè)備都用一種特殊的設(shè)備相關(guān)文件來(lái)表示,存放在/dev/目錄下。在Linux中,對(duì)每一個(gè)設(shè)備的描述是通過(guò)主設(shè)備號(hào)和次設(shè)備號(hào)來(lái)實(shí)現(xiàn)的。由同一個(gè)設(shè)備驅(qū)動(dòng)控制的所有設(shè)備具有相同的主設(shè)備號(hào),主設(shè)備號(hào)描述控制這個(gè)設(shè)備的驅(qū)動(dòng)程序,即驅(qū)動(dòng)程序與主設(shè)備號(hào)是一一對(duì)應(yīng)的;次設(shè)備號(hào)用來(lái)區(qū)分同一個(gè)驅(qū)動(dòng)程序控制的不同設(shè)備。
圖2 GPS模塊的工作流程圖
視頻取證與輔助倒車模塊
視頻取證與輔助倒車模塊的具體功能如下:當(dāng)車輛啟動(dòng)時(shí),由置于車前的攝像頭采集圖像數(shù)據(jù)。采集數(shù)據(jù)的形式分為手動(dòng)采集和自動(dòng)采集兩種。手動(dòng)采集主要用于小的交通摩擦,在車輛的行駛速度沒(méi)有發(fā)生較大變化時(shí)車主可以根據(jù)自身需要手動(dòng)選擇;自動(dòng)采集,主要用于當(dāng)車輛發(fā)生大的交通事故時(shí),車輛行駛速度由于碰撞發(fā)生較大變化,系統(tǒng)會(huì)自動(dòng)啟動(dòng)視頻取證功能。在車尾安裝攝像頭,用于輔助駕駛員倒車。由于攝像頭安裝在車尾正后方,恰好可拍攝到駕駛員后視鏡看不到的地方。而且攝像頭的傾角偏下,可很好的查看地面是否有突起的障礙物,以輔助駕駛員倒車。視頻取證模塊程序流程圖與輔助倒車模塊程序流程圖如圖3所示。
圖3 視頻取證與輔助倒車模塊程序流程圖
(a) 視頻取證模塊流程圖
(b) 輔助倒車模塊流程圖
攝像頭屬于視頻類設(shè)備,遵循Video for Linux (V4L)標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)定義了一套API接口,內(nèi)核、驅(qū)動(dòng)、應(yīng)用程序都以這個(gè)接口為標(biāo)準(zhǔn)進(jìn)行交流。
無(wú)線傳輸模塊
無(wú)線傳輸模塊系統(tǒng)構(gòu)成如圖4所示,通過(guò)具有無(wú)線上網(wǎng)功能的CDMA1X無(wú)線通信模塊實(shí)現(xiàn)無(wú)線上網(wǎng),數(shù)據(jù)收發(fā)。短信收發(fā)程序使用AT命令進(jìn)行相關(guān)操作,無(wú)線傳輸模塊實(shí)現(xiàn)原理如下:
圖 4 無(wú)線傳輸系統(tǒng)構(gòu)成
(1) 手機(jī)向終端發(fā)送帶有“position”字串的短信,終端收到短信后,結(jié)合GPS模塊,得到當(dāng)前系統(tǒng)所在的經(jīng)緯度,然后以短信的方式返回給手機(jī)。
(2) 手機(jī)向終端發(fā)送帶有“l(fā)isten”字串的短信,終端收到短信后,主動(dòng)的給手機(jī)回電話。
(3) 手機(jī)向終端發(fā)送帶有“stop”字串的短信,終端收到短信后,自動(dòng)掛斷當(dāng)前的電話。
(4) 手機(jī)向終端發(fā)送帶有“internetxxx. xxx.xxx.xxx”字串的短信,終端收到短信后,提取IP xx.xxx.xxx.xxx,并主動(dòng)撥號(hào)上網(wǎng),上網(wǎng)后,和服務(wù)器進(jìn)行綁定嘗試。如果綁定成功,則結(jié)合GPS和攝像頭進(jìn)行GPS和攝像頭數(shù)據(jù)的傳送;服務(wù)器收到終端的數(shù)據(jù)后,分別將圖片數(shù)據(jù)存為文件并顯示,將GPS數(shù)據(jù)發(fā)送給電子地圖,這樣就可實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。如果綁定失敗,則終端會(huì)自動(dòng)下線。
(5) 在數(shù)據(jù)傳送過(guò)程中,無(wú)論服務(wù)器關(guān)閉或服務(wù)器向終端發(fā)送停止命令終端都會(huì)自動(dòng)下線。
(6) CDMA1X的短信電話功能和上網(wǎng)傳數(shù)據(jù)功能不能同時(shí)占用信道,所以在進(jìn)行短信或電話功能時(shí)不能進(jìn)行上網(wǎng)數(shù)據(jù)業(yè)務(wù),反之亦然。
當(dāng)接收到的短信中含有上網(wǎng)的有效信息時(shí),終端便開(kāi)始上網(wǎng),使用PPP撥號(hào)協(xié)議。終
端成功上網(wǎng)后,便可進(jìn)行數(shù)據(jù)傳送。為了保證數(shù)據(jù)傳送的穩(wěn)定性(相對(duì)UDP協(xié)議不亂序,不丟包等),程序采用了TCP協(xié)議傳送。ppp撥號(hào)上網(wǎng)最重要的部分,負(fù)責(zé)打開(kāi)串口并設(shè)置,引導(dǎo)客戶端與服務(wù)器進(jìn)行會(huì)話,引導(dǎo)進(jìn)行身份密碼驗(yàn)證,引導(dǎo)把ttySx(串口)和ppp0(ppp撥號(hào)上網(wǎng)用來(lái)處理網(wǎng)絡(luò)業(yè)務(wù)中的一系列操作)綁定,進(jìn)行正常的數(shù)據(jù)傳送業(yè)務(wù)等。
/usr/sbin/chat 用來(lái)和服務(wù)器進(jìn)行會(huì)話,對(duì)超時(shí)、無(wú)應(yīng)答等進(jìn)行設(shè)置,和服務(wù)器進(jìn)
行身份密碼驗(yàn)證。為保證無(wú)線modem的正常工作,使用的方法有:
(1)收到一條短信處理完就刪除掉,如收到的短信中沒(méi)有相關(guān)內(nèi)容,則會(huì)自動(dòng)刪除。這樣模塊收到的短信總數(shù)永遠(yuǎn)不會(huì)超過(guò)20條的上限,可以保證短信的正常收發(fā)(如果短信已滿,則收不到新的短信)。
(2)由于無(wú)線上網(wǎng)和手機(jī)業(yè)務(wù)(短信和打電話)各自對(duì)無(wú)線信道的獨(dú)占性,即打電話時(shí)不能上網(wǎng),但可以收發(fā)短信,上網(wǎng)時(shí)收不到短信和接不了電話。程序采取的措施是電話結(jié)束后發(fā)送stop短信保證不再占有信道,上網(wǎng)過(guò)程中遇到一些情況,比如:服務(wù)器關(guān)閉,未打開(kāi),綁定失敗,服務(wù)器要求停止傳送等,都會(huì)自動(dòng)下線,并恢復(fù)到上網(wǎng)前的狀態(tài)。
結(jié)語(yǔ)
本課題在設(shè)計(jì)過(guò)程中,對(duì)硬件實(shí)現(xiàn)采用集成化的思想,充分利用開(kāi)發(fā)板的資源;軟件設(shè)計(jì)采用模塊化思想,提高系統(tǒng)的可擴(kuò)展性和可維護(hù)性,增長(zhǎng)軟件的生命周期。設(shè)計(jì)初步實(shí)現(xiàn)了全天候定位、視頻圖像采集與無(wú)線傳輸?shù)裙δ艿腉PS車載導(dǎo)航終端。
參考文獻(xiàn):
1. lessandro Rubini&Jonathan, Linux Device Driver,O'Reilly&Associates,2001
2. Detlef Fliegl,Programming Guid for Linux USB Device Driver,www.usb.org,2000
評(píng)論