分类: 嵌入式
2011-04-22 14:59:15
3G 模块驱动应用开发总结
一:开发环境简述:
内容 |
说明 |
3G模块: |
华为 EM 770W (WCDMA ) |
3G SIM 卡: |
中国联通3G 卡(WO) |
嵌入式开发板: |
英贝特 MBS-SAM9G45 |
核心CPU |
ATMEL AT91SAM9G45 |
嵌入式linux 版本: |
linux2.6.30 |
主机开发环境: |
VMWARE 下安装的 UBUNTU 10.04 |
二: 应用步骤:
3G 模块驱动应用开发主要分一下3大步
1. |
向 linux 内核中添加 3G模块的驱动 (USB 转串口 的驱动)和 PPP 协议的 支持,重新编译下载内核 |
2. |
对ppp-2.4.4 源码进行交叉编译。 将拨号上网所需的两个应用程序pppd 和chat 拷贝到开发板 /usr/sbin 文件夹下, 将改好的脚本文件ppp-on , ppp-on-dialer 存放在 /etc/ppp 目录下。 将 含有域名解析服务器地址的文件 resolv.conf 拷贝到 /etc目录下 |
3. |
进入 /etc/ppp 目录 ,执行 ./ppp-on。 进行网络测试 |
三: 开发工作主要内容:
下面对开发工作进行了进一步细化:
1 |
向linux 内核 添加 3G模块的驱动 (USB 转串口 的驱动) |
2 |
做一个应用测试程序 测试 3G模块的驱动 (USB 转串口 的驱动) |
3 |
向 linux 内核 中添加 PPP 协议的 支持 |
4 |
交叉编译 拨号工具 pppd 和 chat |
5 |
配置 拨号的 脚本文件 |
6 |
测试网络连接状况 |
|
|
各项工作具体说明:
1. 向linux 内核 添加 3G模块的驱动 (USB 转串口 的驱动)
参考 文档《Usb Driver Configure.doc》
由于linux2.6.30 内核支持 “USB driver for GSM and CDMA modems” ,所以不需要修改代码,只修改 内核配置即可。
Usb Configure
重新编译内核,修改配置如下:
Make menuconfig
然后重新编译,下载内核。内核的编译和下载请参考开发板厂商提供的使用手册《MBC-SAM9G45_Linux使用手册.pdf》相关章节。
usb 1-2: new high speed USB device using atmel-ehci and address 4
usb 1-2: configuration #1 chosen from 1 choice
option 1-2:1.0: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
option 1-2:1.1: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
option 1-2:1.2: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
查看设备节点ls /dev/tty*, 会发现USB虚拟成三串口,在文件系统节点如下/dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2 ,这说明3G模块驱动 已经正确添加到内核当中。
我们 跟 3G 模块交互 主要用的设备节点是 /dev/ttyUSB0
2. 做一个应用测试程序 测试 3G模块的驱动 (USB 转串口 的驱动)
./test3g AT 向 /dev/ttyUSB0 写入AT 查看回显信息。
测试程序源代码参考 huatest3g.c
3. 向 linux 内核 中添加 PPP 协议的 支持
进入内核目录下,执行 make menuconfig 配置linux 内核,添加 PPP 协议的支持
Device Drivers----àNet Device support
必须选中的项目:
<*> 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
然后重新烧写新生成的内核映象。
内核启动后会在/dev 下生成ppp 设备节点。
ls /dev/ppp -l
crw-rw---- 1 root root 108, 0 Jan 1 00:00 /dev/ppp
4. 交叉编译 拨号上网需要的 拨号工具 pppd 和 chat
下载ppp-2.4.4源码包,交叉编译生成拨号所需的pppd和chat这两个程序.
解压源代码包,进入目录,进行交叉编译,这里所用的板子的交叉编译器是
#cd /root/gprs/ppp-2.4.1
#./configure
#make CC= /usr/local/arm-2007q1/bin/arm-none-linux-gnueabi-gcc
拨号所用到的程序就是ppp-2.4.4/pppd/下的pppd,和ppp-2.4.4/chat/下的chat程序
将交叉编译出来的这 两个应用程序 拷贝到开发板 /usr/sbin 文件夹下 ,更改其属性为可执行文件。
5. 配置 拨号的 脚本文件
拨号上网需要的两个配置文件ppp-on , ppp-on-dialer (存放位置 /etc/ppp)
红色部分为修改的内容
1)ppp-on配置文件的内容:
# These are the parameters. Change as needed.
TELEPHONE=*99# # The telephone number for the connection
ACCOUNT= # The account name for logon (as in 'George Burns')
PASSWORD= # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0 # The proper netmask if needed
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyUSB0 115200 \
asyncmap 20A0000 escape FF kdebug 4 $LOCAL_IP:$REMOTE_IP \
noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
2)ppp-on-dialer配置文件的内容:
#!/bin/sh
exec chat -v \
TIMEOUT 5 \
ABORT "BUSY" \
ABORT "ERROR" \
ABORT "NO CARRIER" \
'' \rAT \
OK 'AT+CGDCONT=1,"IP","3GNET"' \
OK 'ATDT*99#' \
CONNECT '' \
3):设置正确的域名解析服务器地址
将3G 模块插到计算机上。查看 联通3G 北京地区的域名解析服务器地址:
202.106.195.68 202.106.46.151
将 这两个地址添加到 开发板 目录:/etc/ resolv.conf 中
Vi /etc/ resolv.conf 内容:
nameserver 202.106.195.68
nameserver 202.106.46.151
6. 应用测试:
1) 连接好 硬件设备
2)进入 /etc/ppp 目录 ,执行 ./ppp-on
3)执行 ifconfig 可以看到 :
ppp0 Link encap:Point-to-Point Protocol
inet addr:172.16.231.7 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:94 (94.0 B) TX bytes:97 (97.0 B)
在/var/log/message 文件末尾可以看到 分配的IP 地址
local IP address 172.20.209.99
remote IP address 10.64.64.64
4)可以ping 外网测试:
Ping 61.135.169.105
Ping
5) 可以 telnet bbs.newsmth.net
6) 可以从网站上GET 资源 wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.4.tar.bz2
四:开发中出现的小问题及 解决办?A