3G模块驱动运用开发总结
一:开发环境简述
内容 | 说明 |
3G模块 | 华为EM770W(WCDMA) |
3GSIM卡 | 中国联通3G卡(WO) |
嵌入式开发板 | 友善之臂Mini2440 |
核心CPU | S3C2440 |
嵌入式linux版本 | Linux-2.6.32.2 |
主机开发环境 | VMWARE下安装的RedHat5.0 |
二:主要步骤
1 | 向linux内核中添加3G模块的驱动(USB转串口的驱动)和ppp协议的支持,重新编译下载内核。 |
2 | 对ppp-2.4.4源代码进行交叉编译。 将拨号上网所需的两个应用程序pppd和chat拷贝到开发板/usr/sbin文件夹下,将改好的脚本文件wcdma、wcdma-chat-connect、wcdma-chat-disconnect存放在/etc/ppp/peers目录下。将含有域名解析服务器地址的文件resolv.conf拷贝到/etc目录下。 |
3 | 执行“pppdcall wcdma”命令进行拨号,进行网络测试。 |
三:开发工作主要内容
下面对开发工作进行进一步细化:
1 | 向linux内核添加3G模块的驱动(USB转串口的驱动)和ppp协议的支持,交叉编译并下载内核到开发板。 |
2 | 交叉编译比好工作源代码ppp-2.4.4,得到pppd和chat |
3 | 配置拨号的脚本文件 |
4 | 测试网络连接情况 |
四:各项工作集体说明
1.向linux内核添加3G模块的驱动(USB转串口的驱动)和ppp协议的支持,交叉编译并下载内核到开发板。
由于linux-2.6.32.2内核支持“USBdriver for GSM and CDMA modems”,所以不需要修改代码,只修改内核配置即可。
编译前期做如下准备:
(1)清除临时文件、中间文件和配置文件
进入内核文件目录,执行命令:makedistclean
图1 执行makedistclean命令
(2)使用内核/arch/arm/configs目录下的mini2440-defconfig文件作为配置文件,将其拷贝为内核目录下的.config文件。
图2将mini2440-defconfig作为配置文件
(3)在终端输入:makemenuconfig ARCH=arm,出现内核配置界面后选择:
DeviceDrivers---→
USBsupport---→
<*>USBSerialConverter support--→
[*]USBGeneric Serial Driver
<*>USBdriver for GSM and CDMA modems
具体步骤如下几幅图所示:
图3 按“Enter”进入“DeviceDrivers”目录
图4 按“Enter”进入“USBsupport”目录
图5 按“Enter”进入“USBSerialConverter support”目录
图6 按“Y”将“USBGeneric Serial Driver”编译进内核
图7 按“Y”将“USBdriver for GSM and CDMA modems”编译进内核
到此3G模块驱动添加完成,下面进行ppp协议支持的添加(下面所示的几个选项必选)。
DeviceDrivers--→
Networkdevicesupport---→
<*> PPP (point-to-point protocol) support
[*] PPP multilink support (EXPERIMENTAL)
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
<*> PPP Deflate compression
<*> PPP BSD-Compress compression
具体步骤如下几图所示:
图8 按“Enter”进入“DeviceDrivers”目录
图9 按“Enter”进入“Networkdevice support”目录
图10 选择ppp协议支持(之前所提的必选,这里全部选上)编译进内核
完成这些步骤之后,可以进行内核的交叉编译,退出makemenuconfig,输入makezImage ARCH=armCROSS_COMPILE=arm-linux-,编译生成的内核映像文件位于当前内核源代码文件的/arch/arm/boot目录下,将生成的内核映像文件下载到板子上。
内核启动后,会在/dev目录下生成ppp设备节点。如:
ls/dev/ppp -l
crw-rw---- 1root root 108, 0Jan 1 00:00 /dev/ppp
内核启动后,在开发板USBHOST 口插上3G模块的USB线,会有打印信息输出:
usb1-2: new high speed USB device using atmel-ehci and address 4
usb1-2: configuration #1 chosen from 1 choice
option1-2:1.0: GSM modem (1-port) converter detected
usb1-2: GSM modem (1-port) converter now attached to ttyUSB0
option1-2:1.1: GSM modem (1-port) converter detected
usb1-2: GSM modem (1-port) converter now attached to ttyUSB1
option1-2:1.2: GSM modem (1-port) converter detected
usb1-2: GSM modem (1-port) converter now attached to ttyUSB2
查看设备节点ls/dev/ttyUSB*, 会发现USB虚拟成三串口,在文件系统节点如下/dev/ttyUSB0,/dev/ttyUSB1, /dev/ttyUSB2 ,这说明3G模块驱动 已经正确添加到内核当中。
我们 跟 3G 模块交互 主要用的设备节点是 /dev/ttyUSB0。
2.交叉编译好工作源代码ppp-2.4.4,得到pppd和chat
解压源代码包,进入目录,进行交叉编译,这里所用的板子的交叉编译器是:
#cd /home/ppp-2.4.4
#./configure
#make CC= arm-linux-gcc
拨号所用到的程序就是ppp-2.4.4/pppd下的pppd和ppp-2.4.4/chat下的chat可执行程序,将交叉编译出来的这两个应用程序拷贝到开发板 /usr/sbin目录下,更改其属性为可执行文件。
3.配置拨号的脚文件
拨号上网需要的配置文件有3个:wcdma,wcdma-chat-connect,wcdma-chat-disconnect(存放位置/etc/ppp/peers)。
-
wcdma配置文件内容
#/etc/ppp/peers/cdma
#This is pppd script for China liantong
#Usage: root>pppd call cdma
hide-password
noauth
connect'/usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect'
disconnect'/usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect'
debug
/dev/ttyUSB0
115200
defaultroute
noipdefault
novj
novjccomp
noccp
ipcp-accept-local
ipcp-accept-remote
local
lock
dump
nodetach
user"card"
password"card"
crtscts
remotename3gppp
ipparam3gppp
usepeerdns
-
wcdma-chat-connect配置文件内容
ABORT"BUSY"
ABORT"NO CARRIER"
ABORT"NO DIALTONE"
ABORT"ERROR"
ABORT"NO ANSWER"
TIMEOUT120
""AT
OK\rATZ
OK\rAT+CGDCONT=1,"IP","3gnet",,0,0
OK-AT-OKATDT*99#
CONNECT\d\c
-
wcdma-chat-disconnect配置文件内容
ABORT"ERROR"
ABORT"NO DIALTONE"
SAY"\NSending break to the modem\n"
""\k"
""+++ATH"
SAY"\nGood bay\n"
-
应用测试:
(1)连接好硬件设备。
(2)执行pppdcall wcdma,出现:
图11 执行“pppdcall wcdma”
(3)通过PC机(XP操作系统)远程登录到开发板,执行ifconfig:
图12执行“ifconfig”
若出现如上所示的类似信息,说明拨号成功。打开开发板/etc目录下的resolv.conf文件,将分配得到的两个DNS服务器地址:10.11.12.13和10.11.12.14添加到此文件中。
vi/etc/resolc.conf,加入内容:
nameserver10.11.12.13
nameserver10.11.12.14
(4)ping外网测试
输入命令:ping–I ppp0 210.32.200.129
图13 ping IP地址
输入命令:Ping–I ppp0 www.sina.com
图14 ping网址
(5)telnet测试
输入命令:telnetbbs.newsmth.net
图15 telnet测试
注意:
在做的时候将ARM板子上的网线拔掉!