Chinaunix首页 | 论坛 | 博客
  • 博客访问: 122579
  • 博文数量: 15
  • 博客积分: 1515
  • 博客等级: 上尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-28 14:51
文章分类

全部博文(15)

文章存档

2010年(5)

2009年(5)

2008年(5)

我的朋友

分类: LINUX

2010-05-26 11:15:33

 
1、  开发板内核:linux kernel 2.6.10
2、  3G卡片:华为E1750
二、相关工具
1、  usb-modeswitch-1.1.2.tar.bz2
Usb_modeswitch是对USB设备的工作模式进行转换一种万能工具,当然这种工具,只有在linux下才能体现其巨大的作用。随着移动通信,无线通信的发展,越来越多的设备被制作成USB接口,像一些无线网卡,3G数据卡等等。这些设备的厂家一般都会提供windows 下驱动,这些设备在第一次插上机子的时候,它们处于CDROM+闪存模式,可以从中提供驱动程序安装驱动,在驱动程序安装完成后,驱动会转换成3G模式,此时就会出现usb modem设备,目前的3G卡片全都是这样,这就是所谓的“ZeroCD”。
而在linux下我们可没有那么好的待遇,厂家一般不会给我们提供linux下面的驱动,而目前的内核还不能自动识别并驱动。所以我们需要用usb_modeswitch这个工具来进行模式转换,设备模式依赖usb-storage和usbserial模式,所以,在开发板上需要有这两种模块的支持,设备并能够正常工作于这两种模式下。
2、  libusb-0.1.12.tar.gz
libusb提供给usb_modeswitch一套系统API
三、交叉编译usb_modeswitch
1、交叉编译libusb
解压并进入libusb-1.0.6目录,建立子目录install用于存放最后生存的库文件与头文件。
[root@libusb-0.1.12]# mkdir install
配置并生成Makefile文件
[root@libusb-0.1.12]# ./configure --build=i686-linux --host=arm-linux --prefix=/home/libusb-0.1.12/install
 [root@libusb-0.1.12]# make
[root@libusb-0.1.12]# make install
2、设置PKG_CONFIG_PATH环境变量,以使我们后面的编译能够顺利找到libusb库
[root@libusb-0.1.12]# export
PKG_CONFIG_PATH=/home/Anson/libusb-0.1.12/install/lib/pkgconfig:$PKG_CONFIG_PATH
    查看是否设置正确
[root@libusb-0.1.12]# echo $PKG_CONFIG_PATH
3、 交叉编译usb_modeswitch
(1)、修改Makefile文件
      CC = arm_v5t_le-gcc
(2)、将libusb里的库头文件拷到交叉编译器的include和lib目录下,或者直接在Makefile文件里直接加上编译选项指令库的路径即可如下:
$(PROG):&(OBJS)
      &(CC) –o $(PROG) &(OBJS) &(CFLAGS) –I /home/libusb-0.1.12/install/include –L /home/libusb-0.1.12/install/lib
(3)、make
4、编辑usb_modeswitch-1.1.2目录下的usb_modeswitch.setup文件
 
# Huawei E1750
#
# Contributor: Anders Blomdell, Ahmed Soliman
DefaultVendor= 0x12d1
DefaultProduct= 0x1446
 
TargetVendor= 0x12d1
TargetProduct= 0x1001
 
# only for reference and 0.x versions
MessageEndpoint=0x01
MessageContent="55534243123456780000000000000011060000000000000000000000000000"
HuaweiMode=0
5、将上面生成的libusb动态库拷贝到开发板的库目录下,将上面生成的usb_modeswitch可执行程序和usb_modeswitch.setup拷贝到文件系统目录下。
四、交叉编译3G卡片驱动
在2.6.10内核源码中没有专门的3G驱动文件,我们在/driver/usb/serial/pl2303.c中加入3G卡片的ID信息:
{USB_DEVICE(HUAWEI_VENDOR_ID),HUAWEI_PRODUCT_ID)}
在/driver/usb/serial/pl2303.h中加入:
#define HUAWEI_VENDOR_ID 0x12d1
#define HUAWEI_PRODUCT_ID 0x1001
Make menuconfig 选中相关选项,make uImage 即可。
五、利用usb_modeswitch进行模式转换
在/dev目录下建立字符节点
mknod /dev/ttyUSB0 c 188 0
mknod /dev/ttyUSB1 c 188 1
mknod /dev/ttyUSB2 c 188 2
运行 ./usb_modeswitch 切换3G卡片的模式。此时会出现一些信息,你会看到转换成3G模式后的几个串口信息,ttyUSB0, ttyUSB1, ttyUSB2,如下:
pl2303 1-1:1.0: PL-2303 converter detected
usb 1-1: PL-2303 converter now attached to ttyUSB0
pl2303 1-1:1.1: PL-2303 converter detected
usb 1-1: PL-2303 converter now attached to ttyUSB1
pl2303 1-1:1.2: PL-2303 converter detected
usb 1-1: PL-2303 converter now attached to ttyUSB2
六、交叉编译pppd拨号工具,并编写拨号脚本
    由于板卡上已移植了pppd拨号工具,在内核里将相关的选项选上即可。下面介绍拨号脚本的编写:
wcdma:
nodetach
lock
/dev/ttyUSB0
115200
user "card"
password "card"
crtscts
show-password
usepeerdns
noauth
noipdefault
novj
novjccomp
noccp
defaultroute
ipcp-accept-local
ipcp-accept-remote
connect '/usr/sbin/chat -s -v -f chat-wcdma-connect'
disconnect '/usr/sbin/chat -s -v -f chat-wcdma-disconnect'
chat-wcdma-connect:
ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT 'NO DIALTONE'
ABORT 'BUSY'
ABORT 'NO ANSWER'
'' \rAT
OK \rATZ
OK \rAT+CGDCONT=1,"IP","3gnet",,0,0
OK-AT-OK ATDT*99#
CONNECT \d\c
chat-wcdma-disconnect:
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\nSending break to the modem\n"
'' "\K"
'' "+++ATH"
SAY "\nGoodbay\n"
 
将wcdma、chat-wcdma-connect、chat-wcdma-disconnect三个文件拷贝到
/home/filesys/etc/ppp/peers 目录下,在/etc/resolv.conf中添加DNS号
Nameserver 202.106.46.151
由于所用的DM6446开发板,文件系统挂载在一个服务器上,其所用的网关,被当做了默认的网关,故拨号后会ping不通网络。
# route
Kernel IP routing table
Destination  Gateway       Genmask     Flags  Metric Ref   Use  Iface
192.168.1.0     *        255.255.255.0   U     0      0      0   eth0
default    192.168.1.3      0.0.0.0        UG    0      0      0   eth0
修改/etc/network/interfacds文件,设置网卡的工作模式如下:
Auto eeth0
  iface eth0 inet static
  address 192.168.1.42
  network 192.168.1.0
  netmask 255.255.255.0
  broadcast 192.168.1.255
  gateway  192.168.1.1
修改默认网关
# route del default
拨号后可查看
# route
Kernel IP routing table
Destination   Gateway     Genmask     Flags  Metric  Ref  Use  Iface
localhost       *       255.255.255.255 UH      0      0    0    ppp0
192.168.1.0    *        255.255.255.0   U      0      0    0    eth0
default        localhost      0.0.0.0      UG     0      0    0    ppp0
 
开始拨号
# pppd call wcdma&
拨号成功后会获得自动分配的IP地址
Serial connection established.
usb 1-1: pppd timed out on ep0out
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB0
PAP authentication succeeded
Could not determine remote IP address: defaulting to 10.64.64.64
Cannot determine ethernet address for proxy ARP
local  IP address 172.25.125.70
remote IP address 10.64.64.64
ping 如能ping通,则说明移植成功。
# ping
PING libra.sina.com.cn (202.108.33.73) 56(84) bytes of data.
64 bytes from 202.108.33.73: icmp_seq=1 ttl=54 time=367 ms
64 bytes from 202.108.33.73: icmp_seq=2 ttl=54 time=320 ms
64 bytes from 202.108.33.73: icmp_seq=3 ttl=54 time=300 ms
64 bytes from 202.108.33.73: icmp_seq=4 ttl=54 time=310 ms
64 bytes from 202.108.33.73: icmp_seq=5 ttl=54 time=330 ms
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yel617/archive/2010/05/18/5602934.aspx
阅读(1514) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~