您的位置:首页 > 其它

3G 模块驱动应用开发总结

2016-06-16 13:11 375 查看
一:开发环境简述:

 

内容

说明

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: