1 引言
車載電子設(shè)備在技術(shù)水平上的不斷提高已經(jīng)成為現(xiàn)代汽車發(fā)展的重要標志之一,而車載導(dǎo)航設(shè)備是其中重要組成部分。它要將數(shù)據(jù)通訊系統(tǒng),影音娛樂系統(tǒng),定位系統(tǒng),電子控制系統(tǒng)實時顯示出來,讓用戶得到充分的駕駛信息,以ARM 及嵌入式操作系統(tǒng)為技術(shù)核心,為車輛駕駛者提供安全行駛所必需的路況、地理信息的車載導(dǎo)航系統(tǒng)目前正在全世界得到越來越廣泛的應(yīng)用,大大提高了用戶駕駛體驗與車輛運行的安全性。
但目前市場上的車載導(dǎo)航系統(tǒng)多使用 WinCE 作為操作系統(tǒng),不僅軟件使用價格昂貴,而且對硬件要求較高,運行速度偏慢。本文提出并設(shè)計了一種基于GPS 和GPRS,使用嵌入式32 位處理器和嵌入式Linux 的車載導(dǎo)航系統(tǒng)。該系統(tǒng)采用S3C2440A:32 位ARM920T內(nèi)核處理器,外部擴展GPS 接收模塊及GPRS 通訊模塊,顯示部分采用SAMSUNG 4.3 寸480×272 分辨率寬屏TFT 真彩液晶。底層采用嵌入式Linux 操作系統(tǒng),具有源碼開放、易移植、模塊化、資源豐富的優(yōu)勢。圖形用戶界面(GUI)采用Qt/Embedded 軟件進行開發(fā)。本文著重從 GPS 與GPRS 數(shù)據(jù)接收與發(fā)送, 嵌入式Linux 總體架構(gòu),多線程技術(shù)在Qt中應(yīng)用等方面進行論述。
2 系統(tǒng)總體結(jié)構(gòu)及軟件開發(fā)平臺
系統(tǒng)整體結(jié)構(gòu)如圖1 所示,本系統(tǒng)采用SAMSUNG 公司的S3C2440A嵌入式處理器,標稱工作頻率:400MHz;CPU 內(nèi)置STN/CSTN/TFT LCD 控制器,支持1024ⅹ768 分辨率以下的各種液晶;以太網(wǎng)控制器;1 通道5 線制串口,2 通道3 線制串口,CAN 接口,SPI接口,RTC實時時鐘等;通過RS232 外接GPS接收儀及GPRS模塊; 系統(tǒng)外擴64NB SDRAM,用于操作系統(tǒng)內(nèi)存空間,存放動態(tài)數(shù)據(jù)和運行程序; 系統(tǒng)外擴64MB Flash 空間,用于存放Linux 內(nèi)核,文件系統(tǒng),應(yīng)用程序和用戶數(shù)據(jù)。
圖1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)軟件基于嵌入式Linux 操作系統(tǒng),并選擇Qt/Embedded 作為圖形用戶界面(GUI)開發(fā)環(huán)境。Qt 是Trolltech 公司推出的跨平臺的應(yīng)用程序框架,Qt/Embedded 是Qt 面向嵌入式應(yīng)用的版本,一次編寫,隨處編譯。 Qt 特有的信號/槽(singal /slot)機制,加強了對象間通信的靈活性;通過裁剪去掉無關(guān)模塊可以調(diào)整庫文件的大小,適合嵌入式系統(tǒng)使用;在QT 中支持OpenGL 接口和矢量圖形格式SVG. 能充分滿足導(dǎo)航系統(tǒng)繪圖需要。系統(tǒng)從GPS實時獲取車輛位置(包括經(jīng)緯度與時間等)和運行信息(包括車速與方向等),在電子地圖上顯示相關(guān)導(dǎo)航信息,用戶通過觸摸屏操作,提供地圖漫游、地圖查詢和道路信息管理等功能。
3 GPS/GPRS 系統(tǒng)的組成原理及構(gòu)成
(1) GPS 定位基本原理
GPS 的定位原理實質(zhì)上就是測量學(xué)的空間測距定位,利用在平均20200km 高度均勻分布在6 個軌道的24 顆衛(wèi)星,發(fā)射測距信號碼和載波,用戶通過接收機接收這些信號測量衛(wèi)星至接收機之距,通過一系列方程演算,便可知地面定位坐標。用戶測得的到衛(wèi)星的距離稱為“偽距”,它不是用戶到衛(wèi)星的真正距離,其中還包括衛(wèi)星時鐘的偏差,用戶時鐘的偏差信號,傳播延遲引起的測距誤差等,因此在至少收到三顆衛(wèi)星后,即可計算出平面坐標(經(jīng)緯度)值,收到四顆則可在計算出方程值,這就是GPS 的基本定位原理。
圖 2 GPS 定位原理圖
程式中各個參數(shù)意義如下:
x,y,z 為待測點坐標的空間直角坐標。x i 、y i 、z i (i=1, 2, 3, 4)分別為4 顆衛(wèi)星在t 時刻的空間直角坐標,可由衛(wèi)星導(dǎo)航電文求得。Vti (i=1, 2, 3, 4)分別為4 顆衛(wèi)星的衛(wèi)星鐘的鐘差,由衛(wèi)星星歷提供。Vt0為接收機的鐘差。由以上方程即可解算出待測點的坐標 x,y,z 和接收機的鐘差Vt0。
(2) GPRS 網(wǎng)絡(luò)結(jié)構(gòu)及傳輸原理
GPRS 是在原有的GSM 網(wǎng)絡(luò)中增加了兩個節(jié)點:SGSN(Serving GPRS SupportNode,服務(wù)GPRS 節(jié)點)和GGSN(Gateway GPRS SupportNode,網(wǎng)關(guān)GPRS 節(jié)點),SGSN 的主要作用就是記錄車輛的當前位置信息,并在車輛和GGSN 之間完成移動分組數(shù)據(jù)的發(fā)送和接收,GGSN 主要是起網(wǎng)關(guān)作用,它可以和許多不同的數(shù)據(jù)網(wǎng)絡(luò)連接。GGSN 提供了GPRS 網(wǎng)絡(luò)與Internet 的接口,而SGSN 負責(zé)聯(lián)系移動終端和GGSN,應(yīng)此,一個完整的GPRS 通訊過程就是車載終端發(fā)出的數(shù)據(jù)先傳至BSS(Base Station System 基站系統(tǒng)),經(jīng)由GPRS 網(wǎng)絡(luò)傳至GGSN,通過GGSN 接入Internet,在Internet 上依靠TCP 協(xié)議傳給上位機,終端接收數(shù)據(jù)的流程則與此相反,GPRS 數(shù)據(jù)收發(fā)在網(wǎng)絡(luò)層使用TCP/IP 協(xié)議。
4 系統(tǒng)軟件的設(shè)計與實現(xiàn)
(1) 系統(tǒng)軟件結(jié)構(gòu)
主要由以下模塊組成:用戶界面顯示模塊、GPRS 通訊模塊、GPS 定位模塊、地圖匹配模塊、路徑規(guī)劃模塊、電子地圖模塊、底層通訊模塊等。
圖3 系統(tǒng)軟件結(jié)構(gòu)總體框圖
用戶界面顯示模塊:用戶與車載導(dǎo)航系統(tǒng)交互的平臺,通過調(diào)用其它模塊起到信息交互的作用;GPRS 通訊模塊:將用戶駕駛信息及車況信息實時傳送至遠程監(jiān)控端,不僅起到記錄車況的作用,而且還能防盜;GPS 定位模塊:實時接收衛(wèi)星定位數(shù)據(jù),包括經(jīng)緯度,時間,海拔,即時速度等;地圖匹配模塊:根據(jù)GPS 定位獲得的數(shù)據(jù),與系統(tǒng)中存儲的地圖信息進行匹配,獲得車輛周圍的地理信息,為用戶提供參照;路徑規(guī)劃模塊:用戶輸入起始坐標和終點坐標,系統(tǒng)自動計算最近道路,從而起到車輛導(dǎo)航的作用;底層通訊模塊:通過CAN 總線及232 總線,獲取車輛各種信息,從而在用戶顯示界面上顯示出來。
(2) Linux 在S3C2440 上的移植
嵌入式 Linux 管理整個導(dǎo)航系統(tǒng)的硬件設(shè)備并對所有程序進行調(diào)度,是軟件系統(tǒng)的核心。由于Linux 是面向PC 機的操作系統(tǒng),將其用于嵌入式領(lǐng)域,需要進行移植,它一般包括啟動加載代碼(Bootloader)的移植、內(nèi)核移植、驅(qū)動程序的編寫、文件系統(tǒng)的構(gòu)建等。將 U-boot 源代碼在ADS 環(huán)境下進行編譯,將編譯成功的二進制代碼燒寫到開發(fā)板所帶Flash 上,然后在上電啟動。Bootloader 首先完成硬件設(shè)備的初始化,然后設(shè)置Linux 內(nèi)核的啟動參數(shù),最后調(diào)用Liuux 內(nèi)核,直接跳轉(zhuǎn)到Linux 內(nèi)核的第一條指令處。從 Linux 的方式看待設(shè)備可區(qū)分為3 種基本設(shè)備類型:字符設(shè)備,塊設(shè)備,或者網(wǎng)絡(luò)設(shè)備。車載導(dǎo)航系統(tǒng)設(shè)備驅(qū)動程序由以下三個部分組成:
(1)自動配置和初始化子程序。初始化子程序首先運行,負責(zé)檢測硬件設(shè)備是否存在和能否正常運行;
(2)中斷服務(wù)子程序。由嵌入式Liuux 系統(tǒng)來接收硬件中斷,再通過系統(tǒng)來調(diào)用中斷服務(wù)子程序;
(3)服務(wù)于I/O 請求的子程序。對I/O 設(shè)備進行存取。將編寫好的設(shè)備驅(qū)動編譯到內(nèi)核中,在系統(tǒng)啟動時和內(nèi)核一起啟動。
文件系統(tǒng)構(gòu)成了 Linux 系統(tǒng)上所有數(shù)據(jù)的基礎(chǔ)。經(jīng)過比較,系統(tǒng)設(shè)計時決定使用Cramfs文件系統(tǒng),當訪問文件時,Cramfs 文件系統(tǒng)自動的將要訪問的文件解壓到RAM 中,會盡可能給實際執(zhí)行的應(yīng)用程序保留RAM 空間,而且可以為運行時解壓縮挪出額外的CPU 周期。使用mkcramfs 命令生成cramfs 鏡像文件,再將其下載到系統(tǒng)中去,Linux 啟動時自動加載根文件系統(tǒng),完成系統(tǒng)的啟動。
(3)多線程技術(shù)在Qt 中的應(yīng)用
在具有圖形用戶界面的 Qt 應(yīng)用程序中,主線程由GUI 線程充當,它同時擁有一個或多個非GUI 線程作為工作線程來處理其它耗時操作,例如不斷更新的車輛方向、速度,地圖的匹配等。這樣,即使在負載很重的情況下,應(yīng)用程序也可以保證圖形用戶界面的響應(yīng)。依賴 Qt 提供的多線程技術(shù),使得該導(dǎo)航系統(tǒng)中的多數(shù)據(jù)交互成為可能,GUI 線程在調(diào)用了exec()函數(shù)后,要么等待一個事件,要么處理一個事件,每一個線程都可以有自己的事件循環(huán),如圖4所示,起始線程通過QcoreApplication::exec()啟動事件循環(huán),其他非GUI 線程通過Qthread::exec()啟動各自的事件循環(huán)。
圖 4 Qt 線程事件模型
5 結(jié)論
本文作者的創(chuàng)新點:
(1)將嵌入式Liuux 操作系統(tǒng)用于車載導(dǎo)航系統(tǒng),是對傳統(tǒng)的車輛導(dǎo)航系統(tǒng)的重大改進,成本大幅降低,同時利用Linux 系統(tǒng)的多線程技術(shù),可以解決系統(tǒng)中多個任務(wù)并行處理的問題,保障了系統(tǒng)的穩(wěn)定性、可靠性,提高了系統(tǒng)的運行速度。
(2)顯示系統(tǒng)采用Qt/Embeded 軟件進行用戶顯示界面設(shè)計,一次編寫,隨處編譯,方便移植到各種不同的平臺,只需重新編譯即可,使用開源版節(jié)約大量軟件授權(quán)費用,這些都是傳統(tǒng)WinCE 程序所不能比擬的。
(3)目前本系統(tǒng)已經(jīng)裝載在車上試運行,實踐證明本系統(tǒng)能實時顯示車輛當前運行狀況,快速響應(yīng)用戶操作,為駕駛者提供良好的導(dǎo)航信息。
責(zé)任編輯:gt
-
處理器
+關(guān)注
關(guān)注
68文章
19833瀏覽量
233916 -
控制器
+關(guān)注
關(guān)注
114文章
17026瀏覽量
183293 -
嵌入式
+關(guān)注
關(guān)注
5144文章
19575瀏覽量
315730
發(fā)布評論請先 登錄
嵌入式導(dǎo)航系統(tǒng)DIY分享
DIY分享:嵌入式導(dǎo)航系統(tǒng)硬件+軟件設(shè)計教程
怎么實現(xiàn)基于Linux的嵌入式車載導(dǎo)航系統(tǒng)的設(shè)計?
怎么實現(xiàn)基于嵌入式S3C2440的船舶導(dǎo)航系統(tǒng)設(shè)計?
如何實現(xiàn)基于Linux的嵌入式車載導(dǎo)航系統(tǒng)的設(shè)計?
基于嵌入式LINUX的車載導(dǎo)航系統(tǒng)設(shè)計
S3C2440A嵌入式手持終端電源管理系統(tǒng)設(shè)計

基于Linux的嵌入式車載導(dǎo)航系統(tǒng)的設(shè)計

基于S3C2440A的嵌入式視頻系統(tǒng)設(shè)計

基于S3C2440A處理器的Windows CE系統(tǒng)快速啟動方案

嵌入式Linux在s3c2440上的移植研究
嵌入式Linux系統(tǒng)的驅(qū)動原理和使用ARM Linux實現(xiàn)SPI驅(qū)動程序的說明

嵌入式導(dǎo)航系統(tǒng)是在怎樣的設(shè)計下實現(xiàn)的

基于S3C2440A嵌入式微處理器實現(xiàn)高速接入網(wǎng)絡(luò)的設(shè)計

基于嵌入式Linux的GPS車載定位導(dǎo)航系統(tǒng)設(shè)計

評論