新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 在ARM-linux上實現4G模塊PPP撥號上網

        在ARM-linux上實現4G模塊PPP撥號上網

        作者: 時間:2016-11-20 來源:網絡 收藏
        在ARM平臺上實現4G模塊PPP撥號上網,參考網上的資料和自己的理解,從一無所知到開發完成花了一周多。最后看到ARM板ping通www.baidu.com時甚是高興,現將此過程整理如下。當然,除此之外要做的工作還有很多。
        4G模塊使用的SIMTECH 的SIM7100C,SIM7100C帶有UART和USB接口,在考慮速度上我們使用USB接口和ARM進行通信。所以向linux內核添加3G模塊的驅動(USB轉串口驅動)和PPP協議的支持,然后編譯內核并下載到開發板。
        1. 編譯內核
        ◇ 大容量存儲驅動
        > 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. 交叉編譯libusb
        下載usblib庫和libusb-compat
        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(PKG_CONFIG_PATH設置)
        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

        編譯libusb-compat:
        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

        將生成的libusb-1.0.20和libusb-compat-0.1.5下的庫文件復制到ARM板上的linux的/lib下面即可。

        3. 交叉編譯4G模塊驅動
        交叉編譯GobiSerial.c(ARCH=arm CC=arm-none-linux-gnueabi-gcc),得到GobiSerial.ko。復制到ARM板安裝驅動
        #insmod GobiSerial.ko

        4. 查看驅動運行狀況
        插上4G模塊,虛擬出6個ttyUSB,它們分別是:
        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

        插上U盤,提示設備運行:
        [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_7880d3350102wb3e.html

        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

        6. 撥號
        root@am335x-evm: pppd call gprsdial

        6. 測試
        撥號之后進行測試,發現可以ping通ip但是無法ping通域名。這需要設置/etc/resolv.conf來添加DNS解析服務器的地址
        文件/etc/resolv.conf配置DNS客戶,它包含了主機的域名搜索順序和DNS服務器的地址,每一行應包含一個關鍵字和一個或多個的由空格隔開的參數。下面是一個例子文件:
        domain test.com
        search www.test.com test.com
        nameserver 202.96.128.86
        nameserver 202.96.128.166
        nameserver #定義DNS服務器的IP地址
        domain #定義本地域名
        search #定義域名的搜索列表
        sortlist #對返回的域名進行排序
        主要是nameserver關鍵字,如果沒指定nameserver就找不到DNS服務器,其它關鍵字是可選的。
        我這里只設置了兩個DNS,如下:
        ameserver 114.114.114.114
        nameserver 8.8.8.8

        參考文檔:
        How to use the SIM7100 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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 白河县| 吐鲁番市| 英超| 扎鲁特旗| 收藏| 贵阳市| 镇平县| 遂昌县| 增城市| 大厂| 菏泽市| 申扎县| 台湾省| 凤城市| 盐城市| 禹州市| 潼南县| 施甸县| 康马县| 历史| 历史| 临安市| 淮滨县| 涟源市| 西昌市| 三台县| 京山县| 中牟县| 正阳县| 太康县| 兴城市| 河西区| 家居| 澄迈县| 竹山县| 桃园县| 龙海市| 博罗县| 思茅市| 准格尔旗| 金湖县|