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           '\nRING\r\n\r\nRING\r'
10     TIMEOUT         20
11 ''               \rAT
12 #set  apn
13 OK              AT+CGDCONT=1,"IP","cmnet"
14 # ............
15      OK              ATDT*99***1#    //这里要改成相应的运行商的设置
16      SAY             " + requesting data connection\n"
17      CONNECT         ''
18      SAY             " + connected\n"
复制代码

使能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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 使用sigaction查询或设置信号处理方式

一、概述 Linux的系统调用函数sigaction()可以用来查询或设置信号处理方式。 函数声明为&#xff1a; #include <signal.h>int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 如果执行成功返回0&#xff0c;否则返回-1。其中&…

mysql replicate error

工作日志之-MySQL slave Replication ErrorDescription&#xff1a; mysql> start slave;ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log [rootslave ~]# tail /var/log/mysqld.log 090105 11:…

高级I/O(七)--readv和writev函数

From: http://blog.chinaunix.net/uid-26822401-id-3158225.html readv和write函数让我们在单个函数调用里从多个不连续的缓冲里读入或写出。这些操作被称为分散读&#xff08;scatter read&#xff09;和集合写&#xff08;gather write&#xff09;。 #include <sys/uio…

CABasicAnimation动画

使用CABasicAnimation动画: CALayer *znzLayer; [[CALayer alloc]init]; //创建不断该表CALayer的transform属性动画CABasicAnimation *anim [CABasicAnimation animationWithKeyPath:"transform"];CATransform3D fromValue znzLayer.transform;//设置动画开始的属…

linux pppd脚本配置

&#xfeff;&#xfeff;摘要本文主要介绍了嵌入式Linux系统下使用pppd 2.4.4来进行PPP拨号需要使用的脚本是如何配置的&#xff0c;配置项的含义&#xff0c;同时也说明了如何来配置参数&#xff0c;实现ppp拨号上网。一&#xff0e;问题提出嵌入式Linux操作系统下&#xff…

React面试题目录汇总

总29 2021年11月10日&#xff08;更12&#xff09; [react] 什么时候使用状态管理器&#xff1f; [react] render函数中return如果没有使用()会有什么问题&#xff1f; [react] componentWillUpdate可以直接修改state的值吗 [react] 什么渲染劫持&#xff1f; [react] 说…

Linux运行可执行文件

原先以为linux下运行可执行文件在文件名前加"./"是执行命令&#xff0c;今天才搞明白是指当前目录转载于:https://www.cnblogs.com/dpc525/archive/2011/04/25/2028715.html

Linux下如何定位Java进程CPU利用率过高原因

首先通过Top命令查看占用CPU较高的进程PID&#xff0c;执行Top之后按1可以查看每个核占用比例 1 top这里由于我是用的虚拟机&#xff0c;即使我的Java进程占用CPU很高也只是占的虚拟机的&#xff0c;而对整个机器的CPU来说占的并不高。这里我们找到了pid7957 然后我们在根据pi…

在用户态下使用uint64_t

#include <stdio.h> #include <stdint.h>typedef struct {unsigned short msg_type;unsigned short msg_len;//msg body len }st_msg_h;typedef struct{char audio_name[64];uint64_t time_stamp;//输入的要播放的时间戳绝对时间int dec_ch;}st_msg_start;typedef …

【iOS开发】企业版证书($299)In-House方式发布指南

一、明确几个概念 1、企业版IDP&#xff1a;即iOS Development Enterprise Program。注意是$299&#xff0f;Year那种&#xff0c;并不是$99/Year的那种。 2、In House&#xff1a;是只企业内部发布&#xff0c;仅限企业内部人员使用。 二、In-House方式特点 1、不能发布到Appl…

[react] 说说你对windowing的了解

[react] 说说你对windowing的了解 展示长列表 如果你的应用会渲染大量的列表数据&#xff0c;我们建议使用一种称为‘windowing’的技术&#xff0c;这种技术下在任何给定的时间内只会渲染一小部分数据列表&#xff0c;并可以减少列表项的重复渲染&#xff08;即再次渲染已经渲…

ARM 移植 PPPD

&#xfeff;&#xfeff;1&#xff0e; 下载编译ppp-2.4.1 a) 解压 b) 进入chat目录&#xff0c;修改Makefile.Linux, 添加CCarm-linux-gcc c) 编译chat: make –f Makefile.linux,生成chat d) 进入pppd目录&#xff0c;修改Makefile.linux, 将CCgcc…

回车(CR)与换行(LF), '\r'和'\n'的区别

一&#xff1a;回车”&#xff08;Carriage Return&#xff09;和“换行”&#xff08;Line Feed&#xff09;起源 首先&#xff0c;弄清两个概念&#xff1a; 回车CR-将光标移动到当前行的开头。 换行LF-将光标“垂直”移动到下一行。&#xff08;而并不移…

Linux shell逐行读取文件的方法-比较

From: http://www.embeddedlinux.org.cn/html/jishuzixun/201211/19-2387.html 在linux中有很多方法逐行读取一个文件的方法&#xff0c;其中最常用的就是下面的脚本里的方法&#xff0c;而且是效率最高&#xff0c;使用最多的方法。为了给大家一个直观的感受&#xff0c;我们…

RMSE、MAPE、准确率、召回率、F1、ROC、AUC总结

RMSE(root mean square error)均方根误差 单纯统计误差的值。 MAPE(mean absolute percentage error) 平均百分比误差 存在一个和原始数据相比较的过程。 准确率&#xff08;precision&#xff09;P&#xff1a; PTP/(TPFP) TP(true positive) FP(false positive) P是代表预…

移植PPP2.4.5到ARM上实现拨号

&#xfeff;&#xfeff;1、内核编译的时候&#xff0c;看到以下关于PPP的全部要选择如下&#xff1a; Device Drivers--->Network device support ---> │ │ <*> PPP (point-to-point protocol) support │ │ │ │ [*] …

hdu 5317 RGCDQ (2015多校第三场第2题)素数打表+前缀和相减求后缀(DP)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid5317 题意&#xff1a;F(x) 表示x的不同质因子的个数结果是求L&#xff0c;R区间中最大的gcd( F(i) , F(j) )&#xff0c;i、j在L&#xff0c;R区间内。 思路&#xff1a;因为2<L < R<1000000&#xf…

[react] 举例说明React的插槽有哪些运用场景

[react] 举例说明React的插槽有哪些运用场景 我觉得这里的插槽&#xff0c;指的应该是组合组件&#xff0c;而不是portal(传送门)&#xff0c;因为对比vue中的插槽&#xff0c;只是父组件在子组件中间加入一系列的内容&#xff0c;然后子组件可以自己判断显示逻辑&#xff0c;…

C#中的事件和委托(续)

引言 如果你看过了 C#中的委托和事件 一文&#xff0c;我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容&#xff0c;还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题&#xff0c;包括一些大家常问到的问题&#xff0c;以及事件访…

linux中追踪函数backtrace调用堆栈

From: http://www.embeddedlinux.org.cn/html/jishuzixun/201211/19-2388.html 一般察看函数运行时堆栈的方法是使用GDB之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。 在头文件"exe…