基于嵌入式ARM-Linux的GPS智能終端設(shè)計(jì)
GPS智能終端是智能交通系統(tǒng)(ITS系統(tǒng))的重要組成部分,它將衛(wèi)星定位技術(shù)(GPS)、地理信息系統(tǒng)(GIS)以及無(wú)線通信技術(shù)融于一身。目前,衛(wèi)星定位終端通常由8位/16位單片機(jī)、GSM/GPRS通信模塊、GPS模塊、LCD液晶顯示器等組成,并且采用液晶部分與主控芯片組分離在兩個(gè)外殼里的分體式結(jié)構(gòu)。這里介紹一種基于ARM920處理器和嵌入式Linux操作系統(tǒng),將GPS技術(shù)與CDMA網(wǎng)絡(luò)相結(jié)合的嵌入式智能終端并設(shè)計(jì)。該終端具有將GPS終端的動(dòng)態(tài)位置、時(shí)間、狀態(tài)等信息實(shí)時(shí)地通過(guò)CDMA無(wú)線網(wǎng)絡(luò)鏈接到控制中心,在具有地理信息處理和查詢(xún)功能的電子地圖上進(jìn)行顯示,并對(duì)終端的準(zhǔn)確位置、速度、運(yùn)動(dòng)方向、終端狀態(tài)等基本信息進(jìn)行監(jiān)控和查詢(xún);報(bào)警(包括主動(dòng)報(bào)警和自動(dòng)報(bào)警);顯示調(diào)度信息;外接設(shè)備數(shù)據(jù)采集、本地溫度采集及遠(yuǎn)程監(jiān)控等功能。
1 GPS智能監(jiān)控系統(tǒng)總體設(shè)計(jì)方案
GPS智能終端與監(jiān)控中心的通信方式是影響整個(gè)ITS系統(tǒng)功能的重要因素。為了解決目前終端采用GSM,GPRS網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸不足的問(wèn)題,設(shè)計(jì)中采用CDMA 1X網(wǎng)絡(luò),其理論傳輸速率可達(dá)300 Kb/s,數(shù)據(jù)傳輸速率高,永遠(yuǎn)在線,基于IP協(xié)議可以訪問(wèn)整個(gè)Internet;按流量收費(fèi),價(jià)格合理;具有良好的可擴(kuò)展性,覆蓋室內(nèi)絕大部分地區(qū)及距海岸線120 km內(nèi)的海域,基本不存在盲區(qū)。通信速度遠(yuǎn)高于GPRS網(wǎng)絡(luò),更加適合于大數(shù)據(jù)量、實(shí)時(shí)傳輸監(jiān)控,而且易于平滑過(guò)渡到3G移動(dòng)通信系統(tǒng)。GPS智能監(jiān)控系統(tǒng)由GPS智能終端、CDMA網(wǎng)絡(luò)、Internet網(wǎng)、監(jiān)控中心組成,如圖1所示。
2 GPS智能終端的硬件設(shè)計(jì)
2.1 平臺(tái)介紹
采用ARM處理器和嵌入式技術(shù)設(shè)計(jì)的移動(dòng)終端,相對(duì)于以8位/16位單片機(jī)作為中央處理器的終端而言,無(wú)論是功能上,還是人機(jī)界面都有顯著提高,是微處理器技術(shù)的重要發(fā)展。這里選用Atmel公司的AT91RM9200處理器為主控制器。該內(nèi)核屬于專(zhuān)門(mén)用于工業(yè)控制的ARM芯片,有較寬的工作溫度以及其他較好的工業(yè)參數(shù),同時(shí)集成了豐富的系統(tǒng)應(yīng)用外設(shè)及標(biāo)準(zhǔn)接口;在180 MHz主頻下高達(dá)200 MIPS處理速度;外部總線接口EBI。;兩個(gè)USB 2.0主機(jī)口和一個(gè)USB 2.O設(shè)備口;一個(gè)10/100 Mb/s Ethernet通信接口;4個(gè)同步/異步串口;多種串行數(shù)據(jù)通路;支持I2C,I2S等。其豐富的外部設(shè)備和數(shù)據(jù)傳輸特性是選擇它作為主控制器的主要原因。
2.2 硬件設(shè)計(jì)
GPS智能終端的硬件系統(tǒng)構(gòu)成如圖2所示。
[!--empirenews.page--]
2.2.1 ARM主控模塊
AT91RM9200的串口UART2和UART3分別與CDMA模塊、GPS模塊通信,在實(shí)際通信時(shí)兩路連接都加有LVTTL電平到RS 232電平的轉(zhuǎn)換電路。AT91RM9200接收GPS模塊從串口3發(fā)出的位置信息,解析出其中有用數(shù)據(jù)進(jìn)行封裝,然后以規(guī)定格式通過(guò)串口2交給CDMA模塊,通過(guò)CDMA網(wǎng)絡(luò)接入Internet網(wǎng)最終送至ITS監(jiān)控中心;接收并解析ITS控制中心發(fā)來(lái)的短消息命令,按命令進(jìn)行上傳定位等操作;把系統(tǒng)運(yùn)行狀態(tài)及ITS控制中心發(fā)來(lái)的信息在液晶屏上顯示出來(lái)。
2.2.2 CDMA通信模塊
CDMA模塊是整個(gè)系統(tǒng)的通信基礎(chǔ),設(shè)計(jì)中采用Fidelix公司的CDMA通信模塊FD810。該模塊內(nèi)嵌的高通Qualcomm MSM6025芯片,除支持基本的通話和SMS短消息外,還支持CDMA20001x無(wú)線數(shù)據(jù)傳輸。高速上下行速率與大緩存,數(shù)據(jù)傳輸速率高達(dá)153.6 Kb/s,可通過(guò)AT命令遠(yuǎn)程控制內(nèi)置TCP/IP協(xié)議堆棧。DTGS-800與AT91RM9200通過(guò)串口UART2實(shí)現(xiàn)數(shù)據(jù)的收發(fā)和AT指令的操作。
2.2.3 GPS模塊
GPS接收模塊選用芬蘭Fastrax公司的iTrax100。該模塊支持NMEA0183和Sony ASCⅡ協(xié)議的數(shù)據(jù)格式。GPS模塊通過(guò)串口3將數(shù)據(jù)以固定的幀格式發(fā)送至AT91RM9200。GPS模塊需要配備專(zhuān)門(mén)的GPS天線接收GPS衛(wèi)星信號(hào)。一般在比較開(kāi)闊的地區(qū),需接收到3顆以上的GPS衛(wèi)星信號(hào)才能進(jìn)行準(zhǔn)確定位。
2.2.4 存儲(chǔ)器系統(tǒng)
存儲(chǔ)器系統(tǒng)采用4 MB NOR FLASH,64 MBNAND FLASH和32 MB SDRAM。NOR FLASH通過(guò)16位數(shù)據(jù)總線與CPU交換數(shù)據(jù),用來(lái)存儲(chǔ)Uboot,Linux內(nèi)核、文件系統(tǒng);NAND FLASH存儲(chǔ)應(yīng)用程序,作為系統(tǒng)的數(shù)據(jù)存儲(chǔ)器,如加載電子海圖等。為充分發(fā)揮32位ARM處理器的數(shù)據(jù)處理能力,選用2片16位的HY57V281620HG并聯(lián),以構(gòu)建32位SDRAM與ARM交換數(shù)據(jù)。SDRAM在系統(tǒng)中主要用作程序的運(yùn)行空間、數(shù)據(jù)及堆棧區(qū)。
首先,通過(guò)JTAG口將Uboot、Linux內(nèi)核、文件系統(tǒng)燒寫(xiě)到NOR FLASH,將應(yīng)用程序燒寫(xiě)到NANDFLASH。在系統(tǒng)啟動(dòng)時(shí),CPU首先從復(fù)位地址0x0處讀取啟動(dòng)代碼,并將存有引導(dǎo)程序Uboot的NORFLASH存儲(chǔ)器配置到:Bank0,即AT91RM9200的NCS0引腳接至NOR FLASH芯片AT49BV322AD的CE端,這樣就可以從NOR FLASH啟動(dòng)嵌入式Linux操作系統(tǒng)。
3 GPS智能終端的軟件設(shè)計(jì)
嵌入式Linux系統(tǒng)只需引導(dǎo)程序、Linux微內(nèi)核、初始化進(jìn)程3個(gè)基本元素,移植嵌入式Linux,就是使實(shí)時(shí)內(nèi)核能在其他處理器(CPU)或微控制器(MCU)上運(yùn)行。將嵌入式Linux移植到AT91RM9200平臺(tái)上,一般需要4個(gè)步驟:下載源碼和建立交叉編譯環(huán)境,配置編譯內(nèi)核,制作文件系統(tǒng),下載和調(diào)試內(nèi)核。
3.1 應(yīng)用程序設(shè)計(jì)
應(yīng)用程序包括Uboot啟動(dòng)代碼、串口設(shè)備驅(qū)動(dòng)程序、CDMA網(wǎng)絡(luò)數(shù)據(jù)傳輸程序、GPS串口通信程序等。
(1)系統(tǒng)加電后復(fù)位;
(2)Uboot初始化CPU,SDRMA,分配地址空間等;
(3)Uboot把Linux內(nèi)核的壓縮文件解壓到SDRAM中,同時(shí)Uboot把控制權(quán)移交到Linux。
Linux的內(nèi)核有在FLASH存儲(chǔ)器上直接運(yùn)行和加載到內(nèi)存中運(yùn)行2種工作方式。這里采用的FLASH存儲(chǔ)器運(yùn)行方式相對(duì)較復(fù)雜,但運(yùn)行速度更快;
(4)開(kāi)始執(zhí)行SDRMA中的代碼,Linux內(nèi)核初始化,完成堆棧和中斷的分配等;
(5)加載串口驅(qū)動(dòng)模塊,完成串口的初始化;
(6)運(yùn)行CDMA網(wǎng)絡(luò)數(shù)據(jù)傳輸程序,通過(guò)CDMA網(wǎng)絡(luò)與Internet進(jìn)行連接;
(7)運(yùn)行GPS串口通信程序,通過(guò)串口將GPS數(shù)據(jù)送至AT91RM9200。
至此,已建立了從GPS數(shù)據(jù)采集到數(shù)據(jù)傳輸?shù)耐暾那度胧奖O(jiān)控系統(tǒng)。
3.2 無(wú)線接入網(wǎng)絡(luò)程序
終端由CDMA網(wǎng)絡(luò)接入Internet后,通過(guò)互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)傳輸。系統(tǒng)上電和載入Linux后,首先初始化CDMA模塊,進(jìn)行端口設(shè)置和波特率設(shè)置(115 200 b/s);然后進(jìn)入撥號(hào)等待狀態(tài)。由于該終端在功能上映射為無(wú)線Modem,所以登陸網(wǎng)絡(luò)需進(jìn)行PPP撥號(hào)連接,接入號(hào)為#777,用戶(hù)名和密碼均為CARD。啟動(dòng)程序后,確認(rèn)是否撥號(hào)成功,若成功撥號(hào),則調(diào)用GPS串口通信程序和網(wǎng)絡(luò)數(shù)據(jù)傳輸程序;最后使用Internet結(jié)束后,關(guān)閉無(wú)線連接。
3.3 CDMA網(wǎng)絡(luò)數(shù)據(jù)傳輸程序
在Linux操作系統(tǒng)下,監(jiān)控終端通過(guò)CDMA網(wǎng)絡(luò)與Internet連接,將數(shù)據(jù)上傳到監(jiān)控中心。套接字Socket是許多操作系統(tǒng)網(wǎng)絡(luò)編程的通用API,是介于網(wǎng)絡(luò)應(yīng)用層和傳輸層之間的編程接口。套接字提供了訪問(wèn)下層通信協(xié)議的大量系統(tǒng)調(diào)用和相應(yīng)數(shù)據(jù)結(jié)構(gòu),進(jìn)程在Linux上的網(wǎng)絡(luò)通信過(guò)程就是使用套接字傳輸數(shù)據(jù)的過(guò)程。,文中介紹的Socket通信采用面向連接的TCP協(xié)議。
客戶(hù)端和服務(wù)器端的TCP應(yīng)用程序流程如圖3所示??蛻?hù)機(jī)部分先由Socket()創(chuàng)建本地套接口,給服務(wù)器端套接口地址結(jié)構(gòu)賦值;用Connect()函數(shù)使本地套接口向服務(wù)器端套接口發(fā)出建立連接請(qǐng)求,經(jīng)3次握手建立TCP連接;若連接建立成功,則用Send()和Recv()函數(shù)與服務(wù)器通信;通信結(jié)束,用Close()關(guān)閉套接口。
服務(wù)器部分由Socket()創(chuàng)建套接口,并給套接口地址結(jié)構(gòu)賦值;調(diào)Bind()函數(shù)綁定套接口、用Listen()函數(shù)在該套接口上監(jiān)聽(tīng)請(qǐng)求;當(dāng)Accept()函數(shù)接受請(qǐng)求,產(chǎn)生新的套接口及描述字,并與客戶(hù)端連接;在用Fork()函數(shù)派生新的子進(jìn)程與客戶(hù)端通信,主進(jìn)程繼續(xù)處理其他請(qǐng)求。
3.4 GPS串口通信程序
GPS串口通信程序是對(duì)采集到的GPS數(shù)據(jù)和車(chē)輛狀態(tài)數(shù)據(jù)進(jìn)行解析;對(duì)時(shí)間、經(jīng)度、緯度、速度及超速報(bào)警等數(shù)據(jù)解析,并以固定格式通過(guò)串口3傳送到AT91RM9200。GPS模塊的工作流程如圖4所示。[!--empirenews.page--]
GPS接收數(shù)據(jù)采用NMEA0183格式,串行通信參數(shù)為8位數(shù)據(jù)位,無(wú)奇偶校驗(yàn);1位停止位,無(wú)數(shù)據(jù)流控制。波特率設(shè)為115 200 b/s。判斷幀起始是否為$G-PGGA,如果是,按位讀取GPS數(shù)據(jù),
在Linux下,所有的硬件設(shè)備都被看成是普通文件,可以通過(guò)與普通文件相同的標(biāo)準(zhǔn)系統(tǒng)調(diào)用完成打開(kāi)、關(guān)閉、讀取和寫(xiě)入設(shè)備等操作。系統(tǒng)中每一個(gè)設(shè)備都用一種特殊的設(shè)備相關(guān)文件表示,存放在/dev目錄下。在Linux中,對(duì)每一個(gè)設(shè)備的描述是通過(guò)主設(shè)備號(hào)和次設(shè)備號(hào)來(lái)惟一確定的。由同一個(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)的(O~255);次設(shè)備號(hào)用來(lái)區(qū)分同一個(gè)驅(qū)動(dòng)程序控制的不同設(shè)備。
4 實(shí)驗(yàn)與結(jié)果
運(yùn)行嵌入式目標(biāo)板的客戶(hù)端程序采集GPS數(shù)據(jù)并發(fā)送,在上位機(jī)上運(yùn)行服務(wù)器端就能接收到GPS數(shù)據(jù)。如圖5所示為GPS數(shù)據(jù)采集、接收的調(diào)試界面的數(shù)據(jù),比較監(jiān)控中心服務(wù)器接收到的GPS數(shù)據(jù)與終端采集到GPS數(shù)據(jù)相一致,實(shí)現(xiàn)了終端與監(jiān)控中心無(wú)線、實(shí)時(shí)數(shù)據(jù)傳輸。本終端運(yùn)行穩(wěn)定、系統(tǒng)響應(yīng)時(shí)間小于等于3 s,網(wǎng)絡(luò)良好情況下數(shù)據(jù)傳輸速率達(dá)115 200 b/s。
5 結(jié) 語(yǔ)
利用嵌入式Linux操作系統(tǒng)開(kāi)發(fā)平臺(tái)提供的系統(tǒng)功能,可以簡(jiǎn)化多任務(wù)程序設(shè)計(jì),降低開(kāi)發(fā)難度,輕松地完成前后臺(tái)編程方法難以完成的任務(wù)。由于CDMA數(shù)據(jù)傳輸有著永遠(yuǎn)在線、費(fèi)用低廉,并且能夠切換到SMS方式,保證數(shù)傳萬(wàn)無(wú)一失的諸多優(yōu)點(diǎn),而且隨著移動(dòng)通信網(wǎng)絡(luò)的發(fā)展,該GPS智能終端更易平滑過(guò)渡到3G移動(dòng)通信系統(tǒng)。因此將會(huì)有更廣闊的應(yīng)用前景。