zoukankan      html  css  js  c++  java
  • linux下GPRS模块ppp拨号上网

    ------------------------------------------------------------------------------------------------------------------------------

    交叉编译器:arm-linux-gcc-4.5.4

    Linux内核版本:Linux-3.0

    主机操作系统:Centos 6.5

    开发板:FL2440

    GPRS:SIM900A

    在开发SIM900模块之前,开发板已经加载了linux内核以及文件系统,并且开发板串口已经使能。并且一定要注意的是:要有一张没有欠费的电话卡!不要笑,这是个很严肃的问题!

    ------------------------------------------------------------------------------------------------------------------------------

    所需源码:

    ppp-2.4.4.tar.gz  http://download.chinaunix.net/download.php?id=35208&ResourceID=8334

    注:个人觉得这是一个比较典型又比较简单的移植问题。

    大体步骤:添加内核ppp上网的支持-->编译ppp-2.4.4生成一些可执行文件(pppd, chat, pppdump, pppstats)放到开发板的/usr/sbin/目录下-->将可执行脚本放在开发板的指定位置(/etc/ppp/peers/gprs, /etc/ppp/chat-gprs-connect),并执行pppd命令。

    一、添加内核支持

    Linux-3.0以上的版本中,rt3070的驱动已经加入了内核源码中去了,本篇用的是Linux-3.0的内核,只需要在内核的make menuconfig中选择ppp上网的支持就可以了。

    修改如下:

    Device Drivers --->
      [*] Network device support --->
        <*> PPP (point-to-point protocol) support
        [*] PPP multilink support (EXPERIMENTAL)
        <*> PPP support for async serial ports
        <*> PPP support for sync tty ports
        <*> SLIP (serial line) support
        [*] CSLIP compressed headers

     

    二、编译ppp-2.4.4

    # tar -xzf  ppp-2.4.4.tar.gz

    # ./configure

    # make CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc (交叉编译器)

    如果编译成功,则会在pppd, chat, pppdump, pppstats下分别生成可执行程序pppd, chat, pppdump, pppstats。将其拷贝到开发板的/usr/sbin目录下。

    三、开发板的配置

    # vi /etc/ppp/peers/gprs

     1 # Usage: root>pppd call gprs
     2 
     3 #set seriral
     4 /dev/ttyS1
     5 
     6 # set baudrate
     7 115200
     8 
     9 # set flowdate
    10 nocrtscts
    11 
    12 connect '/usr/sbin/chat -v -f /etc/ppp/gprs-connect-chat'
    13 
    14 #set debug ,send message to /var/log/messages
    15 debug
    16 
    17 #To keep pppd on the terminal
    18 nodetach
    19 
    20 #hide-password
    21 
    22 # Accept the peer's idea of our local IP address
    23 ipcp-accept-local
    24 # Accept the peer's idea of its (remote) IP address
    25 ipcp-accept-remote
    26 
    27 #dial up connetion as the default route
    28 defaultroute
    29 
    30 usepeerdns

    # vi /etc/ppp/chat-gprs-connect

     1 #Copyright (c) 2016 guanlei 995318056@qq.com
     2 # This is second part of the ppp dial script. It will perform the connection
     3 #
     4     ABORT           'BUSY'
     5     ABORT           'NO ANSWER'
     6     ABORT           'NO CARRIER'
     7     ABORT           'NO DIALTONE'
     8     ABORT           'ERROR'
     9     ABORT           '
    RING
    
    RING
    '
    10     TIMEOUT         20
    11 ''               
    AT
    12 #set  apn
    13 OK              AT+CGDCONT=1,"IP","cmnet"
    14 # ............
    15      OK              ATDT*99***1#    //这里要改成相应的运行商的设置
    16      SAY             " + requesting data connection
    "
    17      CONNECT         ''
    18      SAY             " + connected
    "

    使能pppd:

    # pppd call gprs &  (&表示后台运行)

    配置完就可以了,现在可以测试一下上网功能了:

    # ping www.baidu.com

    PING www.baidu.com (103.235.46.39): 56 data bytes

    64 bytes from 103.235.46.39: seq=0 ttl=48 time=555.719 ms

    64 bytes from 103.235.46.39: seq=1 ttl=48 time=273.481 ms

     

    --- www.baidu.com ping statistics ---

    3 packets transmitted, 2 packets received, 33% packet loss

    round-trip min/avg/max = 273.481/414.600/555.719 ms

    # ifconfig

    ppp0      Link encap:Point-to-Point Protocol  

              inet addr:10.110.1.110  P-t-P:192.200.1.21  Mask:255.255.255.255

              UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

              RX packets:10 errors:0 dropped:0 overruns:0 frame:0

              TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

              collisions:0 txqueuelen:3 

              RX bytes:686 (686.0 B)  TX bytes:557 (557.0 B)

  • 相关阅读:
    SQLAlchemy使用merge
    Flask 处理文件 file
    PostgreSQL 常用命令
    Elasticsearch 常用命令
    Python3 encode中的unicode-escape和raw_unicode_escape
    Python 字符串16进制转换为字符串
    利用 Redis 实现接口频次限制
    Flask-Limiter 接口访问频次限制
    博客内容管理(2)-「解决方案」分类的内容设定和编写位置
    踩坑 | u盘 | u盘插入电脑无法识别打开
  • 原文地址:https://www.cnblogs.com/xiaohexiansheng/p/5778432.html
Copyright © 2011-2022 走看看