當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]嵌入式GPS由GPRS接入Internet的實現(xiàn)

引言

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

1 系統(tǒng)原理及結構

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

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

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

2 系統(tǒng)硬件組成

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

3 系統(tǒng)軟件設計與實現(xiàn)

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

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

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

3.1.1 uip與PPP的接口

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

3.1.2 uip與應用的接口

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

3.2 PPP協(xié)議的實現(xiàn)

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

圖1 PPP包格式

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

3.3 GPRS Modem命令及串口讀寫

3.3.1 GPRS Modem 命令

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

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

3.3.2 串口讀寫API

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

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

2. 讀串口

PORT_ReadByte(_pUserPort, &buf)
在收到有字節(jié)的信號時,調(diào)用此函數(shù)將串口_pUserPort中的數(shù)據(jù)讀入緩沖區(qū)buf中。

3. 寫串口

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

4 結論

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

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉