windows:win10
Ubuntu:12.04
kernel:3.0.35
qt:4.7.1
工具链: arm-none-linux-gnueabi-gcc-4.4.3
EC20 4G模块的移植分两部分:
第一部分:修改linux内核源码(本文档使用的是USB Seriel Driver)
第二部分:修改文件系统(本文档涉及的文件系统为qt)
一、修改内核源码
1.修改驱动源码
打开 [KERNEL]/drivers/usb/serial/option.c,为了让系统识别EC20模块,需要添加模块的PID和VID信息。如下:
我们可以在官方文档中查到EC20的VID和PID。
如我的是这样:
2.修改内核配置
在内核目录下, make menuconfig
[*] DeviceDrivers->
[*]USB Support ->
[*] USB Serial Converter support
[*]USBdriver for GSM and CDMA modems
3.配置内核的ppp功能
在内核目录下 makemenuconfig
[*] DeviceDrivers->
[*]Network device support ->
[*]PPP(point-to-point protocol) support
二、修改文件系统
1.准备好ppp的相关文件
(1).下载ppp-2.4.4.tar.gz
(2).解压:tar -vxf ppp-2.4.4.tar.gz
(3).运行configure,生成Makefile:./configure
(4).编译输入命令:makeCC=arm-none-linux-gnueabi-gcc-4.4.3
到此,在chat、pppd、pppddump、pppstats中生成了4个可执行文件chat、pppd、pppddump、pppstats,用于拨号
2.创建ppp
(1).在etc中新建文件夹ppp
(2).把4个可执行文件chat、pppd、pppddump、pppstats拷贝到ppp文件夹里
3.写配置文件
(1).在etc/ppp文件夹里 vipap-secrets
(2).输入
#Secrets for authentication using PAP
# client server secret IPaddresses
card * card *
在4G通信的时候有个用户名与密码的对比,密码对了便可以进行通信。上面显示的用户是card,密码是card
(3).在etc/ppp下新建文件夹peers,在peers下建立文件wcdma,输入:
# /etc/ppp/peers/wcdma
# This is pppd script for China liantong
# Usage: root>pppd call wcdma
hide-password
noauth
connect '/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect'
disconnect '/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect'
debug
/dev/ttyUSB3
115200
defaultroute
noipdefault
novj
novjccomp
noccp
ipcp-accept-local
ipcp-accept-remote
local
lock
dump
nodetach
user "card"
password "card"
crtscts
remotename 3gppp
ipparam 3gppp
usepeerdns
(4).在peers中新建文件wcdma-chat-connect,输入:
ABORT "BUSY"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
TIMEOUT 120
"" AT
OK \rATZ
OK \rAT+CGDCONT=1,"IP","3gnet",,0,0
OK-AT-OK ATDT*99#
CONNECT \d\c
说明:OK\rAT+CGDCONT=1,"IP","3gnet",,0,0 中的 3gnet ,会根据移动、联通和电信三大运营商的不同而有所改变
(5).在peers中新建文件wcdma-chat-disconnect,输入:
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "INSending break to the modem\n"
""\k"
""+++ATH"
SAY "\nGood bye\n"
到这里,大部分工作已经完成,测试如下
插入sim卡,重启开发板,关闭eth0:ifconfig eth0 down
进入etc/ppp中,输入 pppd call wcdma &
如果移植成功,会打印一些信息,下面是截取的最后部分:
CHAP authentication succeeded
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0
rcvd [IPCP ConfNak id=0x1
sent [IPCP ConfReq id=0x2
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfAck id=0x2
Could not determine remote IP address:defaulting to 10.64.64.64
local IP address 10.211.219.99
remote IP address 10.64.64.64
primary DNS address 221.130.33.60
secondary DNS address 221.130.33.52
此时开发板应该可以ping通ip地址,还不能ping通域名,需要如下操作
在etc下新建文件resolv.conf_back: vinresolv.conf_back 输入DNS:
nameserver 202.99.160.68
nameserver 221.130.33.52
nameserver 221.130.33.60
nameserver 192.168.1.1
在etc下新建脚本文件ppp0:vim ppp0 输入:
#!/bin/sh
ifconfig eth0 down
cp /etc/resolv.conf_back /etc/resolv.conf
/etc/ppp/pppd call wcdma&