华为E1750移植到dm355

一、嵌入式系统环境及硬件

1、内核:Linux-2.6.10

2、板块自带USB接口:USB2.0

3、3G网卡:华为E1750 (当然还需要去联通办USIM卡,大概是200块钱,每月80元/1G)

二、所需软件包

1、usb-modeswitch-1.1.2.tar.bz2

usb-modeswitch-1.1.2.tar.bz2是对USB设备的工作模式进行转换一种万能工具,因为一般的3G网卡都不附带Linux的驱动,所有要用其进行转换。

2、libusb-0.1.12.tar.gz

 libusb提供给usb_modeswitch一套系统API

3、ppp-2.4.4.tar.gz

这个软件包是拨号工具

三、交叉编译usb-modeswitch

1、首先交叉编译libusb

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

[[email protected]]# mkdir install

[[email protected]]# ./configure --build=i686-linux --host=arm-linux --prefix=/home/libusb-0.1.12/install

 [[email protected]]# make

[[email protected]]# make install

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

[[email protected]]# export

PKG_CONFIG_PATH=/home/userfordm355/libusb-0.1.12/install/lib/pkgconfig:$PKG_CONFIG_PATH

    查看是否设置正确(这一步看你的libusb-1.0.12所在的目录,安装自己的目录修改)

[[email protected]]# echo $PKG_CONFIG_PATH

3、 交叉编译usb_modeswitch

(1)、修改Makefile文件

      CC = arm_v5t_le-gcc

(2)、在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 即可。(注意如果此处就编译内核的话最好把内核中的有关ppp的选项也编译进内核,免得内核不支持ppp。等到编译ppp的时候就应该知道这步的作用了)                                          五、利用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拨号工具进行编译了.

    tar zxvf ppp-2.4.4.tar.gz

    cd ppp-2.4.4

    ./configure

    make CC=arm_v5t_le-gcc

编译好后,将pppd目录下的pppd可执行文件和chat目录下的chat可执行文件复制到开发板根目录下/usr/sbin/目录下。(如果上次编译内核,你没有将ppp支持编译入内核,那么很遗憾,得重新再编译一次,添加对ppp的支持。)

   pppd编译好了,那么要编写拨号脚本了:(有3个)

1、wcdma:(命名为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'

 

2、chat-wcdma-connect:(命名为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

3、chat-wcdma-disconnect:(命名为chat-wcdma-disconnect

ABORT "ERROR"

ABORT "NO DIALTONE"

SAY "/nSending break to the modem/n"

'' "/K"

'' "+++ATH"

SAY "/nGoodbay/n"

将wcdma放在开发板的跟目录下/etc/ppp/peers,剩下两个文件放在根目录下/etc/ppp下

修改/etc/resolv.conf文件添加DNS

nameserver 8.8.8.8

nameserver 8.8.4.4

(以上为Google的公共DNS服务)(如果该处出现问题,可能无法解析域名,ping的时候会报错)

七、开始拨号

[email protected]:/opt# pppd call wcdma&

拨号成功后会获得自动分配的IP地址

Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB0
CHAP 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.20.196.53
remote IP address 10.64.64.64
primary   DNS address 202.99.160.68
secondary DNS address 202.99.166.4

ping www.baidu.com 如能ping通,则说明移植成功。

[email protected]:/opt# ping www.baidu.com
PING www.a.shifen.com (220.181.6.175) 56(84) bytes of data.
64 bytes from 220.181.6.175: icmp_seq=1 ttl=49 time=116 ms
64 bytes from 220.181.6.175: icmp_seq=2 ttl=49 time=110 ms
64 bytes from 220.181.6.175: icmp_seq=3 ttl=49 time=110 ms
64 bytes from 220.181.6.175: icmp_seq=4 ttl=49 time=110 ms
64 bytes from 220.181.6.175: icmp_seq=5 ttl=49 time=110 ms
64 bytes from 220.181.6.175: icmp_seq=6 ttl=49 time=110 ms
64 bytes from 220.181.6.175: icmp_seq=7 ttl=49 time=110 ms
64 bytes from 220.181.6.175: icmp_seq=8 ttl=49 time=110 ms
64 bytes from 220.181.6.175: icmp_seq=9 ttl=49 time=120 ms

到此说明移植成功了。

八、存在的问题

1、我建的ttyUSB0/ttyUSB1/ttyUSB2,保存不了,每次重启都需要重新建立

2、不知道怎么断开网络,每次我都是用的 ps查询PID,然后kill掉。

在此过程中 得到了许多朋友的帮助,特别是邓凌峰,在此对他们表示我最真诚的感谢!

参考:

1、叶磊 华为E1750在MD6440上移植,http://blog.csdn.net/yel617/archive/2010/05/18/5602934.aspx

2、邓凌峰 华为EC122在HiSi3110E上移植 http://blog.csdn.net/linfeng999/archive/2010/08/28/5846474.aspx

你可能感兴趣的:(Authentication,Path,工具,华为,makefile,reference)