Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3003932
  • 博文数量: 674
  • 博客积分: 17881
  • 博客等级: 上将
  • 技术积分: 4849
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 10:15
文章分类

全部博文(674)

文章存档

2013年(34)

2012年(146)

2011年(197)

2010年(297)

分类: LINUX

2012-08-15 12:43:25

   一、在很多LINUX系统中没有lsusb

内核中提供了USB设备文件系统(usbdevfs,Linux 2.6改为usbfs,即USB文件系统),它和/proc类似,都是动态产生的。通过在/etc/fstab文件中添加如下一行:

none /proc/bus/usb usbfs defaults

或者输入命令:

mount -t usbfs none /proc/bus/usb

                    cat /proc/bus/usb/devices

二、

由于要在板子上驱动3G模块,所以要交叉编译usb_modeswitch
usb_modeswitch是转换接口,3G模块启动时是CD-ROM,要转换成多个USB串口

 

 

下载usb_modeswitch-1.0.5.tar.bz2 
解压
修改Makefile 
   STRIP     = arm-linux-strip
   CC          = arm-linux-gcc
直接make all 提示的是缺少usb.h这个库,然后下面是一堆的报错
上网查了查,原来编译usb_modeswitch还缺少libusb这个库

下载libusb-0.1.12.tar.gz

执行       

mkdir install
./configure --build=i686-linux --host=arm-linux --prefix=?/libusb-0.1.12/install

make
make instal
如果没什么错误的话就会在install文件下生成lib,include。其中在include下就有我们需要的usb.h

$(CC)    $(CCFLAGS) -I /home/g3arm/libusb/install/include/ -L /home/g3arm/libusb/install/lib/ -o     $(PROG) $(OBJS)     

root@hzy-desktop:~# export PKG_CONFIG_PATH=/home/g3arm/libusb/install/lib/pkgconfig:$PKG_CONFIG_PATH
root@hzy-desktop:~# echo $PKG_CONFIG_PATH 

找了网上的一些配置方法,还是编译通不过;后然只好研究一下LIBUSB中的TESTS看了一下
里面的makefile

把usb_modeswitch的makefile修改如下:

PROG        = usb_modeswitch
VERS        = 0.9.7
STRIP     = arm-linux-strip
CC          = arm-linux-gcc
#CCFLAGS     = -l usb
#$(PROG):&(OBJS) 
# &(CC) -o $(PROG) &(OBJS) &(CFLAGS) -I /home/g3arm/libusb/install/inclued/ -L /home/g3arm/libusb/install/lib
  
RM          = /bin/rm -f
OBJS        = usb_modeswitch.c
PREFIX     = $(DESTDIR)/usr
ETCDIR     = $(DESTDIR)/etc
SBINDIR     = $(PREFIX)/sbin

.PHONY:     clean
all:        $(PROG)
$(PROG):    $(OBJS)
# $(CC) $(CCFLAGS) -o $(PROG) $(OBJS)
#$(CC) $(CCFLAGS) -I /home/g3arm/libusb/install/include   -L /home/g3arm/libusb/install/lib -o  $(PROG) $(OBJS)  
# $(CC) $(CCFLAGS) -I /home/g3arm/libusb/install/include    -o  $(PROG) $(OBJS)  
 $(CC) -DHAVE_CONFIG_H   -I.. -I..    -g -O2 -MT usb_modeswitch.o -MD -MP -MF "../.deps/usb_modeswitch.Tpo" -c -o usb_modeswitch.o usb_modeswitch.c
 $(CC)  -g -O2 -o usb_modeswitch usb_modeswitch.o  ../.libs/libusbpp.a /home/g3arm/libusb/.libs/libusb.a /home/eldk41gcc40/usr/../arm/lib/libstdc++.so -L/opt/eldk/build/arm-2007-01-21/work/usr/src/denx/BUILD/crosstool-0.35/build/gcc-4.0.0-glibc-2.3.5-eldk/arm-linux/build-gcc/arm-linux/libstdc++-v3/src -L/opt/eldk/build/arm-2007-01-21/work/usr/src/denx/BUILD/crosstool-0.35/build/gcc-4.0.0-glibc-2.3.5-eldk/arm-linux/build-gcc/arm-linux/libstdc++-v3/src/.libs -L/opt/eldk/build/arm-2007-01-21/work/usr/src/denx/BUILD/crosstool-0.35/build/gcc-4.0.0-glibc-2.3.5-eldk/arm-linux/build-gcc/gcc -L/var/tmp/eldk.710J0c/usr/crosstool/gcc-4.0.0-glibc-2.3.5-eldk/arm-linux/arm-linux/bin -L/var/tmp/eldk.710J0c/usr/crosstool/gcc-4.0.0-glibc-2.3.5-eldk/arm-linux/arm-linux/lib

 $(STRIP) $(PROG)


clean:
       $(RM) ./usb_modeswitch

install: all
 mkdir -p $(SBINDIR)
 install ./usb_modeswitch $(SBINDIR)
 mkdir -p $(ETCDIR)
 install ./usb_modeswitch.conf $(ETCDIR)

uninstall: clean
 $(RM) /usr/sbin/usb_modeswitch
 $(RM) /etc/usb_modeswitch.conf

.PHONY:     clean install uninstall

OK,make 一下就OK了,可以把USB_MODESWITCH和相应的CONF文件分别TFTP到/bin和/etc里面

CONF里+入

#ZTE-T A356 
DefaultVendor= 0x19d2 
DefaultProduct= 0x0120 
TargetVendor= 0x19d2 
TargetProduct= 0x0079

DetachStorageOnly=0 
MessageContent="5553424312345678000000000000061b000000020000000000000000000000" 
Interface=0x00 
NeedResponse=0

下一步移植 wvdial

先移植wvstreams.so

下载:wvstreams-4.6.tar;解压后

新建INSTALL文件夹

make clean

./configure --prefix=/home/g3arm/libusb/wvstreams/install  --host=arm-linux CPPFLAGS=-I/home/eldk41gcc40/arm/usr/include  --with-openssl=/home/eldk41gcc40/arm/usr/lib --without-dbus --with-pam=no --with-tcl=no --with-qt=no --without-valgrind
make

make  install

主要是CONFIG设置一下,arm-linux-gcc 还有指定一下LIBOPENSSL的INCLUDE和LIB地址

OK wvstreams.so 生成成功

下载wvdial-1.60.4
修改Makefile
prefix=/usr/local
改为
prefix=/works/cdma/install-4.2.2

PPPDIR=/etc/ppp/peers
改为
PPPDIR=${prefix}/etc/ppp/peers

PC_CFLAGS=$(shell pkg-config --cflags libwvstreams)
改为
PC_CFLAGS=-I/works/cdma/install-4.2.2/include/wvstreams

PC_LIBS=$(shell pkg-config --libs libwvstreams)
PC_LIBS=-L/works/cdma/install-4.2.2/lib -lwvstreams -lwvutils -lwvbase

修改wvrules.mk
WVLINK_CC = gcc
改为
WVLINK_CC = arm-linux-g++
CC = arm-linux-g++
CXX = arm-linux-g++

make
make install

配置/etc/wvdial.comf


OK,

运行一下,

usbmodeswitch -W

SELLP(10S)

WVDIAL

在本次移植中针对于这个3G网卡由于网卡网上资料少,在对usb_modeswitch进行转换时的CONF有一定的?

不过还好GOOGLE了一下找了到一个国外网点上的资料

由于使用WVDIAL拨号,wvdial编译依赖于wvstreams(LIBZ,opemssl)所以编译好后的可执行文件+.SO很大,10M左右;

所以下步准备使用PPPD进行拨号;

http://hzy831225.blog.163.com/blog/static/2911359820101129174247/

阅读(1380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~