Chinaunix首页 | 论坛 | 博客
  • 博客访问: 488582
  • 博文数量: 93
  • 博客积分: 1431
  • 博客等级: 上尉
  • 技术积分: 1006
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-18 10:30
文章分类

全部博文(93)

文章存档

2011年(20)

2010年(2)

2009年(71)

我的朋友

分类: 嵌入式

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

 

 加入对华为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源码包,交叉编译生成拨号所需的pppdchat这两个程序.
       
解压源代码包,进入目录,进行交叉编译,这里所用的板子的交叉编译器是
     
#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)

红色部分为修改的内容

1ppp-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

 

2ppp-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

阅读(13128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~