天天看點

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

1.4G網絡連接配接

對于嵌入式Linux而言,4G網絡連接配接是一個比較容易實作的功能,大多數的4G子產品接口都是MiniPCIE接口,但是深入了解一下就會發現,4G子產品的通信接口都是USB,是以4G子產品的驅動就是USB驅動,隻要USB驅動正常,4G子產品在硬體上就能正常通信。下面看一下4G子產品的硬體原理圖:

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植
迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

在原理圖中,U25是4G子產品的MiniPCIE接口,然後通信引腳會接到U15的HUB晶片上,是以4G子產品會被識别成USB裝置,CON5是SIM卡接口,在使用4G子產品時,需要先插入SIM卡。在i.MX6UL終結者開發闆上使用的EC20 4G子產品,如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

2. EC20 4G子產品配置

2.1. 添加USB裝置資訊

要使用EC20 4G子產品首先需要在Linux核心中添加EC20的USB資訊,這樣核心啟動後,才能正确識别EC20 4G子產品。打開Linux核心下的drivers/usb/serial/option.c 檔案,添加如下資訊:

1809         

1810         { USB_DEVICE(0x05C6, 0x9090) },

1811         { USB_DEVICE(0x05C6, 0x9003) },

1812         { USB_DEVICE(0x05C6, 0x9215) },

1813         { USB_DEVICE(0x2C7C, 0x0125) },

1814         { USB_DEVICE(0x2C7C, 0x0121) },

1815         其中第1813行是EC20 4G子產品的USB資訊。

2.2. Linux核心配置

添加完EC20 4G子產品的USB資訊後,需要修改Linux 核心配置來支援USBNET功能。具體配置如下:

Device Drivers  --->

Network device support  --->

<*>   USB Network Adapters  --->

<*>   Multi-purpose USB Networking Framework配置如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

接下來我們還需要使能 USB 序列槽 GSM、CDMA 驅動,配置路徑如下:

Device Drivers  --->

USB support  --->

<*>   USB Serial Converter support  --->

<*>   USB driver for GSM and CDMA modems

配置如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

然後配置ppp,配置路徑如下:

Device Drivers  --->

Network device support  --->

<*>   PPP (point-to-point protocol) support

<*>     PPP BSD-Compress compression

<*>     PPP Deflate compression

PPP filtering

<*>     PPP MPPE compression (encryption)

PPP multilink support

<*>     PPP over Ethernet

<*>     PPP support for async serial ports

<*>     PPP support for sync tty ports

tty ports配置如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

配置完成後,重新編譯核心,然後使用新的核心啟動開發闆。如果配置成功開發闆啟動後會有如圖 2.2.4資訊列印:

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

可以看出EC20 4G子產品識别成功,并且虛拟出5個USB裝置,分别為ttyUSB0~ttyUSB4。

3. EC20 4G子產品聯網測試

3.1. PPP軟體包編譯

首先拷貝ppp-2.4.4.tar.gz到Ubuntu下,然後執行下面的指令解壓:

tar -xvf ppp-2.4.4.tar.gz

解壓完成得到ppp-2.4.4目錄,進入ppp-2.4.4目錄如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

使用configure進行配置,指令如下:./configure結果如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

配置完成後,使用下面的指令進行編譯:

make CC=arm-linux-gnueabihf-gcc

“CC=arm-linux-gnueabihf-gcc”指定編譯器,和開發闆Linux核心使用同一個編譯器。編譯完成如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

編譯完成後,分别在chat、pppd、pppdump、pppstats四個目錄下生成chat、pppd、pppdump、pppstats可執行檔案,用于後面的4G子產品聯網測試。

3.2. EC20 4G子產品聯網測試

首先安裝好EC20 4G子產品、天線和SIM卡,如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

開發闆準備好後啟動Linux系統,待系統啟動後,進入/etc目錄,然後建立ppp目錄,具體指令如下:

cd /etc  //進入etc目錄

mkdir ppp //建立ppp目錄

目錄建立完後,使用U盤将上一節編譯的chat、pppd、pppdump、pppstats四個可執行檔案拷貝到/etc/ppp目錄下,如圖 :

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

然後在/etc/ppp目錄下建立pap-secrets檔案,使用下面指令:

touch pap-secrets //建立pap-secrets檔案vi pap-secrets  //打開pap-secret

輸入如下内容:

# Secrets for authentication using PAP

# client        server  secret                  IP addresses

card   *       card   *

在4G信号在通信時候有一個密碼的比對,密碼對了就可以通信了。上面顯示使用者是card,密碼是card。

然後建立新檔案夾peers,指令“mkdir peers”。

進入peers檔案夾,建立wcdma檔案,指令如下:

touch wcdma

vi 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/ttyUSB2

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

需要注意的是使用/dev/ttyUSB2裝置節點檔案。

“user "card"”和“password "card"”對應了pap-secrets檔案中的使用者名和密碼。

建立wcdma-chat-connect檔案:

touch wcdma-chat-connect

vi 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

OK-AT-OK ATDT*99#

這兩句話會根據移動聯通或者是電信而變化,這裡用的是移動4G。

建立wcdma-chat-disconnect檔案:

touch wcdma-chat-disconnect

vi wcdma-chat-disconnect

内容如下:

ABORT "ERROR"

ABORT "NO DIALTONE"

SAY "INSending break to the modem\n"

""\k"

""+++ATH"

SAY "\nGood bye\n"

所需檔案建立完成後,就可以進行聯網測試了。

首先關閉eth0裝置,因為和EC20 4G子產品有沖突,同時隻能使用一個裝置。指令如下:

ifconfig eth0  down

然後在/etc/ppp目錄下輸入指令:

./pppd call wcdma &

結果如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

上圖表示聯網成功後的IP位址為10.47.135.182,使用ifconfig指令檢視結果如圖

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

這時使用ping指令檢視能夠ping通外網,指令如下:

ping 202.108.22.5 -c 4 “-c”選項指定ping網絡的次數。“202.108.22.5”是百度的IP位址,結果如圖 :

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

發現不能ping通外網,願意是因為DNS沒有設定對,在etc下有一個檔案resolv.conf 。這個檔案是用來放DNS的。就是這個裡面的域名沒有設定對。然而在eth0的運作腳本裡強制性的把這個檔案複制為了192.168.1.1 。這就造成即便在這裡檔案裡設定上正确的DNS,再開機後也會發現這個檔案裡已經是192.168.1.1了。這是因為eth0,是開機自啟動的。

我們在/etc目錄下建立一個檔案resolv.conf_back:

touch resolv.conf_back

vi resolv.conf_back

輸入如下内容:

nameserver 202.99.160.68

nameserver 221.130.33.52

nameserver 221.130.33.60

nameserver 192.168.1.1

然後在建立一個腳本檔案ppp0:

touch ppp0

vi ppp0

輸入如下内容:

#!/bin/sh

ifconfig eth0 down

cp /etc/resolv.conf_back

/etc/resolv.conf/etc/ppp/pppd call wcdma&

修改ppp0檔案的執行權限:

chmod 777 ppp0

這裡第一步是将eth0關掉,第二步将我們的DNS檔案覆寫到resolv.conf上,第三步運作。然後重新開機,執行ppp0腳本,指令如下:

/etc/ppp0

腳本執行成功後,重新使用ping指令,結果如圖:

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

圖檔顯示可以正常ping通百度的IP位址。至此EC20 4G子產品就可以正常使用了。

迅為IMX6ull開發闆Linux系統EC20 4G子產品移植
迅為IMX6ull開發闆Linux系統EC20 4G子產品移植

繼續閱讀