[4 G]Linuxプラットフォームで4 G通信を実現する
25852 ワード
回転:http://blog.sina.com.cn/s/blog_7880 d 3350102 wb 92.
ARMプラットフォームの上で4 GモジュールのPPPダイヤルを実現してインターネットを利用して、ネット上の資料と自分の理解を参考にして、何も知らないから開発完成まで一週間以上かかりました.最後にARMボードのpingを見て、wwww.baidu.comを通した時はとても嬉しかったです.今はこの過程を下記のように整理します.もちろん、それ以外にもやるべき仕事はたくさんあります.
4 Gモジュールで使用するSIM TECH のSIM 7100 C、SIM 7100 CはUARTとUSBインターフェースを持っています.速度を考慮してUSBインターフェースとARMを使って通信します.3 Gモジュールの駆動(USBシリアルドライバ)とPPPプロトコルのサポートをlinuxカーネルに追加し、カーネルをコンパイルして開発ボードにダウンロードします.
仕事量は主に二つの部分が含まれています.普通はモジュールメーカーガイドにあります. Linux駆動層のサポート モジュール起動停止スクリプトデバッグ 1. カーネルをコンパイルする
◇ 大容量メモリ駆動
usblibライブラリとlibusb-comptをダウンロードします.
https://sourceforge.net/projects/libusb/files/
3. クロスコンパイル4 Gモジュール駆動
クロスコンパイルGobiSerial.c(ARCH=arm CC=arm-none-linux-gnueabi-gcc)は、Gobi Serial.koを得る.ARMボードにコピーしてドライバをインストールします.
4 Gモジュールを挿して、6つのキティUSBを仮想します.それぞれ:
参照:http://blog.sina.com.cn/s/blog_7880 d 3350102 wb 3 e.
6. ダイヤルアップスクリプトの設定
root@am335x-evm:pppd call gprsdial
8. テスト
ダイヤルしてテストしたら、pingはipを通すことができますが、ドメイン名をpingに通すことはできません.これはDNS解析サーバのアドレスを追加するために設定/etc/resoliv.coを必要とする.
ファイル/etc/resoliv.co nfはDNSクライアントを構成しており、ホストのドメイン名検索順序とDNSサーバのアドレスを含んでおり、各行は一つのキーワードと一つ以上のスペースで区切られたパラメータを含むべきである.以下は例ファイルです.
ここには二つのDNSしか設置していません.
How to use the SIM 7100 module in Linux.pdf
http://blog.csdn.net/hanmengaidudu/article/details/17099737
http://www.linuxidc.com/Linux/2011-03/33430p2.htm
http://www.linuxidc.com/Linux/2011-03/33430.htm
--------------------私は分割線-------------------
2016.11.25上記の部分のスクリプトに対して補足コメントを行いました.より分かりやすいです.
PPPプロトコルの3つのコンポーネントは、PPPプロトコルのパッケージ方式、LCPプロトコル、NCPプロトコルを含む.ダイヤルアップ成功には確立プロセスが必要で、ダイヤルアップの双方がプロトコル規則に従って行う複数のインタラクションプロセスが必要です.
PPP紹介参考文章:http://blog.sina.com.cn/s/blog_7880 d 335010 wr 3 z.
ダイヤル設定のコメントは以下の通りです.
ヽoo/etc/ppp/peers/gprsdial
ARMプラットフォームの上で4 GモジュールのPPPダイヤルを実現してインターネットを利用して、ネット上の資料と自分の理解を参考にして、何も知らないから開発完成まで一週間以上かかりました.最後にARMボードのpingを見て、wwww.baidu.comを通した時はとても嬉しかったです.今はこの過程を下記のように整理します.もちろん、それ以外にもやるべき仕事はたくさんあります.
4 Gモジュールで使用するSIM TECH のSIM 7100 C、SIM 7100 CはUARTとUSBインターフェースを持っています.速度を考慮してUSBインターフェースとARMを使って通信します.3 Gモジュールの駆動(USBシリアルドライバ)とPPPプロトコルのサポートをlinuxカーネルに追加し、カーネルをコンパイルして開発ボードにダウンロードします.
仕事量は主に二つの部分が含まれています.普通はモジュールメーカーガイドにあります.
◇ 大容量メモリ駆動
> Device Drivers > USB support
make ARCH=arm menuconfig USB :
USB Mass Storage support
[*] USB Mass Storage verbose debug
Realtek Card Reader support
[*] Realtek Card Reader autosuspend support
Datafab Compact Flash Reader support
◇ USBドライバ> Device Drivers > USB support
Inventra Highspeed Dual Role Controller (TI, ADI, ...)
MUSB Mode Selection (Dual Role mode) --->
Platform Glue Layer (TI DSPS platforms) --->
MUSB DMA mode (Disable DMA (always use PIO)) --->
USB Serial Converter support --->
[*] USBGeneric Serial Driver
USBdriver for GSM and CDMA modems
◇ 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
SLIP (serial line) support
[*] CSLIP compressed headers
2. クロスコンパイルlibus busblibライブラリとlibusb-comptをダウンロードします.
https://sourceforge.net/projects/libusb/files/
root@zhaoxc-VBox:/opt/usb-tools/libusb-1.0.20# mkdir install
configure: error: "udev support requested but libudev not installed"( : --disable-udev)
root@zhaoxc-VBox:/opt/usb-tools/libusb-1.0.20# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/usb-tools/libusb-1.0.20/install --disable-udev
root@zhaoxc-VBox:/opt/usb-tools/libusb-1.0.20# make
root@zhaoxc-VBox:/opt/usb-tools/libusb-1.0.20# make install
環境変数を追加 http://www.linuxidc.com/Linux/2011-03/33432.htm(PKGuCONFIGuPATH設定)root@zhaoxc-VBox:/opt/usb-tools/libusb-1.0.20# export PKG_CONFIG_PATH=/opt/usb-tools/libusb-1.0.20/install/lib/pkgconfig:$PKG_CONFIG_PATH
root@zhaoxc-VBox:/opt/usb-tools/libusb-1.0.20# echo $PKG_CONFIG_PATH
リブンスb-comptをコンパイル:root@zhaoxc-VBox:/opt/usb-tools/libusb-compat-0.1.5# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/usb-tools/libusb-compat-0.1.5/install
root@zhaoxc-VBox:/opt/usb-tools/libusb-compat-0.1.5# make
root@zhaoxc-VBox:/opt/usb-tools/libusb-compat-0.1.5# make install
生成したlibus b-1.0.20とlibus b-compt-0.1.5のライブラリファイルをARMボードのlinux/libの下にコピーすればいいです.3. クロスコンパイル4 Gモジュール駆動
クロスコンパイルGobiSerial.c(ARCH=arm CC=arm-none-linux-gnueabi-gcc)は、Gobi Serial.koを得る.ARMボードにコピーしてドライバをインストールします.
#insmod GobiSerial.ko
4. 駆動運転状況を表示4 Gモジュールを挿して、6つのキティUSBを仮想します.それぞれ:
root@am335x-evm:/# ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4 /dev/ttyUSB5
1) /dev/ttyUSB0-diag port for output developing messages
2) /dev/ttyUSB1- NMEA port for GPS NMEA data output
3) /dev/ttyUSB2-AT port for AT commands
4) /dev/ttyUSB3-Modem port for ppp-dial
5) /dev/ttyUSB4-audio port
6) /dev/ttyUSB5-Virtual Net card
USBメモリを挿入し、デバイスの運転を促す.[75097.986054] usb 2-1: New USB device found, idVendor=058f, idProduct=6387
[75097.993167] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[75098.000689] usb 2-1: Product: Mass Storage
[75098.004995] usb 2-1: Manufacturer: Generic
[75098.009342] usb 2-1: SerialNumber: AC3DF2EE
[75098.024341] usb-storage 2-1:1.0: USB Mass Storage device detected
[75098.049922] scsi0 : usb-storage 2-1:1.0
lsusbコマンドで結果を確認します.Bus 001 Device 002: ID 1e0e:9001
Bus 002 Device 002: ID 058f:6387
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0002
5. クロスコンパイルPPP参照:http://blog.sina.com.cn/s/blog_7880 d 3350102 wb 3 e.
6. ダイヤルアップスクリプトの設定
root@am335x-evm:/etc/ppp# vi gprs-connect-chat
#Chat script for China Mobile, used SIMCOM sim4100 TD module.
TIMEOUT 15
ABORT "DELAYED"
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "NO CARRIER"
TIMEOUT 40
'' \rAT
OK ATS0=0
OK ATE0V1
OK AT+CGDCONT=1,"IP","CMNET"
OK AT+CGEQREQ=1,2,128,384,,,0,,,,,,
OK ATDT*99*1#
CONNECT
root@am335x-evm:/etc/ppp/peers菗vi gprsdial#/etc/ppp/peers/gprsdial
# This is pppd script for China Mobile, used SIMCOM SIM7100 Module
# Usage: root>pppd call gprs
#Interface should be used is the interface which connects physics interface of S
/dev/ttyUSB3
115200
crtscts
modem
#noauth
debug
nodetach
#hide-password
usepeerdns
noipdefault
defaultroute
user "cmnet"
0.0.0.0:0.0.0.0
#ipcp-accept-local
#ipcp-accept-remote
#lcp-echo-failure 12
#lcp-echo-interval 3
#noccp
#novj
#novjccomp
#persist
connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat'
#disconnect '/bin/chat -v -f /etc/ppp/gprs-disconnect-chat'
7. ダイヤルroot@am335x-evm:pppd call gprsdial
8. テスト
ダイヤルしてテストしたら、pingはipを通すことができますが、ドメイン名をpingに通すことはできません.これはDNS解析サーバのアドレスを追加するために設定/etc/resoliv.coを必要とする.
ファイル/etc/resoliv.co nfはDNSクライアントを構成しており、ホストのドメイン名検索順序とDNSサーバのアドレスを含んでおり、各行は一つのキーワードと一つ以上のスペースで区切られたパラメータを含むべきである.以下は例ファイルです.
domain test.com
search www.test.com test.co
nameserver 202.96.128.86
nameserver 202.96.128.166
nameserver # DNS IP
domain #
search #
sortlist #
主にnameserverのキーワードです.nameserverを指定していないとDNSサーバが見つからなくなります.他のキーワードは選択できます.ここには二つのDNSしか設置していません.
nameserver 114.114.114.114
nameserver 8.8.8.8
参考文献:How to use the SIM 7100 module in Linux.pdf
http://blog.csdn.net/hanmengaidudu/article/details/17099737
http://www.linuxidc.com/Linux/2011-03/33430p2.htm
http://www.linuxidc.com/Linux/2011-03/33430.htm
--------------------私は分割線-------------------
2016.11.25上記の部分のスクリプトに対して補足コメントを行いました.より分かりやすいです.
PPPプロトコルの3つのコンポーネントは、PPPプロトコルのパッケージ方式、LCPプロトコル、NCPプロトコルを含む.ダイヤルアップ成功には確立プロセスが必要で、ダイヤルアップの双方がプロトコル規則に従って行う複数のインタラクションプロセスが必要です.
PPP紹介参考文章:http://blog.sina.com.cn/s/blog_7880 d 335010 wr 3 z.
ダイヤル設定のコメントは以下の通りです.
ヽoo/etc/ppp/peers/gprsdial
# This is pppd script for China Mobile, used SIMCOM SIM7100 Module
# Usage: root>pppd call gprs
#Interface should be used is the interface which connects physics interface of SIM7100 Module.
/dev/ttyUSB3 //Modem port for ppp-dial
115200 //
crtscts //
modem // 。 。 ,pppd CD 。
#noauth //
debug // /var/log/messages
nodetach // ,
#hide-password // log ,
usepeerdns // , DNS . /etc/ppp/ip-up DNS1 DNS2, USEPEERDNS 1. pppd /etc/ppp/resolv.conf file, 。
noipdefault // IP , ( ) IP 。 , IPCP ( ) IP 。
defaultroute // IPCP , , 。 ppp 。
user "cmnet" // 。
0.0.0.0:0.0.0.0
#ipcp-accept-local // ,pppd IP , IP 。
#ipcp-accept-remote // ,pppd IP , IP 。
#lcp-echo-failure 12 // , n LCP LCP pppd 。 ,pppd 。 lcp-echo-interval 。 (e.g., ) pppd 。
#lcp-echo-interval 3 // ,pppd LCP (echo-request) (frame) 。 Linux , n 。 (echo-reply) 。 lcp-echo-failure 。
#noccp // 。 PPPD , 。
#novj // , Van Jacobson TCP/IP
#novjccomp // , Van Jacobson TCP/IP ID 。Pppd Van Jacobson TCP/IP ID , 。
#persist // , 。
connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat' //[ : ]
#disconnect '/bin/chat -v -f /etc/ppp/gprs-disconnect-chat'
正常ダイヤルのプロセス印刷出力:timeout set to 15 seconds
abort on (DELAYED)
abort on (BUSY)
abort on (ERROR)
abort on (NO DIALTONE)
abort on (NO CARRIER)
timeout set to 40 seconds
send (^MAT^M)
expect (OK)
AT^M^M
OK
-- got it
send (ATS0=0^M)
expect (OK)
^M
ATS0=0^M^M
OK
-- got it
send (ATE0V1^M)
expect (OK)
^M
ATE0V1^M^M
OK
-- got it
send (AT+CGDCONT=1,"IP","CMNET"^M)
expect (OK)
^M
^M
OK
-- got it
send (AT+CGEQREQ=1,2,128,384,,,0,,,,,,^M)
expect (OK)
^M
^M
OK
-- got it
send (ATDT*99*1#^M)
expect (CONNECT)
^M
^M
CONNECT
-- got it
Script /usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat finished (pid 1633), status = 0x0
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 /dev/ttyUSB3
Warning - secret file /etc/ppp/pap-secrets has world and/or group access
sent [LCP ConfReq id=0x1 ]
rcvd [LCP ConfReq id=0x0 ]
No auth is possible
sent [LCP ConfRej id=0x0 ]
rcvd [LCP ConfAck id=0x1 ]
rcvd [LCP ConfReq id=0x1 ]
sent [LCP ConfAck id=0x1 ]
sent [CCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
rcvd [LCP DiscReq id=0x2 magic=0x451b7dc9]
rcvd [LCP ProtRej id=0x3 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 ]
rcvd [IPCP ConfRej id=0x1 ]
sent [IPCP ConfReq id=0x2 ]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfNak id=0x2 ]
sent [IPCP ConfReq id=0x3 ]
rcvd [IPCP ConfAck id=0x3 ]
Could not determine remote IP address: defaulting to 10.64.64.64
local IP address 10.19.25.49
remote IP address 10.64.64.64
primary DNS address 211.136.112.50
secondary DNS address 211.136.150.66
Script /etc/ppp/ip-up started (pid 1639)
Script /etc/ppp/ip-up finished (pid 1639), status = 0xff
pppdスタートモジュールは、自動的に/etc/pppの下にreolv.comファイルを作成します.中には対応するDNS解析サーバがあります.これは、/etc/resoliv.comの4 GモジュールDNSの代わりになります.