Chinaunix首页 | 论坛 | 博客
  • 博客访问: 93043
  • 博文数量: 23
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 62
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-19 04:21
文章分类
文章存档

2015年(1)

2014年(5)

2013年(8)

2012年(9)

分类: LINUX

2014-07-12 22:26:45

嵌入式linux 平台下网络服务器(3G+PPP+BOA+ARM)

一、华为3G模块EM770W在LINUX 下的驱动
1. EM770W为华为3G WCDMA模块,支持HSPA(HSPA data rate - 7.2 Mbps DL / 2 Mbps UL),更适合
于无线视频服务器和监控器。EM770W 接口为mini PCIE,52个引脚,引脚中对外数据接口包含一个
全串口UART1,一个四线串口UART2,一个USB2.0。EM770W 与ARM 芯片连接有两种方式:一种
是通过UART1,速度只能达到115.200KBPS,这与HSPA 速率明显跟不上,一般不用此方式进行连
接,如果和MCU连接进行小量数据传输可以用此方式。第二种方式是通过USB和ARM芯片连接,
此方式适合大量数据传输,速率更快。
2. EM770W在LINUX 下的驱动
在较新版本的LINUX 内核(LINUX-2.6.18 以上)里已经有了EM770W 的驱动,需在内核增加支持,修
改配置如下:
在linux 内核目录下:
make ARCH=arm menuconfig
 
 
 
 
 
然后重新编译内核,增加驱动后在ARM 开发板上通过USB 接入EM770W,系统识别出USB 设备,将
EM770W虚拟成三个串口设备,节点为/dev/ttyUSB0,/dev/ttyUSB1,/dev/ttyUSB2。
如果使用较早的内核而不支持“USB driver for GSM and CDMA modems”的话,可以选择Usb Generic Serial
Driver,但是需要把Usb Driver的PID和VID设置成华为的ID(EM700/EM770W 的VID: 0x12d1 PID: 0x1001)

ID 更改步骤:
在linux 内核目录下
vi drivers/usb/serial/option.c
在里面定义两个宏(EM770W的VID: 0x12d1 PID: 0x1001):
#define EM770W_OPTION_VENDOR_ID 0x12d1
#define EM770W_OPTION_PRODUCT_COLT 0x1001
增加到结构体中
static struct usb_device_id option_ids[] = {
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },

{ USB_DEVICE(EM770W_OPTION_VENDOR_ID , EM770W_ OPTION_PRODUCT_COLT) },
}
修改完成后重新编译内核就可以驱动EM770W 了。
到此3G模块驱动增加完成,可以进行下一步的操作。
二、3G模块在linux下PPP 拨号上网
1. 为了使用ppp 方式进行拨号上网,需要linux 内核支持ppp,需要在内核选项里将ppp支持选上,然后
重新编译内核即可
2. 使用命令pppd call script 的方式拨号:
1) 下载ppp-dev-2.4.4.tar.gz(用此软件为了交叉编译后得到pppd和chat 两个可执行文件),
步骤如下:(使用arm-linux-3.4.4 编译)
tar zxvf ppp-dev-2.4.4.tar.gz
cd ppp-2.4.4
./configure
make CC=/usr/local/arm/3.4.4/bin/arm-linux-gcc
编译后将pppd 目录里的pppd 可执行文件和chat 目录下的chat 可执行文件复制到ARM 开发板根文
件系统/usr/sbin/目录下。
2) 配置ppp:
#/etc/ppp/gprs-connect-chat
# chat script for HuaWei EM770W 3G module.
TIMEOUT 15
ABORT "DELAYED"
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "NO CARRIER"
TIMEOUT 40
'' \rAT
OK ATS0=0
OK ATE0V1
OK AT+CGDCONT=1,"IP","UNINET"
OK ATDT*99***1#
CONNECT ''
#/etc/ppp/gprs-disconnect-chat
ABORT OK
ABORT BUSY
ABORT DELAYED
ABORT "NO ANSWER"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT VOICE
ABORT ERROR
ABORT RINGING
TIMEOUT 12
""

"NO CARRIER-AT-OK" ""
#/etc/ppp/chap-secrets
#client server secret IP address
"uninet" * "uninet" *
#/etc/ppp/pap-secrets
#client server secret IP address
"uninet" * "uninet" *
#/etc/ppp/peers/gprs
# This is pppd script, used Huawei EM770W 3G Module
# Usage: root>pppd call gprs
/dev/ttyUSB0
115200
crtscts
modem
debug
nodetach
usepeerdns
noipdefault
defaultroute
user "uninet"
0.0.0.0:0.0.0.0
connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat'
#disconnect '/bin/chat -v -f /etc/ppp/gprs-disconnect-chat'
使用命令:
pppd call gprs
三、WEB 服务器移植(BOA)
1、下载Boa源码
下载地址:

下载boa-0.94.13.tar.gz,
下载后解压编译(注意:必须用cross-2.95.3编译)
tar zxvf boa-0.94.13.tar.gz
./configure –host=arm-linux CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc
完成后生成Makefile,然后修改Makefile:
CC = /usr/local/arm/2.95.3/bin/arm-linux-gcc
CPP = /usr/local/arm/2.95.3/bin/arm-linux-gcc –E
修改完成直接
make
/usr/local/arm/2.95.3/bin/arm-linux-strip boa (去除调试信息,减小体积)
将生成的boa可执行文件复制到开发板根文件系统/usr/sbin/下。
Boa 需要在/etc 目录下建立一个boa 目录,里面放入Boa 的主要配置文件boa.conf。在Boa 源
码目录下已有一个示例boa.conf,可以在其基础上进行修改
2、ScriptAlias的修改
修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为ScriptAlias /cgi-bin/ /var/www/cgi-bin/
这是在设置CGI 的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录。
3、ServerName的设置
修改#ServerName

为ServerName
注意:该项默认为未打开,执行Boa 会异常退出,提示“gethostbyname::No such file or directory”,
所以必须打开。其它默认设置即可。你也可以设置为你自己想要的名字。比如我设置为:ServerName
tekkaman2440
此外,还需要:
通常可以从linux主机的/etc目录下将mime.types 文件复制开发板/etc目录下。
创建日志文件所在目录/var/log/boa
创建HTML文档的主目录/var/www
创建CGI脚本所在录/var/www/cgi-bin
阅读(1667) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~