分类: LINUX
2012-08-15 12:43:25
内核中提供了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
下一步移植 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/