移植_基于讯为iMX6q开发板的EC20 4G模块

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信息。如下:

移植_基于讯为iMX6q开发板的EC20 4G模块

我们可以在官方文档中查到EC20的VID和PID。

如我的是这样:

移植_基于讯为iMX6q开发板的EC20 4G模块

2.修改内核配置

在内核目录下, make menuconfig

[*] DeviceDrivers->

   [*]USB Support ->

      [*] USB Serial Converter support

           [*]USBdriver for GSM and CDMA modems

移植_基于讯为iMX6q开发板的EC20 4G模块

3.配置内核的ppp功能

在内核目录下 makemenuconfig

[*] DeviceDrivers->

   [*]Network device support ->

        [*]PPP(point-to-point protocol) support

移植_基于讯为iMX6q开发板的EC20 4G模块

 

二、修改文件系统

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 <addr 0.0.0.0><ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr10.211.219.99> <ms-dns1 221.130.33.60> <ms-dns3 221.130.33.52>]
sent [IPCP ConfReq id=0x2 <addr10.211.219.99> <ms-dns1 221.130.33.60> <ms-dns3 221.130.33.52>]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfAck id=0x2 <addr10.211.219.99> <ms-dns1 221.130.33.60> <ms-dns3 221.130.33.52>]
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

此时开发板应该可以pingip地址,还不能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下新建脚本文件ppp0vim ppp0 输入:

#!/bin/sh
ifconfig eth0 down
cp /etc/resolv.conf_back /etc/resolv.conf
/etc/ppp/pppd call wcdma&