友善之臂Micro2440嵌入式Linux下实现华为EC189 电信3G拨号上网方法

时间:2021-08-21 19:33:08
很久没有更新日志了。发一篇技术贴,希望能给需要的人提供参考。由于时间仓促,难免有错误,恳请大家批评指正,我会及时修改。您真诚的回复是我共享经验的动力。3ks!
嵌入式环境:内核:linux-2.6.32.2交叉编译环境:arm-linux-gcc 4.4.3根文件系统:rootfs_qtopia_qt4 (发布日期2011-3-4)

 、内核配置

Cd ~/linux-2.6.32.2

Make menuconfig

配置:

Device Drivers=>

USB support=>

[*] Suppon for Host-side USB

[*] USB device filesystem

[*] USB device class-devices

[*] OHCI HCDsupport

[*] USB Mass Storage Support

USB Serial Convelter suppor -->

[*] USB driver for GSM and CDMA modems

SCSI device support=>

[*]SCSI device support

[*] SCSI disk support

[*] Probe all LUNs on each SCSI device

HDI Devices=>

[*] USB Human Interface Devices support

[*] /dev/hiddev raw HID device support

Network device support=>

<*> PPP(point—to—point protoco1)support

[*]   PPP multilink support(EXPERIMENTAL)

<*> PPP support for async serial ports

<*> PPP suppo rt for sync tty ports

<*> PPP Deflate compression

<*> PPP BSD —Compress compression

<*> PPP MPPE compress compression(encryp—tion)

<*> PPP over Ethernet

<*> PPP over 12TP


二、修改相关内核驱动文件

Vendor IDProduct ID添加到linux-2.6.32.2/drivers/usb/serial/option.c

#defineHUAWEI_PRODUCT_EC189 0x1446

staticstruct usb_device_id option_ids[]={

……

{USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID,0x1446,0xff,0xff,0xff)},

……};

#makezImage

编译结束后,会在 arch/arm/boot目录下生成 linux 内核映象文件:zImage

烧录到开发板中


三、编译相关工具

usb_modeswitch-1.0.8.tar.bz2(http://www.draisberghof.de/usb_modeswitch/)

usb_modeswitch-current_data.tar.bz2(http://www.draisberghof.de/usb_modeswitch/)

libusb-1.0.6.tar.bz2(http://sourceforge.net/projects/libusb/files/libusb-1.0/)

libusb-compat-0.1.3.tar.bz2(http://www.linuxfromscratch.org/blfs/view/svn/general/libusb-compat.html

交叉编译usb_modeswitch

1. 交叉编译 libusb

A. 解压并进入libusb-1.0.8目录,建立子目录install用于存放最后生存的库文件与头文件。

# mkdir install

B. 配置并生成Makefile文件

#./configure –build=i686-linux--host=arm-linux --prefix=/…../libusb-1.0.8/install

#make

]# make install

2. 设置PKG_CONFIG_PATH环境变量,以使我们后面的编译能够顺利找到libusb

A.设置环境变量

#export PKG_CONFIG_PATH=/home/Anson/libusb-1.0.8/install/lib/pkgconfig:$PKG_CONFIG_PATH

B.查看是否设置正确

#echo $PKG_CONFIG_PATH

3. 交叉编译lib_compat

与上面编译libusb的方法类似:

#mkdir install

#./configure --build=i686-linux--host=arm-linux --prefix=/…../libusb-compat-0.1.3/install

#make

#make install

说明:如果此时出现"-Wno-pointer-sign""-fvisibility=hidden"这类错误,则是由于编译器版本过低不支持导致的,可以直接在Makefilelibusb/Makefile文件中删除这些编译选项即可。(我用的是arm-linux-gcc 4.4.3没问题)

4. 交叉编译usb_modeswitch

A.修改Makefile文件

修改STRIPCC选项为:

STRIP = arm-none-linux-gnueabi-strip

CC = arm-none-linux-gnueabi-gcc

 

可以将上面的libusblibusb-compat的库和头文件拷贝到交叉编译器的目录下(install/lib内的文件拷贝到/opt/FriendlyARM/toolschain/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/  和install/include文件夹添加到/opt/FriendlyARM/toolschain/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/include),并在Makefile中添加路径:

LDFLAGS=-Wl,-rpath=/opt/FriendlyARM/toolschain/4.4.3/lib/gcc/arm-none-linux-gnueabi/4.4.3/

其它不变这里的usb.h就是libusb-compat目录下的,如果没有usb.h,usb_modeswitch是编译不过去的。

5 make

编辑usb_modeswitch目录下的usb_modeswitch.conf文件,在usb-modeswitch-data-20110227中可以找到对应的文件12d1:1446,粘贴即可。

usb_modeswitch, usb_modeswitch.conf拷贝到/home目录下,并开启最高权限(chmod 777 +文件名


四、 PPP拨号

下载ppp-2.4.4编译  #cd /root/gprs/ppp-2.4.1

    #./configure

    #make CC= /usr/local/..../bin/arm-none-linux-gnueabi-gcc  

拨号所用到的程序就是ppp-2.4.4/pppd/下的pppd,ppp-2.4.4/chat/下的chat程序

将交叉编译出来的这 两个应用程序 拷贝到开发板 /usr/sbin 文件夹下 ,更改其属性为可执行文件chmod 777 

注:友善最新的文件系统在/usr/sbin目录下已经有pppd chat pppdump等文件

修改拨号脚本:

开发板上/etc/ppp/cdma2000文件中添加3G网卡的账号,密码

再拷贝到/usr/sbin目录下

 

Usb模式转化

cd /home

./usb_modeswitch–W –c usb_modeswitch.conf

Cd/usr/sbin

pppdfile cdma2000

 

成功拨号上网!


参考资料:    http://www.linuxidc.com/Linux/2011-03/33428.htm

                        http://www.linuxidc.com/Linux/2011-03/33429.htm

                        http://www.linuxidc.com/Linux/2011-03/33430.htm

                        彭海文,武汉大学,《基于嵌入式Linux的3G技术的应用和研究》


转载请注明出处!谢谢!