在嵌入式Linux下GPRS上网方案,linuxgprs(2) 在ppp连接


让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

ppp套件安装

Ø 下载ppp: ×最新版本为2.4.4

Ø 将ppp-2.4.4.tar.gz解压至目录

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

#tar zxvf ppp-2.4.4.tar.gz

Ø 然后交叉编译ppp:

#cd $(PPP)

#./configure

#make CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc ×这里指定交叉编译器

Ø 将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套件配置

$(EMB_BIN)/dial-on.sh (GPRS启动脚本)

#!/bin/sh

#define dial_on function

dial_on()

{

#test if pppd is running

pppd_stat=`ifconfig|grep ppp|wc -l|cut -b 7-7`

if [ $pppd_stat -gt 0 ]

then

echo "ppp connection's already started."

else

#close ethernet interface

ifconfig eth0 down

#ppp start

pppd modem /dev/ttyS1 57600 nocrtscts lock connect "chat -v -f /etc/ppp/gprs-connect" user "" noauth debug defaultroute

# pppd配置说明:

# ttyS1:连接GPRS模块SIM300的串口

# 57600:GPRS的拨号速率

# nocrtscts:无流控

# lock:锁定设备

# connect “chat –v –f /etc/ppp/gprs-connect”:GPRS连接脚本文件

# user “”:用户名,这里是无

# noauth:无需认证

# debug:输出调试信息

# defaultroute:此拨号连接作为默认路由

echo "ppp is starting..."

fi

}

#dial on gprs

dial_on

#wait for ppp's init

sleep 5

pppd_stat=`ifconfig|grep ppp|wc -l|cut -b 7-7`

if [ $pppd_stat -eq 0 ]

then

echo "trying 2nd time to call ppp"

dial_on

sleep 5

fi

pppd_stat=`ifconfig|grep ppp|wc -l|cut -b 7-7`

if [ $pppd_stat -eq 0 ]

then

echo "pppd error!"

echo "please check pppd's config files"

fi

#open ethernet interface

ifconfig eth0 up

#end

$(EMB_BIN)/dial-off.sh (关闭GPRS连接脚本)

#!/bin/sh

#get pppd's pid

pid=`pidof pppd`

#if pppd process is running

if [ -n $pid ]

then

#kill pppd

kill $pid

#open the ethernet interface

ifconfig eth0 up

echo "ppp connection is closed."

else

echo "ppp connection isn't existed."

fi

#end

$(EMB_ETC)/ppp/gprs-connect (GPRS连接配置文件)

#GPRS连接超时设置

TIMEOUT 60

#若MODEM遇到BUSY、ERROR、NO CARRIER等信息时,停止拨号

ABORT "BUSY"

ABORT "ERROR"

ABORT "NO CARRIER"

#外送“AT”指令

'' AT

#当得到“OK”回应时,外送AT+CGDCONT=1,"IP","CMNET"命令

"OK" "AT+CGDCONT=1,42IP42,42CMNET42"

#当得到“OK”回应时,外送ATDT*99***1#命令

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

#当得到“CONNECT”回应时,拨号结束,程序退出

"CONNECT"

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

# Secrets for authentication using PAP

# client server secret IP addresses

'' * '' *

说明

(1) 还需要在$(EMB_ETC)/ppp目录下创建指向$(EMB_ETC)/resolv.conf的链接,用于指定PPP连接的DNS。

(2) 在ppp连接时,需要关闭eth连接。在脚本中已经设置好了,首先关闭eth连接,然后进行ppp连接,在ppp连接完成时,再开启eth连接。

(3) 最好在系统中开启syslogd进程,这样在/var/log/messages文件中会记录GPRS进行拨号的DEBUG信息,便于调试。

(4) 运行拨号脚本后,可以使用#ifconfig查看PPP连接信息。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/baozhongchao/archive/2010/02/03/5284551.aspx

相关内容

    暂无相关文章