以下内容摘抄自互联网:
问:
我刚接触GPRS,了解AT指令方式如何实现的GPRS网络通信,但对PPP拨号不太了解,有以下问题:
1)ppp拨号与用at命令实现gprs网络通信有什么区别?ppp拨号完成的哪一步骤?
2)看了一些资料,ppp拨号是不是只是联网,自己还要按TCP或UDP编写socket,实现网络通信?
3)一般目前的使用gprs模块的产品采用哪一种开发的方式?在嵌入式linux项目开发中,这两种方式如何进行选择?
4)3G模块开发上与之有哪些区别?
我看资料来理解这两种方式使用协议栈不同,ppp是外置协议栈,AT命令一般把tcp/ip协议栈内嵌到模块处理软件中。
对嵌入式linux系统而言ppp协议在内核中加载,还要加自动拨号处理。但之后还要做哪些工作,如数据收发是否要写socket或经处理后发送,其流程如何就不清楚了。
at命令是gprs模块通过RS232与系统进行数据交互,底层不需要做处理。
但两者的优缺点,并不太了解。
答1:
1)ppp拨号与用at命令实现gprs网络通信有什么区别?ppp拨号完成的哪一步骤?
先通过AT命令,让设备激活PDP,然后PC切换到数据模式,由操作系统发起PPP协商,获取IP地址和鉴权,然后就可以上网了。
2)看了一些资料,ppp拨号是不是只是联网,自己还要按TCP或UDP编写socket,实现网络通信?
拨号已经不需要你自己做了,因为已经建立了Modem的通道,就等于插上网线了,其他的自己的功能自己玩。
3)一般目前的使用gprs模块的产品采用哪一种开发的方式?在嵌入式linux项目开发中,这两种方式如何进行选择?
不明白你啥意思,基本上都采用Modem拨号即可。
4)3G模块开发上与之有哪些区别?
没有区别,都是上网,功能复杂了一些,你根据需要选择,如果只是上网,基本上没有变化。
答2:
1)ppp拨号与用at命令实现gprs网络通信有什么区别?ppp拨号完成的哪一步骤?
ppp拨号处理实现at的方式,还虚拟出了网卡,让网络通信标准化。
2)看了一些资料,ppp拨号是不是只是联网,自己还要按TCP或UDP编写socket,实现网络通信?
ppp只是做到网卡这一步,通信还需要socket编程。
3)一般目前的使用gprs模块的产品采用哪一种开发的方式?在嵌入式linux项目开发中,这两种方式如何进行选择?
linux我觉得用ppp比较好。可以使编程结构简单,移植好。当然如果程序特别特别小,还是可以用at的
4)3G模块开发上与之有哪些区别?
对于ppp来说,才不管你3G, 2G.这就是好处。
中国移动在GPRS网中建立了许多相当于ISP的GPRS网关支持结点(GGSN),以连接GPRS网与外部的Internet网络。要使用GPRS功能首先要登录GPRS网络中的GGSN,这个工作可以通过相关AT命令完成。
登录的基本过程如下:通过AT+CGATT=?命令检查MC35i是否附着GPRS,返回0为未附着,返回1为已附着。若没有附着,则发送AT+CGATT=1命令进行附着。"AT+CGDCONT=1,IP,CMNET"定义PDP(分组数据协议)上下文,其中1为PDP上下文标识,IP表明将要传输的数据包类型为IP数据包,CMNET为中国移动的GPRS网关;ATD*99***1#命令进行数据拨号,其中1与上面的PDP上下文标识对应。在上述AT命令正常执行后,MC35i就登录到GPRS网络。但由于MC35i没有TCP/IP协议栈,控制器必须自行处理相关的协议解析工作才能进行数据传输。为了能够进行IP数据包的传输,就必须首先实现数据链路层PPP协议。
以PPP拨号实现GPRS与因特网的数据通信的具体实现流程:
1、GPRS 模块的ECHO关闭,MCU发送ATEOV1到GPRS模块。
2、完成接入初始化:AT+CGDCONT=1,“IP”,“CMNET”。
3、呼叫CMNET:ATD*99***1#。
4、MODEN返回正确的CENNECT信息。
5、终端主动发送LCP数据包(REQ,ACK,Reject)进行链路协商,据服务器ISP提供商的 不同可能也有不同
ISP发生的选项若终端不接爱,则返回Reject
服务器ISP发送LCP(Request)终端ACK则无需拒绝Reject;
任何一方接受请求时发ACK,不处理NAK数据包
不可链路则重复发送(程序和MCU机制完成)直至连接成功
6、LCP配置成功进入PAP认证,目前中移动用明文密码认证身份,认证通过读取SIM卡信息来完成身份认证,以电话号码来识别用户名和密码,因此发送用户名和密码的数据包可以为NULL。
7、PAP通过以后需要进行IP协调配置(IPCP),选项3配置(IP地址)而网关与DNS配置信息可省略,发送NAK选项3配置,发00.00.00.00到服务器,返回终端目前的IP,
这一IP可用否,要看CMNET的设置
若CMNET将局域网内部直接路由关闭后,可以通过PC+GPRS方式利用PING测试,测试通过则可用。
否则就要进行IP地址和端口的映射转换后才可进行通讯。
8、IPCP通过后,要有相关NCP协议进行网络层协议的选择TCP/IP或UDP,进行数据传输。本方案之中,可以无需考虑相关的网络层数据传输协议
9、模式转换,无需中断连接的前提下GRRS的数据模式――― AT Command状态使用 +++命令切换,若切回数据状态输入ATO到CMS91 GPPRS MODULE。
10.中断GPRS 的PPP连接,可用LCP包完成///或用AT Command状态的ATH指令挂断目前的连接。
11. GPRS接到INTERNET后,信道正在通信时,任何外来的呼叫都会没有响应。
若无数据传输,这时呼叫信息可达GPRS MODULE ,由于MODULE 此时,在数据状态,在没有使用MULTIPLEX情况下只能通过RING脚得到信息,MCU如要处理过个呼叫可切换到AT Command状态。