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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值