引言
隨著全球定位系統的不斷改進,軟、硬件的不斷完善,應用領域正在不斷地開拓,目前已遍及國民經濟各種部門,并開始逐步深入人們的日常生活。隨著衛星導航定位設備的小型化甚至芯片化,嵌入式GPS產品越來越廣泛的應用到人們生活的各個領域,而嵌入式產品的網絡化就成為當今研究的一個方向。
1 系統原理及結構
GPS接收機數據有數據量小、定時或非定時及實時發送等特點,一方面需實現數據的上傳,另一方面也需下達各種傳輸、控制指令,即雙向的數據、指令傳輸。傳統的數據傳輸主要采用GSM的方法來解決,這種傳輸方式存在覆蓋范圍、實時性等問題。目前中國移動主推的GPRS通用分組無線業務是在現有GSM系統上發展起來的一種承載業務,目的是為GSM用戶提供分組形式的數據業務。GPRS拋棄了傳統的獨占電路交換模式,采用分組交換技術,每個用戶可同時占用多個無線信道,同一無線信道又可以由多個用戶共享,有效地利用了信道資源,帶寬最高可達171.2Kb/s[1]。目前中國移動的GPRS覆蓋范圍在中心城市幾乎達到了100%,在邊遠地區也達到了80%以上,實際應用帶寬大約在20-40Kb/s,特別適合于GPS數據通信的需求,可以完全取代過去傳統的有線Modem、X.25、短信等通信方式[2]。
GPS接收機應用GPRS數據傳輸方式及網絡結構如圖1所示:
通過GPRS服務,GPS設備可采用互聯網Internet的標準方式與在互聯網上的服務器交換數據。GPRS的基礎是以IP包的形式進行數據的傳輸,GPRS無線終端接入GPRS 網絡的方法與普通有線MODEM 類似, 都采用建立PPP(Point-to-Point Protocol) 連接方式。PPP協議是一種被廣泛采用的串行點對點鏈路上傳輸數據報的方法,包括LCP、PAP、IPCP、NCP等。GPRS MODEM通過PPP協議獲得動態分配的IP地址。連接建立后,在PPP協議的基礎上通過數據傳輸協議,該系統采用TCP實現與互聯網上其它計算機的數據通訊。
2 系統硬件組成
本系統采用帶有實時操作系統的GPS接收機內嵌通信協議的方案,在多任務的系統中增加一個comm.c通信任務,在該任務中實現簡化的TCP/IP協議棧、PPP協議及無線GPRS Modem的命令控制。帶實時操作系統的GPS接收機中包括16位VS_DSP處理器,8Mflash,96kRAM,16kROM,兩個串口UART0 和UART1。其中UART0用于程序的燒寫與輸出數據的觀測;UART1用于與無線GPRS Modem連接其中UART0口在設計階段主要是用于連接PC機的串口進行程序的編寫及燒制,作為終端機它可以作為SPI控制。系統硬件組成如圖2所示。
3 系統軟件設計與實現
GPS多任務實時操作系統中本身不帶有通信功能,而且為了經濟的考慮,本設計采用了不帶協議棧的無線GPRS Modem,所以在軟件設計時,采用在原來任務基礎上增加一個通信任務,主要完成微型TCP/IP協議棧、PPP協議及無線GPRS Modem的命令控制。
3.1 微型TCP/IP協議棧的移植
如果在嵌入式系統中實現一個完整的TCP/IP協議棧,其難度可能會超出應用本身,所以本系統選用了一種簡易的免費TCP/IP協議棧uip0.6作為設計的核心。uip0.6是瑞典計算機科學研究所Adam Dunkels開發的源碼公開的免費簡易TCP/IP協議棧[3,4]。uip實現了TCP/IP協議集的四個基本協議:ARP地址解析,IP網際互聯協議,ICMP網絡控制報文協議和TCP傳輸控制協議;它具備極少的代碼占用量和RAM資源要求,尤其適用于8/16位單片機;支持多個主動連接和被動連接并發,支持連接的動態分配和釋放;擁有簡易的應用層接口和設備驅動層接口。由于本系統采用GPRS網絡方式,所以其四個協議集中只保留IP網際互連協議和TCP傳輸控制協議,并其進行一定的修改。uip協議棧中實現IP網際互聯協議時對原協議進行了極大的簡化,它沒有實現分片和重組。本設計中由于發送接收數據量較小,所以不必進行分片與重組,即對IP網際互聯協議的實現部分不作修改。為了減少存儲器的使用,uip里的TCP沒有實現發送和接收數據的調整窗口。輸入的TCP段不會通過uip緩存,而是由應用程序處理。輸出數據時,uip不能在每個連接有超過一個未解決的TCP段。在本系統的設計中,為了避免數據丟失,應用中設計一個大的緩沖區send_recbuf[]接收應用要發送的數據,一個較小的發送緩沖區send_buf[]。對uipopt.h中的部分內容進行修改,刪去UIP_IPADDR部分,應用文件頭文件改為本系統中的應用文件的頭文件#include “appcomm.h”,做為客戶端本系統中定義#define UIP_ACTIVE_OPEN 1。由于數據鏈路層采用PPP協議,所以uip_buf[]中IP頭的偏移量定義為:
#define UIPLLHLEN 0
3.1.1 uip與PPP的接口
當PPP協議從網絡接收到一個IP包時,把它放入到uip_buf中,系統調用uip_input()函數。此函數將處理這個包,在需要時會調用應用程序。當uip_input()返回時,uip_buf中放入了一個輸出包,包的大小由全局變量uip_len約束,若uip_len為0,則說明沒有包要發送,否則,PPP將此包加上PPP包頭發送到網上。
3.1.2 uip與應用的接口
uip使用基于事件的編程模式,在響應一定的事件時,應用被當作uip調用的一個C函數UIP_APPCALL來實現,故在應用中要設置#define UIP_APPCALL appcomm,在uip中的標志uip_flags用于uip與應用之間的聯系,在接收到數據、數據發送成功、建立了新的連接或數據被重發時,uip調用應用,應用根據uip_flags標志進行相應的處理。
3.2 PPP協議的實現
PPP是運行在硬件接口之上的,它提供LCP、PAP和IPCP協商所需要的合適的機制。這些協商由被PPPEntery()函數調用的固定的狀態機執行,它基于接受到的內容建立響應。而PPPReceived()函數,對接收到的每個字節進行轉義處理,當一個完整的PPP幀準備好要處理時,PPPReceived()設置整幀標示Isframe,此標志在應用主循環中被PPPEntery()函數輪詢。PPP包格式如表1所示:
表1 PPP包格式
PPP模塊在RAM中定義了兩個緩沖區InBuffer[] 和OutBuffer[]分別存儲從PPP來的包或向外輸出的包,該緩沖區是全局的。為了建立點對點鏈路通信,在撥號成功連接后,GGSN發送LCP設置包,以便設定和測試數據鏈路,在鏈路建立以后,LCP可選設備才可以被認證,本系統拒絕所有的設置并請求(REQ)PAP方式驗證。然后,進行PAP驗證用戶名和密碼過程,在GPRS中用戶名和密碼都為空,如果驗證成功,GGSN會返回IPCP報文,分配動態IP地址。此時,就完成了與GGSN的協商過程。協商完成后,進入IP數據報通信階段[4]。根據應用的不同,IP報文可以攜帶UDP報文,也可以攜帶TCP或ICMP報文,本系統為了數據的可靠傳輸,采用TCP報文傳輸數據。此時,GPS終端向GGSN發送的所有包含IP報文的PPP報文都會被傳送給Internet網中相應的IP地址,此處為GPS監控中心的IP地址。中心向GPS終端IP地址發送的數據也會經過GPRS網傳送到GPS終端上,從而實現GPS終端與遠程中心主機通過互聯網傳送數據。PPP協商過程如圖3所示[5]:
3.3 GPRS Modem命令及串口讀寫
3.3.1 GPRS Modem 命令
若想通過GPRS Modem撥號上網,建立PPP連接,就必須先對其進行配置,本系統中設置上網用到的主要的AT命令有一下兩個:
1.transmit(AT+CGDCONT=1,IP,CMNET\rn,25); 傳送此命令到GPRS Modem,以設置中國移動GPRS節點服務器的APN名稱和屬性,如果設置成功則返回“OK”,出錯返回“ERROR”。其中“CMNET”是登陸GPRS網的缺省APN.
2.transmit(ATD*99***1#rn,13);此命令撥通中國移動的GPRS節點服務器,如果設置成功,則返回“CONNECT”,出錯返回“ERROR”。程序可以根據返回值做相應處理。
3.3.2 串口讀寫API
GPS多任務實時操作系統中提供了對串口讀寫的API函數,本系統在用戶初始化時采用信號觸發方式來讀取串口,具體的串口API的應用如下所述:
1. 打開串口
PORT __y * _pUserPort; //其中_pUserPort為定義的串口變量
_pUserPort = (PORT __y *)UART_Open(¶mcom);
if (_pUserPort)
{
PORT_SignalWhenDataAvailable(_pUserPort, 1, ISYS_ThisTaskId());
}
以上的功能為打開串口,paramcom為設定的串口參數結構,其中包括,串口號、緩沖區大小、傳輸速率等基本設置,若打開成功,則在串口每接收到一個字節時就會發送一個信號給本任務。
2. 讀串口
PORT_ReadByte(_pUserPort, &buf)
在收到有字節的信號時,調用此函數將串口_pUserPort中的數據讀入緩沖區buf中。
3. 寫串口
PORT_WriteByte(_pUserPort, *data))
此函數是將data指針所指向的數據寫到串口_pUserPort。
4 結論
本系統通過在GPS多任務實時操作系統中增加一個通信任務,并成功移植了uip0.6協議棧,完成了鏈路層PPP協議及底層硬件的驅動調用,使得GPS定位數據能夠實時、準確傳輸。經過實踐證明,該系統傳輸過程穩定,數據傳輸無誤。本系統的實現為GPS產品的網絡化及將來GPS產品通過網絡提高性能奠定了基礎。
本文作者創新點是將TCP/IP協議棧成功移植到GPS實時操作系統中,并在VS_DSP中實現了鏈路層的點對點的PPP協議,節省了原來利用有協議棧的Modem進行數據傳輸的費用,為以后GPS的廣泛應用奠定了工程應用基礎。
STM32/STM8
意法半導體/ST/STM
評論
查看更多