微控制器的GPRS無(wú)線(xiàn)上網(wǎng)方案
4 PPP協(xié)議的實(shí)現
由于移動(dòng)夢(mèng)網(wǎng)的GGSN與GPRS模塊通信時(shí)遵循PPP協(xié)議,所以要在微控制器中也實(shí)現一部分PPP協(xié)議才能與之對話(huà)。GPRS模塊在撥號后首先要與GPRS網(wǎng)關(guān)進(jìn)行通信鏈路的協(xié)商,即協(xié)商點(diǎn)到點(diǎn)的各種鏈路參數配置。協(xié)商過(guò)程遵守LCP(Link Control Protocol)、PAP(Password Authentication Protocol)和IPCP(Internet Protocol Control Protocol)等協(xié)議。其中LCP協(xié)議用于建立、構造、測試鏈路連接;PAP協(xié)議用于處理密碼驗證部分;IPCP協(xié)議用于設置網(wǎng)絡(luò )協(xié)議環(huán)境,并分配IP地址。協(xié)商機制用有限狀態(tài)機的模型來(lái)實(shí)現。一旦協(xié)商完成,鏈路已經(jīng)創(chuàng )建,IP地址已經(jīng)分配就可以按照協(xié)商的標準進(jìn)行IP報文的傳輸了。根據應用的不同,IP報文中可以攜帶UDP報文,也可以是TCP或ICMP報文。本系統正是采用UDP報文傳送數據信息的。數據傳輸完成之后,微控制器會(huì )向GGSN發(fā)送LCP的斷開(kāi)連接報文,以終止網(wǎng)絡(luò )連接。
PPP協(xié)議的幀結構如圖3(左)所示。微控制器的串口中斷接收程序首先以包起始和結束符來(lái)判斷是否有完整的PPP包,并對PPP包的內容進(jìn)行校驗,以確定數據包的完整性和正確性。然后,在主循環(huán)中進(jìn)入PPP報文解析模塊,解析過(guò)程如圖3(右)所示。
圖3 PPP報文解析
5 登錄GGSN的過(guò)程
系統的一個(gè)難點(diǎn)是微控制器登陸GPRS網(wǎng)關(guān)(GGSN)并與網(wǎng)關(guān)通過(guò)LCP、PAP、IPCP協(xié)議進(jìn)行協(xié)商的過(guò)程。LCP、PAP與IPCP協(xié)議的幀結構大同小異,最常用的為請求(REQ)、同意(ACK)和拒絕(NAK)三種幀。微控制器與GGSN各為一方進(jìn)行協(xié)商,任何一方都可以發(fā)送REQ幀請求某方面的配制,另一方覺(jué)得配置不能接受會(huì )回應NAK幀,如果可以則回應ACK幀。為了節省資源,我們只處理這三種數據幀,其它鏈路問(wèn)題都由微控制器在程序控制下自己重新?lián)芴柦鉀Q。
協(xié)商過(guò)程大致描述如下:在撥號成功連接后,GGSN首先會(huì )返回一個(gè)PAP REQ數據幀。我們發(fā)送一個(gè)空LCP REQ幀,以強迫進(jìn)行協(xié)議協(xié)商階段。隨后,GGSN發(fā)送LCP設置幀,我們拒絕所有的設置并請求驗證模式。GGSN選擇CHAP或PAP方式驗證,我們只接受PAP方式。然后,進(jìn)行PAP驗證用戶(hù)名和密碼過(guò)程,在GPRS中用戶(hù)名與密碼都為空,如果成功,GGSN會(huì )返回IPCP報文分配動(dòng)態(tài)IP地址。此時(shí),就完成了與GGSN的協(xié)商過(guò)程。協(xié)商過(guò)程的狀態(tài)轉換如圖4所示。
圖4 協(xié)商過(guò)程流程
協(xié)商完成后進(jìn)入IP數據報通信階段。此時(shí),微控制器向GGSN發(fā)送的所有包含IP報文的PPP報文都會(huì )被傳送給Internet網(wǎng)中相應的IP地址;而遠端所有向微控制器IP地址發(fā)送的報文也都會(huì )經(jīng)GPRS網(wǎng)傳送到微控制器上,從而完成微控制器與遠程主機通過(guò)互聯(lián)網(wǎng)的數據傳輸。
6 小結
經(jīng)過(guò)優(yōu)化,本系統的軟件代碼可以精簡(jiǎn)到6K字節左右,共使用不到300字節的RAM。并且由于程序使用C語(yǔ)言編寫(xiě),稍加改動(dòng)就可以在各種系列的微控制器上實(shí)現。微控制器通過(guò)GPRS上網(wǎng)的技術(shù)可以廣泛應用于需要遠程傳送數據的系統中,特別適合于遠程抄表、遠程監控等領(lǐng)域。我們目前正把這項技術(shù)應用于車(chē)輛監控調度系統,在試驗階段取得了比較好的效果。
評論