日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GPRS模块--PPP手动拨号

發布時間:2023/12/29 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GPRS模块--PPP手动拨号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

前言:

? ? fl2440開發板介紹:https://blog.csdn.net/PipiAvenger/article/details/79563996

? ? 目前,手機端基本普遍具有GPRS模塊,該模塊集成了手機常見的功能如:打電話、發短信、上網等功能,那么這些常見的功能能否提供給安裝了Linux最小系統的開發板使用呢?答案是肯定的,當然要實現1個模塊添加到一個新的開發板上,這需要解決許多問題,例如:它們的連接方式是什么?

怎么確認他們是否建立連接?他們成功建立之后交流方式又是什么?

? ? 本文介紹關于將一個安裝了Linux系統(DIY)的開發板如何與GPRS模塊連接,并且使用GPRS模塊的特殊指令進行PPP撥號上網;

? ? 感興趣可以了解一下關于開發板使用AT指令集進行打電話,接電話,掛電話,發短信,收短信測試,以及對應的編程:



?

工具準備:

?? ?本次使用搭載sim900b的GPRS模塊;

? ? 以及FL2440實驗板;

? ? windows8.1及安裝了CentOS6.7的虛擬機;

? ? tftp下載軟件;

? ? 一根ch340usb轉串口的串口線;


?

一.GPRS理論基礎:

?? ?GSM模塊,是將GSM射頻芯片、基帶處理芯片、存儲器、功放器件等集成在一塊線路板上,具有獨立的操作系統、GSM射頻處理、基帶處理并提供標準接口的功能模塊。GSM模塊根據其提供的數據傳輸速率又可以分為GPRS模塊、EDGE模塊和純短信模塊。短信模塊只支持語音和短信服務。GPRS,可說是GSM的延續。它經常被描述成“2.5G”,也就是說這項技術位于第二代(2G)和第三代(3G)移動通訊技術之間。GPRS的傳輸速率從56K到114Kbps不等,理論速度最高達171k。相對于GSM的9.6kbps的訪問速度而言,GPRS擁有更快的訪問數據通信速度,GPRS技術還具有在任何時間、任何地點都能實現連接,永遠在線、按流量計費等特點。EDGE技術進一步提升了數據傳輸的速率到384K-473K,被稱為”2.75G”,數據傳輸速率更2倍于GPRS。目前,國內的GSM網絡普遍具有GPRS通訊功能,移動和聯通的網絡都支持GPRS,EDGE在部分省市實現了網絡覆蓋。?

?? ?GPRS模塊,是具有GPRS數據傳輸功能的GSM模塊。GPRS模塊就是一個精簡版的手機,集成GSM通信的主要功能于一塊電路板上,具有發送短消息、通話、數據傳輸等功能。GPRS模塊相當于手機的核心部分,如果增加鍵盤和屏幕就是一個完整的手機。普通電腦或者單片機可以通過RS232串口與GPRS模塊相連,通過AT指令控制GPRS模塊實現各種基于GSM的通信功能。?

? ? 本次使用搭載sim900b的GPRS模塊;

? ? 以及FL2440實驗板;

?

以下凡是localhost表示在在自己虛擬機(CentOS6.7)下操作

二.配置開發板的內核,以保證支持ppp撥號上網

? ? (一)進行模塊連接

?? ?1.GPRS模塊使用串口轉usb連接到FL2440開發板上(并且各自插上電源);

?? ?2.用一根網線將PC和開發板相連(使用tftp下載方式,下載到開發板上,因此需要這一步);

?? ?3.額外需要一個usb轉串口將PC與開發板相連(使用SecureCRT的方式登入進開發板系統);

? ??

? ? (二)配置最小系統Linux內核對PPP撥號的支持:

?? ?按上述操作之后,還需要對FL2440開發板進行內核配置(系統內核選取linux3.0(可在Linux官網上下載的到,或者找我以前的博客,前面也有記錄)),其中就需要設置內核對ppp和usb轉串口的支持(注意usb的時鐘線問題(可參考我的博客:常見問題故障));

?? ?首先找到開發板對應的內核:/home/guozhihao/Desktop/fl2440/linux/linux-3.0

? ? 然后在該路徑下,輸入make menuconfig進入以下界面:

?? ?

[guozhihao@localhost linux-3.0]$ make menuconfig

? ??

? ? Dvice Drivers --->Network device support --->

? ??

? ? 關于PPP撥號的勾選上;

? ? 完成PPP撥號內核的設置;

?

三.ppp工具下載

? ?

[guozhihao@localhost ppp]$ wget https://download.samba.org/pub/ppp/ppp-2.4.7.tar.gz

? ? 上述鏈接需要使用谷歌搜索,才可以找到,CSDN下載需要積分;且,該版本(2.4.7)

? ? 說明:

? ? Linux下用ppp上網需要用到兩個程序:一個是pppd還有一個是chat;這兩個已包含在內;

? ? pppd的功能是在成功獲得分配的IP地址之后創建一個網絡設備;

? ? chat是用于與GPRS模塊的AT命令交流,發送聯網請求對應的AT命令;

?

四.解壓并設置對應參數

? ??(一)執行./configure使其生成對應的Makefile:

? ? 原因:前面有介紹關于configure Makefile 兩者關系

?? ?

??

[guozhihao@localhost ppp]$ tar -xzf ppp-2.4.7.tar.gz[guozhihao@localhost ppp]$ cd ppp-2.4.7[guozhihao@localhost ppp-2.4.7]$ ls Changes-2.3 contrib linux pppdump README.eap-srp README.MSCHAP81 README.sol2 chat etc.ppp modules pppstats README.linux README.pppoe scripts common FAQ PLUGINS README README.MPPE README.pppol2tp SETUP configure include pppd README.cbcp README.MSCHAP80 README.pwfd solaris[guozhihao@localhost ppp-2.4.7]$ cd chat/

?

? ??

?? ?(二)修改對應的Makefile信息(添加使用最小內核系統使用的交叉編譯器位置):

?? ?

[guozhihao@localhost chat]$ vim Makefile

? ? 添加代碼如下:(紅色為添加代碼)

?? ?

CC =/opt/xtools/arm920t/bin/arm-linux-gcc

? ? 以及讓其以靜態的形式存放在arm-linux開發板上

$(CC) -o chat chat.o --static

? ??

? ? (三)添加完后,執行make,產生chat文件:

?? ?

[guozhihao@localhost chat]$ file chatchat: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.16, not stripped

? ? 可看到對應的chat文件為32位 ARM 靜態可執行文件;? ??

?

?? ?(四)與上一步相同步驟:

?? ?

[guozhihao@localhost ppp-2.4.7]$ cd pppd/

? ? 同樣對pppd文件下的Makefile進行配置;

?? ?

[guozhihao@localhost pppd]$ vim Makefile

? ? 添加代碼:

CC = /opt/xtools/arm920t/bin/arm-linux-gcc

??

[guozhihao@localhost pppd]$ file pppdpppd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped

?? ?

五.編譯完成后移植

? ? 以下方法可供參考,你也可以使用其他的方法進行移植:

?? ?由于下載包下載到虛擬機下,所以借助PC當中介,進行傳輸文件;

? ? 1.將之前的編譯完成ELF文件,也就是pppd、chat使用tftp下載的方式,下載到開發板上;

? ? 以pppd文件為例:

?? ?

[guozhihao@localhost pppd]$ sz pppdrzStarting zmodem transfer. Press Ctrl+C to cancel.Transferring pppd...100% 671 KB 671 KB/s 00:00:01 0 Errors

? ? 2.在PC端打開tftp軟件,設置好對應位置

? ? 然后在開發板上使用tftp服務下載到/GPRS/ppp?? ?? ? (下載失敗請參照我之前的tftp服務常見問題參考參考:https://blog.csdn.net/PipiAvenger/article/details/79702084)?

?? ?

/GPRS/ppp >: tftp -gr chat 192.168.92.99chat 100% |*******************************| 607k 0:00:00 ETA3.給下載的文件賦予權限/GPRS/ppp >: chmod 777 chat pppd

?? ?

六.撥號上網測試

? ? 在開發板的/etc目錄下新建/ppp/peers目錄并在peers目錄創建如下配置文件:可以參考man手冊(對應命令man 8 pppd)進行配置腳本,并且教你使用的方法:以下是我參考配置而成的腳本

? ??

/etc/ppp/peers >: ls wcdma wcdma-chat-connect wcdma-chat-disconnect

以下是設置對應的腳本:

并且對應的設置參數可以在pppd.h中的全局變量之中查看對應的設置意思


?

??

/etc/ppp/peers >: vim wcdma #Copyright (c) 2018 guozhihao#設置調試信息,并將調試信息記錄到/var/log/messages文件下 debug#lock鎖定正在使用的串口,防止其他應用程序或者命令調用 nodetach lock#設置串口位置 /dev/ttyUSB0#設置波特率 115200#set flowerate crtscts #硬件流控 show-password #顯示密碼 usepeerdns #使用peer路徑下的dns,沒有會自動創建 noauth #取消認證 noipdefault #禁用默認IP novj novjccomp noccp#Accept the peer's idea of our local IP address ipcp-accept-local#ipcp-accept-remote ipcp-accept-remote#對應的參數-s -v -f可以在使用 chat -h來了解是對應設置意思 connect '/GPRS/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect' disconnect '/GPRS/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect'

?


?

? ?

/etc/ppp/peers >: vim wcdma-chat-connect ABORT 'NO CARRIER' #判斷AT返回值參見錯誤 ABORT 'ERROR' ABORT 'NO DIALTONE' ABORT 'BUSY' ABORT 'BO ANSWER' '' \rAT #驅動GPRS模塊必須命令 OK \rATZ #那所有當前參數設置為用戶的自定義參數 OK \rAT+CGDCONT=1,"IP","cmnet" #使用終端設備建立上下文,并設置PDP類型為IP類型,以及接入點為cmnet # OK-AT-OK ATDT*99***1# #進行撥號連接(有些模塊例如sim900a是使用ATD來進行撥號)CONNECT \d\c

?


?

說明:

AT+CGDCONT是設置上網接口的連接點(APN),三大運營商有各自不同的接點:


?

?? ?

/etc/ppp/peers >: vim wcdma-chat-disconnect ABORT "ERROR" #ABORT對錯誤的返回值進行處理 ABORT "NO DIALTONE" SAY "\n Sending break to the modem\n" '' "\K" '' "+++ATH" #+++停止數據傳輸并且進入命令模式,ATH表示掛斷撥號過程 SAY "\nGoodbay\n"

?


?

上述設置好后:

? ? 使用命令pppd call wcdma&

/etc/ppp/peers >: pppd call wcdma& [1]- Done(8) pppd call wcdma /etc/ppp/peers >: abort on (NO CARRIER) abort on (ERROR) abort on (NO DIALTONE) abort on (BUSY) abort on (BO ANSWER) send (^MAT^M) expect (OK) ^MAT^M^M OK -- got itsend (^MATZ^M) expect (OK) ^M ^MATZ^M^M OK -- got itsend (^MAT+CGDCONT=1,"IP","cmnet"^M) expect (OK) ^M ^MAT+CGDCONT=1,"IP","cmnet"^M^M OK -- got itsend (ATDT*99***1#^M) expect (CONNECT) ^M ATDT*99**:1#^M^M CONNECT -- got itsend (\d) ....

?

?

一堆的請求連接信息,最后連接成功,會分配IP地址,并且在你的網卡設備中多出一個ppp0:

此時,需要重新設置默認網卡,本開發板默認路由器為eth0而非ppp0所以:

/etc/ppp/peers >: route add default dev ppp0 //如果該語句沒有設置,發現已經已經分配了地址,但是ping不通可參考這個語句;

?

/etc/ppp/peers >: ping 4.2.2.2 PING 4.2.2.2 (4.2.2.2): 56 data bytes 64 bytes from 4.2.2.2: seq=4 ttl=47 time=835.000 ms 64 bytes from 4.2.2.2: seq=7 ttl=47 time=855.000 ms 64 bytes from 4.2.2.2: seq=11 ttl=47 time=695.000 ms 64 bytes from 4.2.2.2: seq=15 ttl=47 time=815.000 ms ^C --- 4.2.2.2 ping statistics --- 26 packets transmitted, 4 packets received, 84% packet loss round-trip min/avg/max = 695.000/800.000/855.000 ms

ping 成功!

?

連上互聯網后,不僅會分配IP地址,還會分配DNS:如果想查看分配的DNS,可以從查看/etc/ppp/peer/路徑下的resolv.conf里面就是配置的分配的dns;

由于信號特別差:丟包率很高:達到70%~80%;

至此,成功上網;

?

?

?

?

?

總結

以上是生活随笔為你收集整理的GPRS模块--PPP手动拨号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。