落風(fēng)的個(gè)人空間 http://selenalain.com/space-uid-138363.html [收藏] [復制] [RSS]

博客

迅為IMX6ULL開(kāi)發(fā)板Linux 4G通信實(shí)驗

已有 890 次閱讀2020-12-21 11:48

前面的章節中學(xué)習了如何使用有線(xiàn)網(wǎng)絡(luò )或者使用 wifi,但是使用無(wú)線(xiàn)網(wǎng)絡(luò )或者 wifi 有許多環(huán)境限制,這種時(shí)候就可以使用 4G 模塊來(lái)上網(wǎng)。在本章中學(xué)習一下如何使用 4G 模塊實(shí)現上網(wǎng)功能。
56.1 4G  網(wǎng)絡(luò )連接
對于嵌入式 Linux 而言,4G 網(wǎng)絡(luò )連接是一個(gè)比較容易實(shí)現的功能,大多數的 4G 模塊接口都是 MiniPCIE接口,但是深入了解一下就會(huì )發(fā)現,4G 模塊的通信接口都是 USB,所以 4G 模塊的驅動(dòng)就是 USB 驅動(dòng),只要 USB 驅動(dòng)正常,4G 模塊在硬件上就能正常通信。下面看一下 4G 模塊的硬件原理圖:


在原理圖中,U25 是 4G 模塊的 MiniPCIE 接口,然后通信引腳會(huì )接到 U15 的 HUB 芯片上,所以 4G 模塊會(huì )被識別成 USB 設備,CON5 是 SIM 卡接口,在使用 4G 模塊時(shí),需要先插入 SIM 卡。在 i.MX6UL 終結者開(kāi)發(fā)板上使用的 EC20 4G 模塊,如圖 56.1.3 所示:

56.2 EC20 4G  模塊配置
56.2.1  添加 USB  設備信息
要使用 EC20 4G 模塊首先需要在 Linux 內核中添加 EC20 的 USB 信息,這樣內核啟動(dòng)后,才能正確識別
EC20 4G 模塊。打開(kāi) Linux 內核下的 drivers/usb/serial/option.c 文件,添加如下信息:
1809 /* add support EC220 4G Module */
1810 { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
1811 { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
1812 { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */
1813 { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */
1814 { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
1815 /* end add */
其中第 1813 行是 EC20 4G 模塊的 USB 信息。
56.2.2 Linux  內核配置
添加完 EC20 4G 模塊的 USB 信息后,需要修改 Linux 內核配置來(lái)支持 USBNET 功能。具體配置如下:
Device Drivers --->
  • Network device support --->
    <*> USB Network Adapters --->
    <*> Multi-purpose USB Networking Framework
    配置如圖 56.2.2.1 所示:

    接下來(lái)我們還需要使能 USB 串口 GSM、CDMA 驅動(dòng),配置路徑如下:
    Device Drivers --->
  • USB support --->
    <*> USB Serial Converter support --->
    <*> USB driver for GSM and CDMA modems
    配置如圖 56.2.2.2 所示:

    然后配置 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
    配置如圖 56.2.2.3 所示:

    配置完成后,重新編譯內核,然后使用新的內核啟動(dòng)開(kāi)發(fā)板。如果配置成功開(kāi)發(fā)板啟動(dòng)后會(huì )有如圖56.2.2.4 信息打。

    可以看出 EC20 4G 模塊識別成功,并且虛擬出 5 個(gè) USB 設備,分別為 ttyUSB0~ttyUSB4。
    56.3 EC20 4G  模塊聯(lián)網(wǎng)測試
    56.3.1 PPP  軟件包編譯
    首先拷貝 ppp-2.4.4.tar.gz 到 Ubuntu 下,然后執行下面的命令解壓:
    tar -xvf ppp-2.4.4.tar.gz
    解壓完成得到 ppp-2.4.4 目錄,進(jìn)入 ppp-2.4.4 目錄如圖 56.3.1.1 所示:

    使用 configure 進(jìn)行配置,命令如下:
    ./configure
    結果如圖 56.3.1.2 所示:

    配置完成后,使用下面的命令進(jìn)行編譯:
    make CC=arm-linux-gnueabihf-gcc
    “CC=arm-linux-gnueabihf-gcc”指定編譯器,和開(kāi)發(fā)板 Linux 內核使用同一個(gè)編譯器。
    編譯完成如圖 56.3.1.3 所示:

    編譯完成后,分別在 chat、pppd、pppdump、pppstats 四個(gè)目錄下生成 chat、pppd、pppdump、pppstats可執行文件,用于后面的 4G 模塊聯(lián)網(wǎng)測試。
    56.3.2 EC20 4G  模塊聯(lián)網(wǎng)測試
    首先安裝好 EC20 4G 模塊、天線(xiàn)和 SIM 卡,如圖 56.3.2.1 所示:

    開(kāi)發(fā)板準備好后啟動(dòng) Linux 系統,待系統啟動(dòng)后,進(jìn)入/etc 目錄,然后創(chuàng )建 ppp 目錄,具體命令如下:
    cd /etc //進(jìn)入 etc 目錄
    mkdir ppp //創(chuàng )建 ppp 目錄
    目錄創(chuàng )建完后,使用 U 盤(pán)將上一節編譯的 chat、pppd、pppdump、pppstats 四個(gè)可執行文件拷貝到/etc/ppp目錄下,如圖 56.3.2.2 所示:

    然后在/etc/ppp 目錄下創(chuàng )建 pap-secrets 文件,使用下面命令:
    touch pap-secrets //創(chuàng )建 pap-secrets 文件
    vi pap-secrets //打開(kāi) pap-secrets 文件
    輸入如下內容:
    # Secrets for authentication using PAP
    # client server secret IP addresses
    card * card *
    在 4G 信號在通信時(shí)候有一個(gè)密碼的比對,密碼對了就可以通信了。上面顯示用戶(hù)是 card,密碼是 card。
    然后創(chuàng )建新文件夾 peers,命令“mkdir peers”。
    進(jìn)入 peers 文件夾,創(chuàng )建 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 設備節點(diǎn)文件。
    “user "card"”和“password "card"”對應了 pap-secrets 文件中的用戶(hù)名和密碼。
    創(chuàng )建 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#
    這兩句話(huà)會(huì )根據移動(dòng)聯(lián)通或者是電信而變化,這里用的是移動(dòng) 4G。
    創(chuàng )建 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"
    所需文件創(chuàng )建完成后,就可以進(jìn)行聯(lián)網(wǎng)測試了。
    首先關(guān)閉 eth0 設備,因為和 EC20 4G 模塊有沖突,同時(shí)只能使用一個(gè)設備。命令如下:
    ifconfig eth0 down
    然后在/etc/ppp 目錄下輸入指令:
    ./pppd call wcdma &
    結果如圖 56.3.2.3 所示:

    上圖表示聯(lián)網(wǎng)成功后的 IP 地址為 10.47.135.182,使用 ifconfig 命令查看結果如圖 56.3.2.4:

    這時(shí)使用 ping 命令查看能夠 ping 通外網(wǎng),命令如下:
    ping 202.108.22.5 -c 4
    “-c”選項指定 ping 網(wǎng)絡(luò )的次數!202.108.22.5”是百度的 IP 地址,結果如圖 56.3.2.5:

    發(fā)現不能 ping 通外網(wǎng),愿意是因為 DNS 沒(méi)有設置對,在 etc 下有一個(gè)文件 resolv.conf 。這個(gè)文件是用來(lái)放 DNS 的。就是這個(gè)里面的域名沒(méi)有設置對。然而在 eth0 的運行腳本里強制性的把這個(gè)文件復制為了192.168.1.1 。這就造成即便在這里文件里設置上正確的 DNS,再開(kāi)機后也會(huì )發(fā)現這個(gè)文件里已經(jīng)是192.168.1.1 了。這是因為 eth0,是開(kāi)機自啟動(dòng)的。
    我們在/etc 目錄下新建一個(gè)文件 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
    然后在新建一個(gè)腳本文件 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 關(guān)掉,第二步將我們的 DNS 文件覆蓋到 resolv.conf 上,第三步運行。然后重新開(kāi)機,執行 ppp0 腳本,命令如下:
    /etc/ppp0
    腳本執行成功后,重新使用 ping 命令,結果如圖 56.3.2.6 所示:

    圖片顯示可以正常 ping 通百度的 IP 地址。至此 EC20 4G 模塊就可以正常使用了。

  • 關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
    電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
    返回頂部
    午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页