嵌入式linux gprs,在嵌入式Linux下GPRS上网方案[zt]

在嵌入式Linux下GPRS上网方案[zt]

硬/软件环境

基于S3C2410的嵌入式系统,COM1连接PC,COM2连接SIM300 GPRS模块。该系统运行在Linux 2.6.14操作系统下,使用ppp套件通过SIM300进行PPP拨号。

让Linux内核支持PPP

进入Linux内核目录,执行#make menuconfigNetwork 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 functiondial_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 gprsdial_on #wait for ppp's initsleep 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 5fi 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 interfaceifconfig eth0 up #end

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

#!/bin/sh #get pppd's pidpid=`pidof pppd` #if pppd process is runningif [ -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,\042IP\042,\042CMNET\042"#当得到“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连接信息。

©著作权归作者所有:来自51CTO博客作者3444542的原创作品,如需转载,请注明出处,否则将追究法律责任

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值