<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式GPS由GPRS接入Internet的實(shí)現

嵌入式GPS由GPRS接入Internet的實(shí)現

作者: 時(shí)間:2009-03-12 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

本文引用地址:http://dyxdggzs.com/article/152587.htm

隨著(zhù)全球定位系統的不斷改進(jìn),軟、硬件的不斷完善,應用領(lǐng)域正在不斷地開(kāi)拓,目前已遍及國民經(jīng)濟各種部門(mén),并開(kāi)始逐步深入人們的日常生活。隨著(zhù)衛星導航定位設備的小型化甚至芯片化,產(chǎn)品越來(lái)越廣泛的應用到人們生活的各個(gè)領(lǐng)域,而產(chǎn)品的網(wǎng)絡(luò )化就成為當今研究的一個(gè)方向。

1 系統原理及結構

接收機數據有數據量小、定時(shí)或非定時(shí)及實(shí)時(shí)發(fā)送等特點(diǎn),一方面需數據的上傳,另一方面也需下達各種傳輸、控制指令,即雙向的數據、指令傳輸。傳統的數據傳輸主要采用GSM的方法來(lái)解決,這種傳輸方式存在覆蓋范圍、實(shí)時(shí)性等問(wèn)題。目前中國移動(dòng)主推的通用分組無(wú)線(xiàn)業(yè)務(wù)是在現有GSM系統上發(fā)展起來(lái)的一種承載業(yè)務(wù),目的是為GSM用戶(hù)提供分組形式的數據業(yè)務(wù)。拋棄了傳統的獨占電路交換模式,采用分組交換技術(shù),每個(gè)用戶(hù)可同時(shí)占用多個(gè)無(wú)線(xiàn)信道,同一無(wú)線(xiàn)信道又可以由多個(gè)用戶(hù)共享,有效地利用了信道資源,帶寬最高可達171.2Kb/s[1]。目前中國移動(dòng)的覆蓋范圍在中心城市幾乎達到了100%,在邊遠地區也達到了80%以上,實(shí)際應用帶寬大約在20-40Kb/s,特別適合于數據通信的需求,可以完全取代過(guò)去傳統的有線(xiàn)MODEM、X.25、短信等通信方式[2]。

GPS接收機應用GPRS數據傳輸方式及網(wǎng)絡(luò )結構如圖1所示:

通過(guò)GPRS服務(wù),GPS設備可采用互聯(lián)網(wǎng)的標準方式與在互聯(lián)網(wǎng)上的服務(wù)器交換數據。GPRS的基礎是以IP包的形式進(jìn)行數據的傳輸,GPRS無(wú)線(xiàn)終端GPRS 網(wǎng)絡(luò )的方法與普通有線(xiàn)MODEM 類(lèi)似, 都采用建立PPP(Point-to-Point Protocol) 連接方式。PPP協(xié)議是一種被廣泛采用的串行點(diǎn)對點(diǎn)鏈路上傳輸數據報的方法,包括LCP、PAP、IPCP、NCP等。GPRS MODEM通過(guò)PPP協(xié)議獲得動(dòng)態(tài)分配的IP地址。連接建立后,在PPP協(xié)議的基礎上通過(guò)數據傳輸協(xié)議,該系統采用TCP與互聯(lián)網(wǎng)上其它計算機的數據通訊。

2 系統硬件組成

本系統采用帶有實(shí)時(shí)操作系統的GPS接收機內嵌通信協(xié)議的方案,在多任務(wù)的系統中增加一個(gè)comm.c通信任務(wù),在該任務(wù)中簡(jiǎn)化的TCP/IP協(xié)議棧、PPP協(xié)議及無(wú)線(xiàn)GPRS Modem的命令控制。帶實(shí)時(shí)操作系統的GPS接收機中包括16位VS_DSP處理器,8Mflash,96kRAM,16kROM,兩個(gè)串口UART0 和UART1。其中UART0用于程序的燒寫(xiě)與輸出數據的觀(guān)測;UART1用于與無(wú)線(xiàn)GPRS Modem連接其中UART0口在設計階段主要是用于連接PC機的串口進(jìn)行程序的編寫(xiě)及燒制,作為終端機它可以作為SPI控制。系統硬件組成如圖2所示。

3 系統軟件設計與實(shí)現

GPS多任務(wù)實(shí)時(shí)操作系統中本身不帶有通信功能,而且為了經(jīng)濟的考慮,本設計采用了不帶協(xié)議棧的無(wú)線(xiàn)GPRS Modem,所以在軟件設計時(shí),采用在原來(lái)任務(wù)基礎上增加一個(gè)通信任務(wù),主要完成微型TCP/IP協(xié)議棧、PPP協(xié)議及無(wú)線(xiàn)GPRS Modem的命令控制。

3.1 微型TCP/IP協(xié)議棧的移植

如果在系統中實(shí)現一個(gè)完整的TCP/IP協(xié)議棧,其難度可能會(huì )超出應用本身,所以本系統選用了一種簡(jiǎn)易的免費TCP/IP協(xié)議棧uip0.6作為設計的核心。uip0.6是瑞典計算機科學(xué)研究所Adam Dunkels開(kāi)發(fā)的源碼公開(kāi)的免費簡(jiǎn)易TCP/IP協(xié)議棧[3,4]。uip實(shí)現了TCP/IP協(xié)議集的四個(gè)基本協(xié)議:ARP地址解析,IP網(wǎng)際互聯(lián)協(xié)議,ICMP網(wǎng)絡(luò )控制報文協(xié)議和TCP傳輸控制協(xié)議;它具備極少的代碼占用量和RAM資源要求,尤其適用于8/16位單片機;支持多個(gè)主動(dòng)連接和被動(dòng)連接并發(fā),支持連接的動(dòng)態(tài)分配和釋放;擁有簡(jiǎn)易的應用層接口和設備驅動(dòng)層接口。由于本系統采用GPRS網(wǎng)絡(luò )方式,所以其四個(gè)協(xié)議集中只保留IP網(wǎng)際互連協(xié)議和TCP傳輸控制協(xié)議,并其進(jìn)行一定的修改。uip協(xié)議棧中實(shí)現IP網(wǎng)際互聯(lián)協(xié)議時(shí)對原協(xié)議進(jìn)行了極大的簡(jiǎn)化,它沒(méi)有實(shí)現分片和重組。本設計中由于發(fā)送接收數據量較小,所以不必進(jìn)行分片與重組,即對IP網(wǎng)際互聯(lián)協(xié)議的實(shí)現部分不作修改。為了減少存儲器的使用,uip里的TCP沒(méi)有實(shí)現發(fā)送和接收數據的調整窗口。輸入的TCP段不會(huì )通過(guò)uip緩存,而是由應用程序處理。輸出數據時(shí),uip不能在每個(gè)連接有超過(guò)一個(gè)未解決的TCP段。在本系統的設計中,為了避免數據丟失,應用中設計一個(gè)大的緩沖區send_recbuf[]接收應用要發(fā)送的數據,一個(gè)較小的發(fā)送緩沖區send_buf[]。對uipopt.h中的部分內容進(jìn)行修改,刪去UIP_IPADDR部分,應用文件頭文件改為本系統中的應用文件的頭文件#include “appcomm.h”,做為客戶(hù)端本系統中定義#define UIP_ACTIVE_OPEN 1。由于數據鏈路層采用PPP協(xié)議,所以uip_buf[]中IP頭的偏移量定義為:#define UIPLLHLEN 0

3.1.1 uip與PPP的接口

當PPP協(xié)議從網(wǎng)絡(luò )接收到一個(gè)IP包時(shí),把它放入到uip_buf中,系統調用uip_input()函數。此函數將處理這個(gè)包,在需要時(shí)會(huì )調用應用程序。當uip_input()返回時(shí),uip_buf中放入了一個(gè)輸出包,包的大小由全局變量uip_len約束,若uip_len為0,則說(shuō)明沒(méi)有包要發(fā)送,否則,PPP將此包加上PPP包頭發(fā)送到網(wǎng)上。

3.1.2 uip與應用的接口

uip使用基于事件的編程模式,在響應一定的事件時(shí),應用被當作uip調用的一個(gè)C函數UIP_APPCALL來(lái)實(shí)現,故在應用中要設置#define UIP_APPCALL appcomm,在uip中的標志uip_flags用于uip與應用之間的聯(lián)系,在接收到數據、數據發(fā)送成功、建立了新的連接或數據被重發(fā)時(shí),uip調用應用,應用根據uip_flags標志進(jìn)行相應的處理。

3.2 PPP協(xié)議的實(shí)現

PPP是運行在硬件接口之上的,它提供LCP、PAP和IPCP協(xié)商所需要的合適的機制。這些協(xié)商由被PPPEntery()函數調用的固定的狀態(tài)機執行,它基于接受到的內容建立響應。而PPPReceived()函數,對接收到的每個(gè)字節進(jìn)行轉義處理,當一個(gè)完整的PPP幀準備好要處理時(shí),PPPReceived()設置整幀標示Isframe,此標志在應用主循環(huán)中被PPPEntery()函數輪詢(xún)。PPP包格式如圖1所示:

圖1 PPP包格式

PPP模塊在RAM中定義了兩個(gè)緩沖區InBuffer[] 和OutBuffer[]分別存儲從PPP來(lái)的包或向外輸出的包,該緩沖區是全局的。為了建立點(diǎn)對點(diǎn)鏈路通信,在撥號成功連接后,GGSN發(fā)送LCP設置包,以便設定和測試數據鏈路,在鏈路建立以后,LCP可選設備才可以被認證,本系統拒絕所有的設置并請求(REQ)PAP方式驗證。然后,進(jìn)行PAP驗證用戶(hù)名和密碼過(guò)程,在GPRS中用戶(hù)名和密碼都為空,如果驗證成功,GGSN會(huì )返回IPCP報文,分配動(dòng)態(tài)IP地址。此時(shí),就完成了與GGSN的協(xié)商過(guò)程。協(xié)商完成后,進(jìn)入IP數據報通信階段[4]。根據應用的不同,IP報文可以攜帶UDP報文,也可以攜帶TCP或ICMP報文,本系統為了數據的可靠傳輸,采用TCP報文傳輸數據。此時(shí),GPS終端向GGSN發(fā)送的所有包含IP報文的PPP報文都會(huì )被傳送給網(wǎng)中相應的IP地址,此處為GPS監控中心的IP地址。中心向GPS終端IP地址發(fā)送的數據也會(huì )經(jīng)過(guò)GPRS網(wǎng)傳送到GPS終端上,從而實(shí)現GPS終端與遠程中心主機通過(guò)互聯(lián)網(wǎng)傳送數據。PPP協(xié)商過(guò)程如圖3所示[5]:

3.3 GPRS Modem命令及串口讀寫(xiě)

3.3.1 GPRS Modem 命令

若想通過(guò)GPRS Modem撥號上網(wǎng),建立PPP連接,就必須先對其進(jìn)行配置,本系統中設置上網(wǎng)用到的主要的AT命令有一下兩個(gè):
1.transmit(AT+CGDCONT=1,IP,CMNET\rn,25); 傳送此命令到GPRS Modem,以設置中國移動(dòng)GPRS節點(diǎn)服務(wù)器的APN名稱(chēng)和屬性,如果設置成功則返回“OK”,出錯返回“ERROR”。其中“CMNET”是登陸GPRS網(wǎng)的缺省APN.

2.transmit(ATD*99***1#rn,13);此命令撥通中國移動(dòng)的GPRS節點(diǎn)服務(wù)器,如果設置成功,則返回“CONNECT”,出錯返回“ERROR”。程序可以根據返回值做相應處理。

3.3.2 串口讀寫(xiě)API

GPS多任務(wù)實(shí)時(shí)操作系統中提供了對串口讀寫(xiě)的API函數,本系統在用戶(hù)初始化時(shí)采用信號觸發(fā)方式來(lái)讀取串口,具體的串口A(yíng)PI的應用如下所述:

1. 打開(kāi)串口
PORT __y * _pUserPort; //其中_pUserPort為定義的串口變量
_pUserPort = (PORT __y *)UART_Open(¶mcom);
if (_pUserPort)
{
PORT_SignalWhenDataAvailable(_pUserPort, 1, ISYS_ThisTaskId());
}
以上的功能為打開(kāi)串口,paramcom為設定的串口參數結構,其中包括,串口號、緩沖區大小、傳輸速率等基本設置,若打開(kāi)成功,則在串口每接收到一個(gè)字節時(shí)就會(huì )發(fā)送一個(gè)信號給本任務(wù)。

2. 讀串口

PORT_ReadByte(_pUserPort, buf)
在收到有字節的信號時(shí),調用此函數將串口_pUserPort中的數據讀入緩沖區buf中。

3. 寫(xiě)串口

PORT_WriteByte(_pUserPort, *data))
此函數是將data指針所指向的數據寫(xiě)到串口_pUserPort。

4 結論

本系統通過(guò)在GPS多任務(wù)實(shí)時(shí)操作系統中增加一個(gè)通信任務(wù),并成功移植了uip0.6協(xié)議棧,完成了鏈路層PPP協(xié)議及底層硬件的驅動(dòng)調用,使得GPS定位數據能夠實(shí)時(shí)、準確傳輸。經(jīng)過(guò)實(shí)踐證明,該系統傳輸過(guò)程穩定,數據傳輸無(wú)誤。本系統的實(shí)現為GPS產(chǎn)品的網(wǎng)絡(luò )化及將來(lái)GPS產(chǎn)品通過(guò)網(wǎng)絡(luò )提高性能奠定了基礎。
本文作者創(chuàng )新點(diǎn)是將TCP/IP協(xié)議棧成功移植到GPS實(shí)時(shí)操作系統中,并在VS_DSP中實(shí)現了鏈路層的點(diǎn)對點(diǎn)的PPP協(xié)議,節省了原來(lái)利用有協(xié)議棧的Modem進(jìn)行數據傳輸的費用,為以后GPS的廣泛應用奠定了工程應用基礎。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

tcp/ip相關(guān)文章:tcp/ip是什么




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>