嵌入式linux 平台下网络服务器(3G+PPP+BOA+ARM)
you_set@163.com 一、华为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 "" \\k\\k\\k\\d+++ATH "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源码 下载地址: http://www./ 下载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 www.your.org.here 为ServerName www.your.org.here 注意:该项默认为未打开,执行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 |
|