一:开发环境简述:
内容 | 说明 |
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
加入对华为3G 模块的支持
然后重新编译,下载内核。内核的编译和下载请参考开发板厂商提供的使用手册《MBC-SAM9G45_Linux使用手册.pdf》相关章节。
内核启动后,在开发板USB HOST1 口插上3G模块的USB线,会有打印信息输出:
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 www.baidu.com
5) 可以 telnet bbs.newsmth.net
6) 可以从网站上GET 资源 wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.4.tar.bz2
四:开发中出现的小问题及解决办?A