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