天天看点

无线模块应用实施

作为linux内核系统,系统均会自带驱动usbserial,就没有提供专门U6300V的USB驱动,都是加载系统的usbserial以实现对U6300V模块USB的加载,关键是找到usbserial.ko这个驱动文件在系统中的目录,将PID和VID加载系统。

具体实施过程可参考模块文档说明实施,也可按照如下方法实现:

1. 模块加电成功后,通过命令lsusb可获取模块VID&PID。

~ # lsusb

Bus 001 Device 001: ID 1d6b:0001

Bus 001 Device 008: ID 19d2:1476

2. 添加VID&PID到driver/usb/serial/options.c中。

3. 设备启动后,会打印模块USB信息,表示模块加载成功。

usb 1-1: new full speed USB device using at91_ohci and address 9

usb 1-1: configuration #1 chosen from 1 choice

option 1-1:1.0: GSM modem (1-port) converter detected

usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0

option 1-1:1.1: GSM modem (1-port) converter detected

usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1

option 1-1:1.2: GSM modem (1-port) converter detected

usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2

option 1-1:1.3: GSM modem (1-port) converter detected

usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3

option 1-1:1.4: GSM modem (1-port) converter detected

usb 1-1: GSM modem (1-port) converter now attached to ttyUSB4

4. 修改模块加电配置/etc/init.d/gprs_init.sh,此文件主要用于模块加电,运行后需保证模块正常加电且模块正常开启(reset高电平)。

5. 正确配置pppd脚本-gprs。

6. 正确配置chat脚本,包括connect和dis-connect脚本。

7. 运行命令pppd call gprs即可拨号上线。

参考:​​STM32 + 4G 模块 PPP 拨号上网,体验不错​​

PPP 拨号上网是一种有别于解析 AT 命令实现联网的一种新的联网方式。

最近看在折腾 4G 模块 Air720,网上一查,发现在RT-Thread已经实现了它的适配,项目地址是:packages.rt-thread.org/itemDetail.html?package=ppp_device (复制到浏览器打开)

整体用下来资源占用还是不错的,速度比直接使用 AT 命令透传上网快多了,跟大家简单分享下:

-----------------------------------------------------

PPP 实现的原理,还有应用场景

1. PPP 连接的五个阶段

1.1 PPP链路建立准备阶段

使RF射频模块接入指定的APN,并且配置PDP上下文,并拨号;接入无线信号

物理连接,UART<->UART ETH<->ETH USB<->USB;准备进行初始化,并准备发送LCP数据包

1.2 链路建立阶段

  LCP控制连接,LCP协议相互交换配置数据建立连接,一旦一个配置成功信息包(Configure-Ack packet)被发送且被接收,就完成了交换,进入了LCP开启状态。

  此阶段之前,所有的非LCP数据包都将被丢弃。而重复接收LCP配置数据包将忽略当前状态,直接返回到链路建立阶段;

1.3 认证阶段

认证不缺省的话,认证是不可缺少的分为PAP方式和CHAP方式。

1.4 网络层协议阶段

  此阶段确认网络协议,每一个网络层协议(例如IP协议、IPX协议、Appletalk)必须单独由相应的NCP配置。

1.5 链路终止阶段

  PPP连接可以随时终止,原因可能是载波丢失、认证失败、连接质量失败、超时计数器溢出,或者网络管理员关闭连接。

  LCP通过交换连接终止包来终止连接。

所以在实现 PPP 连接方便需要借助 lwIP 里 ppp 相关协议的帮助,来实现链路的创建和连接。以及监控链路状态,设置链路状态回调函数,数据的收发。

2. 对于想使用 PPP 方式连接网络的需求,是针对满足 PPP 协议的 GPRS 模块。

由于GPRS 模块都会支持 AT 命令,所以使模块进入 PPP 模式 这段过程仍然需要少量 AT 命令的帮助,这些 AT 命令的作用一般是:

<col>

+++

从数据模式退出进入命令模式

ATH

挂断拨号

AT

测试命令

ATE0

关闭回显

ATD*99#

拨号命令

AT+CGDCONT=1,"IP","CMNET"

ISP 的接入点名称,主要指 "CMNET"的更改

对于拨号和重连操作,这些命令已经完全足够,所以说在使用 PPP 方式连接网络时,是完全可以忽略复杂的 AT 命令解析的。

-------------------------------------------------------------------------

在RT-thread 的BSP中找到自己的板子,并使用env工具打开menuconfig配置菜单,找到ppp_device,修改下模块与板子对应的串口号就可以使用了

1. me3630-w 中兴​

2. EC20 ​​移远通信​​ https://www.quectel.com/cn/

手机使用数据连接上网时、家庭宽带使用运营商网络上网时,均采用了10.64.0.0/10段的运营商级NAT地址,属于私网地址,也就是每个运营商是一个大的局域网,只有在访问外网资源时从公网地址池里找出一个地址使用端口复用的方式给你用,用于节约有限的IPv4地址资源。

参考:​​https://jingyan.baidu.com/article/93f9803f7dd84be0e46f5509.html​​

几年前每个光猫、每部手机上网获取的是公网IP地址,可以实现远程控制、可以搭建自己的临时服务器,但是自从使用私网地址后,这些都已经成为过去。互联网的IPv4地址早在2011年2月已经分配完毕,至此我国的IPv4地址数量不再增加。截止2015年12月,CNNIC统计,我国IPv4地址数量为3.37亿个,如何能够满足8亿多网民的需求呢?

在2012年RFC6598给出了一个地址块,用户运营商的NAT地址转换,以解决公网IPv4地址不够用的情况,这个地址块又不能与普通的私网地址重复,使用了100.64.0.0/10的地址块:

如下图所示,手机使用数据连接上网,左侧图显示了手机获取的IP地址,右侧图显示了在百度搜索IP获取的手机的公网IP,可以看到两个地址是不一样的;左侧的IP地址是电信网络的NAT地址,右侧显示了NAT地址转换之后的公网IP地址,中间用了NAT地址转换的过程。

无线模块应用实施

上图中的两个地址不是一对一的,而是多对一,多个用户手机公用一个公网的IP地址,如何实现呢,通过一种端口复用的技术实现;

举个例子说明一下,比如我的手机获取了10.100.7.63这个IP地址,另一手机获取了10.100.100.100这个地址,同时访问某个公网地址,那么存在如下图所示的地址转换过程,两部手机使用不同的内网地址,公用一个公网IP地址,使用端口复用的方式。

无线模块应用实施