基于嵌入式ARM-Linux的GPS智能終端設(shè)計(jì)
2.2.1 ARM主控模塊
AT91RM9200的串口UART2和UART3分別與CDMA模塊、GPS模塊通信,在實(shí)際通信時兩路連接都加有LVTTL電平到RS 232電平的轉(zhuǎn)換電路。AT91RM9200接收GPS模塊從串口3發(fā)出的位置信息,解析出其中有用數(shù)據(jù)進(jìn)行封裝,然后以規(guī)定格式通過串口2交給CDMA模塊,通過CDMA網(wǎng)絡(luò)接入Internet網(wǎng)最終送至ITS監(jiān)控中心;接收并解析ITS控制中心發(fā)來的短消息命令,按命令進(jìn)行上傳定位等操作;把系統(tǒng)運(yùn)行狀態(tài)及ITS控制中心發(fā)來的信息在液晶屏上顯示出來。
2.2.2 CDMA通信模塊
CDMA模塊是整個系統(tǒng)的通信基礎(chǔ),設(shè)計(jì)中采用Fidelix公司的CDMA通信模塊FD810。該模塊內(nèi)嵌的高通Qualcomm MSM6025芯片,除支持基本的通話和SMS短消息外,還支持CDMA20001x無線數(shù)據(jù)傳輸。高速上下行速率與大緩存,數(shù)據(jù)傳輸速率高達(dá)153.6 Kb/s,可通過AT命令遠(yuǎn)程控制內(nèi)置TCP/IP協(xié)議堆棧。DTGS-800與AT91RM9200通過串口UART2實(shí)現(xiàn)數(shù)據(jù)的收發(fā)和AT指令的操作。
2.2.3 GPS模塊
GPS接收模塊選用芬蘭Fastrax公司的iTrax100。該模塊支持NMEA0183和Sony ASCⅡ協(xié)議的數(shù)據(jù)格式。GPS模塊通過串口3將數(shù)據(jù)以固定的幀格式發(fā)送至AT91RM9200。GPS模塊需要配備專門的GPS天線接收GPS衛(wèi)星信號。一般在比較開闊的地區(qū),需接收到3顆以上的GPS衛(wèi)星信號才能進(jìn)行準(zhǔn)確定位。
2.2.4 存儲器系統(tǒng)
存儲器系統(tǒng)采用4 MB NOR FLASH,64 MBNAND FLASH和32 MB SDRAM。NOR FLASH通過16位數(shù)據(jù)總線與CPU交換數(shù)據(jù),用來存儲Uboot,Linux內(nèi)核、文件系統(tǒng);NAND FLASH存儲應(yīng)用程序,作為系統(tǒng)的數(shù)據(jù)存儲器,如加載電子海圖等。為充分發(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ū)。
首先,通過JTAG口將Uboot、Linux內(nèi)核、文件系統(tǒng)燒寫到NOR FLASH,將應(yīng)用程序燒寫到NANDFLASH。在系統(tǒng)啟動時,CPU首先從復(fù)位地址0x0處讀取啟動代碼,并將存有引導(dǎo)程序Uboot的NORFLASH存儲器配置到:Bank0,即AT91RM9200的NCS0引腳接至NOR FLASH芯片AT49BV322AD的CE端,這樣就可以從NOR FLASH啟動嵌入式Linux操作系統(tǒng)。
3 GPS智能終端的軟件設(shè)計(jì)
嵌入式Linux系統(tǒng)只需引導(dǎo)程序、Linux微內(nèi)核、初始化進(jìn)程3個基本元素,移植嵌入式Linux,就是使實(shí)時內(nèi)核能在其他處理器(CPU)或微控制器(MCU)上運(yùn)行。將嵌入式Linux移植到AT91RM9200平臺上,一般需要4個步驟:下載源碼和建立交叉編譯環(huán)境,配置編譯內(nèi)核,制作文件系統(tǒng),下載和調(diào)試內(nèi)核。
3.1 應(yīng)用程序設(shè)計(jì)
應(yīng)用程序包括Uboot啟動代碼、串口設(shè)備驅(qū)動程序、CDMA網(wǎng)絡(luò)數(shù)據(jù)傳輸程序、GPS串口通信程序等。
(1)系統(tǒng)加電后復(fù)位;
(2)Uboot初始化CPU,SDRMA,分配地址空間等;
(3)Uboot把Linux內(nèi)核的壓縮文件解壓到SDRAM中,同時Uboot把控制權(quán)移交到Linux。
Linux的內(nèi)核有在FLASH存儲器上直接運(yùn)行和加載到內(nèi)存中運(yùn)行2種工作方式。這里采用的FLASH存儲器運(yùn)行方式相對較復(fù)雜,但運(yùn)行速度更快;
(4)開始執(zhí)行SDRMA中的代碼,Linux內(nèi)核初始化,完成堆棧和中斷的分配等;
(5)加載串口驅(qū)動模塊,完成串口的初始化;
(6)運(yùn)行CDMA網(wǎng)絡(luò)數(shù)據(jù)傳輸程序,通過CDMA網(wǎng)絡(luò)與Internet進(jìn)行連接;
(7)運(yùn)行GPS串口通信程序,通過串口將GPS數(shù)據(jù)送至AT91RM9200。
至此,已建立了從GPS數(shù)據(jù)采集到數(shù)據(jù)傳輸?shù)耐暾那度胧奖O(jiān)控系統(tǒng)。
3.2 無線接入網(wǎng)絡(luò)程序
終端由CDMA網(wǎng)絡(luò)接入Internet后,通過互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)傳輸。系統(tǒng)上電和載入Linux后,首先初始化CDMA模塊,進(jìn)行端口設(shè)置和波特率設(shè)置(115 200 b/s);然后進(jìn)入撥號等待狀態(tài)。由于該終端在功能上映射為無線Modem,所以登陸網(wǎng)絡(luò)需進(jìn)行PPP撥號連接,接入號為#777,用戶名和密碼均為CARD。啟動程序后,確認(rèn)是否撥號成功,若成功撥號,則調(diào)用GPS串口通信程序和網(wǎng)絡(luò)數(shù)據(jù)傳輸程序;最后使用Internet結(jié)束后,關(guān)閉無線連接。
3.3 CDMA網(wǎng)絡(luò)數(shù)據(jù)傳輸程序
在Linux操作系統(tǒng)下,監(jiān)控終端通過CDMA網(wǎng)絡(luò)與Internet連接,將數(shù)據(jù)上傳到監(jiān)控中心。套接字Socket是許多操作系統(tǒng)網(wǎng)絡(luò)編程的通用API,是介于網(wǎng)絡(luò)應(yīng)用層和傳輸層之間的編程接口。套接字提供了訪問下層通信協(xié)議的大量系統(tǒng)調(diào)用和相應(yīng)數(shù)據(jù)結(jié)構(gòu),進(jìn)程在Linux上的網(wǎng)絡(luò)通信過程就是使用套接字傳輸數(shù)據(jù)的過程。,文中介紹的Socket通信采用面向連接的TCP協(xié)議。
客戶端和服務(wù)器端的TCP應(yīng)用程序流程如圖3所示??蛻魴C(jī)部分先由Socket()創(chuàng)建本地套接口,給服務(wù)器端套接口地址結(jié)構(gòu)賦值;用Connect()函數(shù)使本地套接口向服務(wù)器端套接口發(fā)出建立連接請求,經(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)聽請求;當(dāng)Accept()函數(shù)接受請求,產(chǎn)生新的套接口及描述字,并與客戶端連接;在用Fork()函數(shù)派生新的子進(jìn)程與客戶端通信,主進(jìn)程繼續(xù)處理其他請求。
3.4 GPS串口通信程序
GPS串口通信程序是對采集到的GPS數(shù)據(jù)和車輛狀態(tài)數(shù)據(jù)進(jìn)行解析;對時間、經(jīng)度、緯度、速度及超速報警等數(shù)據(jù)解析,并以固定格式通過串口3傳送到AT91RM9200。GPS模塊的工作流程如圖4所示。
評論