【正文】
at程序向模塊發(fā)送AT指令,完成模塊檢測,入網(wǎng)參數(shù)設(shè)定等TIMEOUT 10ABORT BUSYABORT ERRORABORT NO CARRIERABORT NO DIALTONEABORT RING如果遇到MODEM回應(yīng)BUSY,ERROR,NO CARRIER,NO DIALTONE則立即報錯并退出撥號。39。39。 AT\r TIMEOUT 10 OK AT+IPR=4800 設(shè)置波特率。OK AT+CGDCONT=1,“ip”,“cmnet” OK AT+CGCLASS=“B” OK AT+CGACT=1,1 OK ATDT*99***1 外送撥號ATDT*99***1 命令。CONNECT “”當(dāng)判到“CONNECT回應(yīng)時,建立ppp0——ttyS2的雙向連接,生成虛擬設(shè)備ppp0,啟用ppp0接入網(wǎng)絡(luò)。腳本相關(guān)參數(shù)意義如下:AT+CGDCONT=1,“ip”,“cmnet” 外送AT+CGDCONT=1,ip,cmnet 命令。設(shè)置GPRS接人網(wǎng)關(guān)。其中CMNET為移動夢網(wǎng)的接人網(wǎng)關(guān);AT+CGCLASS=“B” 設(shè)置移動終端的類別,通過設(shè)置移動終端的類別為B類,即同時監(jiān)控多種業(yè)務(wù);但只能運行一種業(yè)務(wù),即在同一時間只能使用GPRS上網(wǎng), 或者使用GSM的語音通信。AT+CGACT=1,1 激活GPRS功能,如果返回OK,則GPRS連接成功。如果返回ERROR則意味著GPRS失敗。這時候應(yīng)該檢查一下SIM卡的GPRS業(yè)務(wù)是否已經(jīng)開通,GPRS模塊天線是否安裝正確等問題。由于中國移動在GPRS與Internet網(wǎng)中問建立了許多相當(dāng)于ISP的網(wǎng)關(guān)支持節(jié)點(GGSN),以連接GPRS網(wǎng)與外部的Internet網(wǎng)。GPRS模塊在設(shè)定好初始值后就為下一。步實現(xiàn)PPP撥號,獲得移動網(wǎng)絡(luò)分配的動態(tài)IP做好準(zhǔn)備。chapsecrets和papsecrets腳本使用那一種取決于網(wǎng)絡(luò)服務(wù)提供商,對端需要什么方式認(rèn)證就調(diào)用什么方式的腳本,其實在實際中移動夢網(wǎng)的接入是不需要用戶名和密碼的,但是嵌入式linux中必須發(fā)送一個用戶名,不允許發(fā)送空值,所以用戶名可以隨意設(shè)一個,密碼為空即可。兩個腳本的內(nèi)容一樣如下:client server secret IPaddress foo * *3. shell腳本調(diào)試在shell腳本中編程通過中程序加入調(diào)試語句把一些關(guān)鍵地方或出錯的地方的相關(guān)信息顯示出來是非常重要的調(diào)試手段,腳本執(zhí)行中使用echo語句輸出信息,另外下面介紹一下調(diào)試shell腳本的方法,這些方法也是在開發(fā)中頻繁使用的:sh n 只讀取shell腳本,但不實際執(zhí)行;sh x 進(jìn)入跟蹤方式,顯示所執(zhí)行的每一條命令;sh c string 從strings中讀取命令;trap命令用于捕獲指定的信號并執(zhí)行預(yù)定義的命令(trap 39。mand39。 signal)等。腳本調(diào)試的命令還有很多,由于程序中開發(fā)的腳本比較簡單,所以不再介紹復(fù)雜的調(diào)試命令。腳本編寫并完成調(diào)試后輸入pppd call gprs命令,即可實現(xiàn)認(rèn)證上網(wǎng)。 軟硬件查錯階段具體方案實施后,遇到了很多困能,嵌入式系統(tǒng)的排錯是一件比較麻煩的事情,一旦出現(xiàn)錯誤后造成問題的原因是多方面的,如軟件或硬件,其中軟件又包括嵌入式linux系統(tǒng)或自己編寫的撥號腳本;硬件可能是GPRS模塊的問題,也可能是模塊接口或開發(fā)板接口的問題等等,系統(tǒng)的排錯是一個枯燥而漫長的過程。 開發(fā)過程中系統(tǒng)遇到一個最主要的錯誤就是系統(tǒng)腳本運行后,GPRS模塊沒有反應(yīng),為了解決這個問題,我主要做了一下工作:1. 驗證GPRS模塊是否正常;2. 驗證腳本AT指令是否正確;3. 驗證linux下串口是否工作;4. 驗證一下腳本參數(shù)配置是非與模塊默認(rèn)配置吻合,GPRS模塊引腳信號是否受到干擾等,由于所用模塊沒有使用手冊,且該模塊在實際應(yīng)用中使用較少,另外缺少測量引腳信號設(shè)備,所以這兩項檢查未能進(jìn)行。 驗證1. 驗證GPRS模塊是否正常這一部分工作我主要是在開發(fā)板上燒寫系統(tǒng)的演示程序,通過收發(fā)短信和撥號功能,證實了模塊的完好性,這部分工作只要燒寫一下實驗程序即可,比較簡單。2. 驗證腳本AT指令是否正確因為GPRS模塊在測試時是正常的,所以我們可以在測試的平臺上編寫測試代碼,用于檢驗AT指令是否正確。我們首先要安裝IDE開發(fā)調(diào)試工具,IDE可以將調(diào)試后的程序直接下載到目標(biāo)板上的內(nèi)存中執(zhí)行,操作起來非常方便。實驗結(jié)果:AT mand ATOK結(jié)果表明模塊對基本的AT指令還是能夠正常響應(yīng)的。3. 驗證linux下串口是否工作這一部分首先對串口驅(qū)動與GPRS模塊接口電路進(jìn)行了對比,通過查看S3C2410的芯片圖,模塊引腳應(yīng)該也是和驅(qū)動程序匹配的,在嵌入式Linux中初始化串口2用的是GPHGPH7收發(fā),而GPRS接口電路用的也是這兩個引腳,所以驅(qū)動應(yīng)該也沒有問題,除非開發(fā)板所帶的linux操作系統(tǒng)的串口驅(qū)動異常,接下來編寫了一個串口收發(fā)程序,程序通過循環(huán)的發(fā)送AT指令和接受,來檢驗?zāi)K反應(yīng)的值,實驗表明串口返回信息是亂碼的,而此時基本可以排除波特率、硬件流控和數(shù)據(jù)壓縮對其造成的影響,剩下的問題極有可能是模塊有特別的配置或串口收發(fā)信號受到了影響才導(dǎo)致輸出混亂的。 運行結(jié)果執(zhí)行程序模塊不能進(jìn)行正確的相應(yīng),結(jié)果如圖43:圖 43如果只驗證撥號認(rèn)證過程,可以不驗證模塊返回值而直接順序執(zhí)行程序,結(jié)果如圖445所示:圖 44圖 45 第5章 結(jié)論本文研究的主要內(nèi)容是在嵌入式linux下實現(xiàn)GPRS上網(wǎng)的問題,這個課題相對比較新穎,在以往的學(xué)習(xí)中接觸的很少,在開發(fā)過程中遇到很多困難,壓力較大,整個開發(fā)過程是一個邊學(xué)習(xí)邊開發(fā)的過程,雖然最終系統(tǒng)做的不是很理想,但是通過此次畢業(yè)設(shè)計使我的學(xué)習(xí)能力和抗壓能力都有很大提高,收獲還是很多的。本文研究的主要難點是嵌入式系統(tǒng)系統(tǒng)移植、GPRS上網(wǎng)方案的確定還有就是錯誤排除,開發(fā)伊始無論是對嵌入式、對linux系統(tǒng)還是對GPRS都不是很了解,可以說一切都要從最基本的開始學(xué)起,工作量比較大,成果卻不明顯,這是我第一次做嵌入式的開發(fā)不可回避的事實。我認(rèn)為做嵌入式系統(tǒng)開發(fā)的難點就是在開發(fā)過程中要兼顧軟硬件,考慮一個問題的時候方向多樣化,不像我們在PC上編程,大多數(shù)情況下你只要考慮軟件即可。嵌入式系統(tǒng)的硬件一旦有問題,往往都是比較底層的問題,這對開發(fā)者的知識水平要求較高,還有就是很多設(shè)備的驅(qū)動程序都要量身定做,設(shè)備運行一旦出現(xiàn)問題,研究設(shè)備驅(qū)動程序也是不得不做的事情,所以說嵌入式系統(tǒng)開發(fā)是一個知識密集型的行業(yè),是難度較大的行業(yè)。本系統(tǒng)的整個開發(fā)過程就是在不斷戰(zhàn)勝自我的過程,困惑、迷茫總是揮之不去,開發(fā)中遇到很多問題,大多數(shù)都在老師和同學(xué)的幫助下得到解決,這里舉1個典型的例子,為了了解如何通過ppp撥號上網(wǎng)我查了很多資料,但是大多數(shù)資料都是說系統(tǒng)要有一個虛擬設(shè)備ppp0,這個設(shè)備就相當(dāng)于我們的網(wǎng)卡,讓我一直迷惑不解的是我在內(nèi)核中加入ppp支持后,系統(tǒng)的設(shè)備中多了一個ppp虛擬設(shè)備 ,而沒有ppp0,經(jīng)過幾周的摸索與嘗試以后這個問題終于水落石出,原來ppp0是在pppd撥號過程中才建立的虛擬設(shè)備,它與GPRS模塊接口建立映射關(guān)系,進(jìn)行相關(guān)協(xié)議的交互。像這種問題不親自動手去做是很能有切實的感受的。開發(fā)過程中還有一個比較重要的問題就是所用模塊缺少最基本的參數(shù)說明,使用手冊就更是沒有,遇到問題只能直接向技術(shù)支持咨詢,而咨詢的結(jié)果又比較令人失望,因為他們公司還沒有進(jìn)行過模塊在linux環(huán)境下的測試,所以他們給的意見也只能是理論上的指導(dǎo),具體的情況還要自己去摸索去解決,這大大加重了本系統(tǒng)的工作量?,F(xiàn)在本系統(tǒng)的設(shè)計已經(jīng)很明朗,并且就目前的結(jié)果來看設(shè)計也是比較合理且是可行的,但現(xiàn)在一個“原本不該出現(xiàn)的問題”卻成了本系統(tǒng)的主要難點,說它是不該出現(xiàn)的問題因為起初我們向英貝特公司咨詢的時候,他們說GPRS模塊是不需要專門的驅(qū)動的,在linux下通過串口可以直接使用,但是目前的結(jié)果表明在linux下模塊的返回值是異常的,針對異常的現(xiàn)象我做了一些嘗試和驗證,如通過在開發(fā)板上運行無操作系統(tǒng)的演示程序,證明了模塊的完好性;在IDE環(huán)境下測試AT指令,模塊也能返回預(yù)期的結(jié)果;查看2410的芯片手冊,發(fā)現(xiàn)串口初始化所用的引腳與GPRS模塊所需的情況也是相符的,編寫串口讀寫程序發(fā)現(xiàn)串口能收能發(fā),但是數(shù)據(jù)也是亂碼的,當(dāng)我用導(dǎo)線將開發(fā)板上的串口1和串口2的對應(yīng)引腳相連后,偶爾能收到正常的數(shù)據(jù),這說明開發(fā)過程中所用的串口2是肯定有問題的,問題可能是串口2的驅(qū)動問題,也可能是設(shè)備初始化的過程中串口2的引腳信號受到其他設(shè)備的影響,導(dǎo)致了模塊返回值的混亂。因為所用的模塊接口比較特殊只能與開發(fā)板上的串口2相連,所以這個問題是必修要解決的問題,由于本人的能力和時間有限,并且在開發(fā)過程中缺少檢測引腳信號的設(shè)備,這個問題只能以后解決了。本系統(tǒng)實現(xiàn)無線上網(wǎng)后根據(jù)最初的計劃,應(yīng)該提供一個接口供其他程序調(diào)用來實現(xiàn)數(shù)據(jù)傳輸,由于TCP/IP協(xié)議棧是內(nèi)置的,所以這部分只要進(jìn)行簡單的Socket編程來實現(xiàn)TCP/UDP數(shù)據(jù)傳輸即可。另外目前本系統(tǒng)的腳本執(zhí)行都是手動的,如果要進(jìn)行應(yīng)用,還必須實現(xiàn)腳本的自動運行,這部分可以在編程中使用EXEC命令來實現(xiàn)?,F(xiàn)在這些工作不能進(jìn)行具體實施了,雖然原理和實現(xiàn)方法都很簡單,但是實際操作的過程中可能還會出現(xiàn)一些問題,相信不會很難解決。參考文獻(xiàn)[1]Design of a Wireless ECG Monitoring System Li Jia, Wu Shuicai, Li Yanzheng, and Bai Yanping Center of Biomedical Engineering Beijing University of Technology, Beijing,China [2]呂治安 Zigbee網(wǎng)路原理與應(yīng)用開發(fā) 北京航空航天大學(xué)出版社出版[3]王久鵬、尚春陽ZigBee和GPRS技術(shù)在無線監(jiān)控系統(tǒng)中的應(yīng)用[4]馬忠梅,李善平等《ARMamp。Linux嵌入式系統(tǒng)教程》北京航空航天大學(xué)出社,[5] (美)Richard Petersen著《Linux技術(shù)大全》,機械工業(yè)出版社,2002年1月[6]王學(xué)龍《嵌入式Linux系統(tǒng)設(shè)計與應(yīng)用》,清華大學(xué)出版社,2001[7]李玉波、朱自強等《LinuxC 編程》,清華大學(xué)出版社2005年9月[8]GPRS系統(tǒng)中國移動通信在線URL: .[9]管耀武、楊宗德,ARM嵌入式無線通信系統(tǒng)開發(fā)實例精講,電子工業(yè)出版社,2006.[10]于明、范書瑞、曾祥燁,ARM9嵌入式系統(tǒng)設(shè)計與開發(fā)教程,電子工業(yè)出版社,2006[11]馬洪連,嵌入式系統(tǒng)設(shè)計,電子工業(yè)出版仕,2006.[12]徐惠鋼、郭治,網(wǎng)絡(luò)火控系統(tǒng)及其構(gòu)建,南京理工大學(xué)學(xué)報,2007[13]孫劍川、周文偉、何瀟潔,單兵通信系統(tǒng)的技術(shù)狀態(tài)和發(fā)展趣勢分析通信與廣播電報,2006[14]鐘章隊,GPRS通用分組無線業(yè)務(wù),人民郵電出版社,2001[15]羅興旺,小型TCP/IP實現(xiàn)研究,中國航天第二研究院,2004[16]夏承遺、王娟、唐樹剛等,應(yīng)用于計算機通信中的差錯檢測與控制技術(shù),天津理工大學(xué)學(xué)報,2006致謝在論文完成之際,我由衷地感謝所有給予我?guī)椭椭С值睦蠋熍c同學(xué)。特別要感謝我的導(dǎo)師張書欽老師。張老師憑借淵博的理論基礎(chǔ)和豐富的實踐經(jīng)驗給我的畢業(yè)設(shè)計工作很多指導(dǎo),同時張老師敏捷的思維,嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和忘我的工作作風(fēng)也使我受益終生。最后,衷心的感謝各位評閱老師!感謝你們在百忙之中參與我的論文評閱工作