注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
daicheng的个人空间 https://home.eeworld.com.cn/space-uid-78216.html [收藏] [复制] [分享] [RSS]
日志

无线上网方案的解决

已有 2913 次阅读2010-6-9 14:57 |

由于 目前GSM模块协议栈内置的不足让数据上行与下载出现平静,那么需要协议栈外置
下面就是测试过程:

文档目录

   linux PC机下实现GPRS上网方案

1)   软件环境

2)   拨号脚本的获得

3)   各个脚本的内容

4)   硬件环境

在嵌入式LinuxGPRS上网方案

1)  /软件环境

2)    Linux内核支持PPP

3)    ppp套件安装

4)  ppp脚本配置

具体实施

1.在linux PC机下实现GPRS上网方案

l  软件环境

PC机上安装VMware,新建一个虚拟机安装redhat9操作系统(linux-2.4内核),在操作系统中已经默认安装好了pppdchatpppdumppppstats应用程序,不需要再下载安装

l  拨号脚本(ppp-on,ppp-off,ppp-on-dialer)的获得:

/usr/share/doc/ppp-2.4.1/scripts/(linux2.4内核默认安装的是ppp-2.4.1),将ppp-on,ppp-off,ppp-on-dialer复制到相应的目录下,并修改他们的权限,使其具有可执行权限,用chmod命令。

l  各个脚本的具体内容

脚本ppp-on

   #!/bin/sh

pppd modem -d -detach lock /dev/ttyS0

19200 kdebug 4 file /etc/ppp/options

crtscts noipdefault netmask 255.255.255.0

defaultroute connect /etc/ppp/ppp-on-dialer  说明:几个需要设置的参数

1.    参数/dev/ttyS0:它指的是PC机的串口1

2.    参数19200:它指的是与G24通信的波特率,该参数应设置成与G24初始化的波特率相同。

3.    参数connect /etc/ppp/ppp-on-dialer:它指的是pppd在执行过程中调用的chat程序所在的脚本

 

脚本ppp-off

#!/bin/sh

if [ "$1" = "" ]; then

          DEVICE=ppp0

else

          DEVICE=$1

fi

if [ -r /var/run/$DEVICE.pid ]; then

        kill -INT `cat /var/run/$DEVICE.pid`

        if [ ! "$?" = "0" ]; then

                rm -f /var/run/$DEVICE.pid

                echo "ERROR: Removed stale pid   file"

                exit 1

        fi

        echo "PPP link to $DEVICE terminated."

        exit 0

fi

echo "ERROR: PPP link is not active on $DEVICE"

exit 1

说明:ppp-off脚本可以不用修改

 

脚本ppp-on-dialer

#!/bin/sh

exec chat -v \

#起动 chat -v 告诉 chat 将其所有的输出/入拷贝到系统记录里(通常是 /var/log/messages).一旦你觉得 chat 指令稿的运作稳定而可靠,编辑这一行把 -v 移除以便减少你系统记录的混杂.

TIMEOUT 5 \

#这设定接收所期待的输入逾时时限为三秒.如果你使用真的是很慢的计算机那麽你可能得要增加这个设定到五秒或是十秒!

ABORT   "BUSY"  \

#如果接收到 BUSY 字串,中止执行.

ABORT   "ERROR"  \

#如果接收到 NO ANSWER 字串,中止执行           

ABORT   "NO CARRIER" \

#如果接收到 NO CARRIER 字串,中止执行          

'' \rAT   \

#不期待数据机传送任何讯息并且送出 AT 字串.

OK  'AT+CGDCONT=1,"IP","CMNET"' \

#接收到OK后,设置接入点为“CMNETPDP_TYPE

IP

OK  'ATDT*99***1#'  \

#接收到OK后,拨接我们要拨的电话号码

CONNECT ''  \

#接收到CONNECT后,退出程序

 

pap-secrets GPRS认证配置文件)

 

# Secrets for authentication using PAP

# client    server     secret                    IP addresses

''      *     ''      *

说明:

1.    clientsecret指的是你的isp所提供给你的用户名和密码,这里可以设置为空,

2.    server指的是你所连接的远端服务器用*号代替

3.    IP address指的是本地的ip地址,我们可以不指定,也可以用*号代替

 

除此之外还需要设置/etc/resolv.conf写好移动提供的DNS域名解析服务器的ip地址。

说明:这里使用固定的两个ip地址,如下

       211.136.20.203

       211.136.17.107

最后切换目录到你将ppp-on,ppp-off复制的目录,执行./ppp-on进行拨号。执行./ppp-off结束拨号。

硬件环境

l  硬件连接问题:PC机串口连G24 GPRS模块,在连接前要做好串口映射,方法:单击VMware菜单栏VMsettings选项,在弹出的菜单选择hardware选项卡,单击add按钮,在新弹出的对话框单击“下一步”选择Serial Port即可   

 

2. 在嵌入式LinuxGPRS上网方案

 

l  /软件环境

 

基于S3C2440的嵌入式系统,COM1连接PCCOM0连接G24 GPRS模块。

该系统运行在Linux 2.6.12操作系统下,使用ppp套件通过G24进行PPP拨号。

 

l  Linux内核支持PPP

 

进入Linux内核目录,执行#make menuconfig

Network Device Support à

       <*> PPP (point-to-point protocol) support

       [*]   PPP multilink support

       <*> PPP support for async serial ports

       <*> PPP support for sync tty ports

       <*> SLIP (serial line) support

       [*]   CSLIP compressed headers

                        

l  ppp套件安装

 

1.    下载ppp-2.4.3

2.    ppp-2.4.3.tar.gz解压至目录

×这里默认ppp源码目录为$(PPP)

              #tar -zxvf ppp-2.4.4.tar.gz

⒊获得交叉编译工具链

  cross-3.3.2.tar.bz2复制到根目录下,在/usr/local目录下建立arm目录。回到根目录解压cross-3.3.2.tar.bz2

#tar -jxvf cross-3.3.2.tar.bz2

⒋然后交叉编译ppp

      #cd $(PPP)

#./configure

export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc   export COMPILE_CROSS=/usr/local/arm/3.4.1/bin/   arm-linux-

#make

        ppp套件安装至嵌入式系统中:

这里默认可执行文件在嵌入式系统下的目录为$(EMB_BIN)

#cp $(PPP)/chat/chat $(EMB_BIN)

#cp $(PPP)/pppd/pppd $(EMB_BIN)

#cp $(PPP)/pppdump/pppdump $(EMB_BIN)

#cp $(PPP)/pppstats/pppstats $(EMB_BIN)

              这里默认嵌入式系统的etc目录为$(EMB_ETC)

              #mkdir $(EMB_ETC)/ppp

              #cp $(PPP)/etc.ppp/* $(EMB_ETC)/ppp

 

ppp脚本配置

ppp-onGPRS启动脚本)

#!/bin/sh

pppd modem -d -detach lock /dev/ttySAC0 19200 kdebug 4 file /etc/ppp/options crtscts noipdefault netmask 255.255.255.0 defaultroute connect /etc/ppp/ppp-on-dialer

说明

1.    参数/dev/ttySAC0:指的是s3c2440开发板的串口0

2.  其他的参数设置可参考上面的参数设置说明

ppp-off(关闭GPRS连接脚本)

#!/bin/sh

if [ "$1" = "" ]; then

      DEVICE=ppp0

else

      DEVICE=$1

fi

if [ -r /var/run/$DEVICE.pid ]; then

        kill -INT `cat /var/run/$DEVICE.pid`

#

# If the kill did not work then there is no process running for this

# pid. It may also mean that the lock file will be left. You may wish

# to delete the lock file at the same time.

        if [ ! "$?" = "0" ]; then

                rm -f /var/run/$DEVICE.pid

                echo "ERROR: Removed stale pid file"

                exit 1

        fi

#

# Success. Let pppd clean up its own junk.

        echo "PPP link to $DEVICE terminated."

        exit 0

fi

#

# The ppp process is not running for ppp0

echo "ERROR: PPP link is not active on $DEVICE"

exit 1

说明:ppp-off脚本的内容可以不用修改

 

$(EMB_ETC)/ppp/ppp-on-dialer GPRS连接配置文件)

TIMEOUT      60

ABORT   "BUSY"

ABORT   "ERROR"

ABORT   "NO CARRIER"

'' AT

"OK" "AT+CGDCONT=1,\042IP\042,\042CMNET\042"

"OK" "ATDT*99***1#"

"CONNECT"

说明:该脚本的参数设置说明可以参考上面的设置说明

$(EMB_ETC)/ppp/pap-secrets

/dev/ttySAC0

#指定连接设备为串口0

19200

#波特率为19200

Modem

#使用modem control line

Crtscts

#使用硬件流控

Defaultroute

#将该连接作为系统的默认路由

asyncmap 0

#使用async character map -- 32-bit hex; each bit is a character

lock

#使pppd连接时锁定这个串口设备

$(EMB_ETC)/ppp/pap-secrets GPRS认证配置文件)

# Secrets for authentication using PAP

# client    server     secret                    IP addresses

''      *     ''      *

说明:该文档的参数设置可参考上面的设置说明

 

 

 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章