zoukankan      html  css  js  c++  java
  • Yocto开发笔记之《驱动调试-华为3G模块》(QQ交流群:519230208)

    QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样

    ========================================================

    参考:
    http://blog.csdn.net/yel617/article/details/5602934 http
    ://wenku.baidu.com/link?url=v96wCcrz8oYObkMTiPa55OyWxg35MhHF4L7voiDhKhtNPCB3uJhvNshz9UVUgpo4BTWmJE_4AhcAoW5oVOmtxr_NHYxb8ev0VKCpGwCSq1m http://blog.csdn.net/suntao222/article/details/8930744
    http://wandering.blog.51cto.com/467932/354562
    http://blog.chinaunix.net/uid-9525959-id-3998519.html

    一 上网模块需要内核编译配置  《Guide to Kernel Driver Integration ......

      修改源文件,修改内核配置项等,详细参考3G模块手册。

    二 交叉编译一些工具(参考 《Yocto Project Application Developer's Guide》):

    将以下内容添加到根目录的Makefile文件中:

    CC=arm-poky-linux-gnueabi-gcc -m32 -march=i586 --sysroot=/opt/poky/1.8/sysroots/x86_64-pokysdk-linux
    LD=arm-poky-linux-gnueabi-ld --sysroot=/opt/poky/1.8/sysroots/x86_64-pokysdk-linux
    CFLAGS=-O2 -pipe -g -feliminate-unused-debug-types
    CXXFLAGS=-O2 -pipe -g -feliminate-unused-debug-types
    
    change to :
    
    CC=arm-poky-linux-gnueabi-gcc --sysroot=/home/summer/test-yocto/qemuarm
    LD=arm-poky-linux-gnueabi-ld --sysroot=/home/summer/test-yocto/qemuarm
    CFLAGS=-O2 -pipe -g -feliminate-unused-debug-types
    CXXFLAGS=-O2 -pipe -g -feliminate-unused-debug-types
    
    # ./configure
    
    # make

    PPP

    1. 下载代码:https://ppp.samba.org/
    2. 编译代码:  http://blog.csdn.net/lanyou1900/article/details/40185259
    3. 编译成功后将编译生成的chat,pppd,pppdump等命令拷贝到板子文件系统的/usr/sbin目录下边去

    USB(我的环境里以下功能都包含了,以下仅用来参考)

    libusb-1.0.9 (用于编译usb-modeswitch-2.0.1)
    http://sourceforge.net/projects/libusb/postdownload?source=dlp
    
    usb-modeswitch-2.0.1 (用于切换网卡的模式)
    http://www.draisberghof.de/usb_modeswitch/#download
    
    usb-modeswitch-data-20130807 (用于切换时指定切换的型号)
    http://www.draisberghof.de/usb_modeswitch/#download

    三 编写拨号脚本

    在板子文件系统/etc/ppp/peers目录下边创建三个文件如下:

    1. wcdma

    debug
    nodetach
    /dev/ttyUSB0
    115200
    usepeerdns
    noauth
    noipdefault
    novj
    novjccomp
    noccp
    defaultroute
    ipcp-accept-local
    ipcp-accept-remote
    connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-wcdma-connect'

    2. chat-wcdma-connect

    TIMEOUT 5
    ABORT 'NO CARRIER'
    ABORT 'ERROR'
    ABORT 'NODIALTONE'
    ABORT 'BUSY'
    ABORT 'NO ANSWER'
    ''  
    AT
    OK  
    ATZ
    OK 
    AT+CGDCONT=1,"IP","3GNET",,0,0
    OK-AT-OK ATDT*99#
    CONNECT dc

    3. chat-wcdma-disconnect

    ABORT"ERROR"
    ABORT "NODIALTONE"
    SAY"
    Sending break to the modem
    "
    '' "K"
    ''"+++ATH"
    SAY"
    Goodbay
    "

     

    四 添加DNS信息

    # vi /etc/resolv.conf       // 加入以下内容, 如果已经存在,替换成以下内容
      nameserver 202.99.160.68
      nameserver 202.99.166.4

    或者,替换成
    nameserver 1.2.4.8
    nameserver 210.2.4.8


    // TOBEDO : 重启开发板,dns信息被冲掉

    五 检测ppp0网络是否能够使用

    # Ping –I ppp0 www.baidu.com  // 能够ping通就表示3G卡移植驱动成功

    出现错误,域名不能ping通,ip可以

    root@imx6ulevk:~# ping www.baidu.com
    ping: bad address 'www.baidu.com'

    六 测试模块状态

    # lsusb   // 查看usb连接状态
    Bus 001 Device 005: ID 12d1:1c25 Huawei Technologies Co., Ltd. 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 

    # netstat -nr
    # dmesg
    
    cdc_ether 1-1:2.0 eth2: register 'cdc_ether' at usb-ci_hdrc.1-1, CDC Ethernet Device, 00:1e:10:1f:00:00
    usbcore: registered new interface driver option
    usbcore: registered new interface driver cdc_ether
    usbserial: USB Serial support registered for GSM modem (1-port)
    option 1-1:2.2: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
    option 1-1:2.3: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
    option 1-1:2.4: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
    usb 1-1: USB disconnect, device number 3
    cdc_ether 1-1:2.0 eth2: unregister 'cdc_ether' usb-ci_hdrc.1-1, CDC Ethernet Device
    option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
    option 1-1:2.2: device disconnected
    option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
    option 1-1:2.3: device disconnected
    option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
    option 1-1:2.4: device disconnected
    usb 1-1: new full-speed USB device number 4 using ci_hdrc
    usb 1-1: new high-speed USB device number 5 using ci_hdrc
    cdc_ether 1-1:2.0 eth2: register 'cdc_ether' at usb-ci_hdrc.1-1, CDC Ethernet Device, 00:1e:10:1f:00:00
    option 1-1:2.2: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
    option 1-1:2.3: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
    option 1-1:2.4: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
    # dmesg | grep -in ppp   // 查看ppp连接状态cat /dev/ttyUSB0 &
    # echo AT+CGMI > /dev/ttyUSB0   // 查询厂商相关信息
    # echo AT+CSQ > /dev/ttyUSB0  // 查询信号,顺带还可以让你知道SIM卡相关的是否正常
    # #netstat -nal   // 查看网络连接状态
    # ifconfig -a   

     Attention:

    USB线的选择直接影响到能否正常识别模块

    附录:

    一 插上USB 3G模块显示的log

    root@imx6ulevk:/mnt# usb 1-1: new high-speed USB device number 2 using ci_hdrc
    usb 1-1: new high-speed USB device number 3 using ci_hdrc
    cdc_ether 1-1:2.0 eth2: register 'cdc_ether' at usb-ci_hdrc.1-1, CDC Ethernet Device, 00:1e:10:1f:00:00
    usbcore: registered new interface driver option
    usbserial: USB Serial support registered for GSM modem (1-port)
    option 1-1:2.2: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
    option 1-1:2.3: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
    option 1-1:2.4: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2

    二 lsusb显示的log

    root@imx6ulevk:/mnt# lsusb
    Bus 001 Device 003: ID 12d1:1c25 Huawei Technologies Co., Ltd. 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    三 ls /dev/ppp显示的log

    root@imx6ulevk:/mnt# ls /dev/ppp
    /dev/pp

    四 手动拨号的错误log

    root@imx6ulevk:~# timeout set to 5 seconds
    abort on (NO CARRIER)
    abort on (ERROR)
    abort on (NODIALTONE)
    abort on (BUSY)
    abort on (NO ANSWER)
    send (^MAT^M)
    expect (OK)
    ^M
    OK
     -- got it
    
    send (^MATZ^M)
    expect (OK)
    ^M
    ^M
    OK
     -- got it
    
    send (^MAT+CGDCONT=1,"IP","3GNET",,0,0^M)
    expect (OK)
    ^M
    ^MAT+CGDCONT=1,"IP","3GNET",,0,0^M^M
    OK
     -- got it
    
    send (ATDT*99#^M)
    expect (CONNECT)
    ^M
    ATDT*99#^M^M
    CONNECT
     -- got it
    
    send (d)
    Script /usr/sbin/chat -s -v -f /etc/ppp/peers/chat-wcdma-connect finished (pid 902), status = 0x0
    Serial connection established.
    Couldn't set tty to PPP discipline: Invalid argument
    expect (ABORT"ERROR")
    ^C

     看起来像拨号成功的log

    root@imx6ulevk:~# pppd call wcdma &
    [1] 844
    root@imx6ulevk:~# timeout set to 5 seconds
    abort on (NO CARRIER)
    abort on (ERROR)
    abort on (NODIALTONE)
    abort on (BUSY)
    abort on (NO ANSWER)
    send (^MAT^M)
    expect (OK)
    ^MAT^M^M
    OK
     -- got it
    
    send (^MATZ^M)
    expect (OK)
    ^M
    ^MATZ^M^M
    OK
     -- got it
    
    send (^MAT+CGDCONT=1,"IP","3GNET",,0,0^M)
    expect (OK)
    ^M
    ^MAT+CGDCONT=1,"IP","3GNET",,0,0^M^M
    OK
     -- got it
    
    send (ATDT*99#^M)
    expect (CONNECT)
    ^M
    ATDT*99#^M^M
    CONNECT
     -- got it
    
    send (d)
    Script /usr/sbin/chat -s -v -f /etc/ppp/peers/chat-wcdma-connect finished (pid 845), status = 0x0
    Serial connection established.
    using channel 1
    Using interface ppp0
    Connect: ppp0 <--> /dev/ttyUSB0
    sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x38c54823> <pcomp> <accomp>]
    rcvd [LCP ConfReq id=0x1 <accomp> <pcomp> <asyncmap 0x0> <mru 1500> <magic 0x545> <auth chap MD5>]
    No auth is possible
    sent [LCP ConfRej id=0x1 <auth chap MD5>]
    rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x38c54823> <pcomp> <accomp>]
    rcvd [LCP ConfReq id=0x2 <accomp> <pcomp> <asyncmap 0x0> <mru 1500> <magic 0x545>]
    sent [LCP ConfAck id=0x2 <accomp> <pcomp> <asyncmap 0x0> <mru 1500> <magic 0x545>]
    sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
    rcvd [IPCP ConfReq id=0x1]
    sent [IPCP ConfNak id=0x1 <addr 0.0.0.0>]
    rcvd [IPCP ConfNak id=0x1 <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
    sent [IPCP ConfReq id=0x2 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
    rcvd [IPCP ConfReq id=0x2]
    sent [IPCP ConfAck id=0x2]
    rcvd [IPCP ConfNak id=0x2 <addr 10.74.89.144> <ms-dns1 120.80.80.80> <ms-dns2 221.5.88.88>]
    sent [IPCP ConfReq id=0x3 <addr 10.74.89.144> <ms-dns1 120.80.80.80> <ms-dns2 221.5.88.88>]
    rcvd [IPCP ConfAck id=0x3 <addr 10.74.89.144> <ms-dns1 120.80.80.80> <ms-dns2 221.5.88.88>]
    Could not determine remote IP address: defaulting to 10.64.64.64
    local  IP address 10.74.89.144
    remote IP address 10.64.64.64
    primary   DNS address 120.80.80.80
    secondary DNS address 221.5.88.88

    ifconfig -a

    ppp0      Link encap:Point-to-Point Protocol  
              inet addr:10.74.89.144  P-t-P:10.64.64.64  Mask:255.255.255.255
              UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
              RX packets:5 errors:0 dropped:0 overruns:0 frame:0
              TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:3 
              RX bytes:68 (68.0 B)  TX bytes:80 (80.0 B)

    netstat -nr

    root@imx6ulevk:~# netstat -nr
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 ppp0
    10.64.64.64     0.0.0.0         255.255.255.255 UH        0 0          0 ppp0

    error

    root@imx6ulevk:~# ping -I ppp0 www.baidu.com
    ping: bad address 'www.baidu.com'

    success

    root@imx6ulevk:~# ping 202.108.23.237
    PING 202.108.23.237 (202.108.23.237): 56 data bytes
    64 bytes from 202.108.23.237: seq=0 ttl=52 time=1515.208 ms
    64 bytes from 202.108.23.237: seq=2 ttl=52 time=75.742 ms
  • 相关阅读:
    《代码大全2》阅读笔记08Chapter 15 Using Conditionals
    《代码大全2》阅读笔记09Chapter 16 Controlling Loops
    《代码大全2》阅读笔记12 Chapter 19 General Control Issues
    《代码大全2》阅读笔记13 Chapter 22 Developer Testing
    [转帖]Dictionary, SortedDictionary, SortedList 横向评测
    《代码大全2》阅读笔记07Chapter 12 Fundamental Data Types
    《代码大全2》阅读笔记11 Chapter 24 Refactoring
    《代码大全2》阅读笔记14 Chapter 23 Debugging
    New Concept English 3 01 A Puma at large
    (ZT)委托和事件的区别
  • 原文地址:https://www.cnblogs.com/alanfang/p/5052006.html
Copyright © 2011-2022 走看看