zoukankan      html  css  js  c++  java
  • 嵌入式开发 迅为4418开发板Qt移植移动4G模块第一部分

    本文转自迅为论坛:http://topeetboard.com 了解更多:https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-7744162139.10.QixXQ2&id=525502772842
     
    平台:iTOP-4418开发板
     
    1.首先要配置内核,这个一步和Android系统移植3G或者4G模块是一样的。一般模块的厂家会提供移植文档,按照文档配置内核的ppp协议,USB转串,wcdma等,添加PID VID即可。这一步严格按照模块内核修改就行。
    这里主要分析qt文件系统的修改,对内核不做过多的分析。
    配置好的内核在开机后可以在dev下找到ttyUSB0-3的设备节点。
     
    2.准备工作;下载ppp-2.4.4.tar.gz,这个我会上传。
     
    ①.解压:tar -vxf ppp-2.4.4.tar.gz
     
    ②.运行configure,生成Makefile./configure
     
    ③.编译输入命令:make CC=arm-none-linux-gnueabi-gcc-4.4.1
    这里说明一下,CC=arm-none-linux-gnueabi-gcc-4.4.1是指明编译器,这里可以输入arm然后双按tab键找自己的交叉编译器。
     
    经过以上三步就会分别在chatpppdpppdumppppstats中生成四个可执行文件chatpppdpppdumppppstats ,用于拨号。
     
    3.以下操作是在qt文件系统,这里使用迅为提供的qt文件系统:rootfs.tgz
     
    ①.解压rootfs.tgztar -vxf rootfs.tgz
     
    ②.在etc中新建文件夹ppp
     
    ③.把上面生成的四个可执行文件chatpppdpppdumppppstats拷贝到ppp里面。
     
    4.写配置文件
    ①.在etc/ppp下文件pap-secretsvim pap-secrets
     
    ②.输入
    # Secrets for authentication using PAP
    # client        server  secret                  IP addresses
    card   *       card   *
     
    4G信号在通信时候有一个密码的比对,密码对了就可以通信了。上面显示用户是card 密码是card
     
    ③.在etc/ppp下新建文件夹peersmkdir peers
    peers里面新建文件wcdmavim 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,这句话要根据自己的情况而定,4G模块手册上应该会有些那个是用于AT指令,ppp拨号的。看自己的手册决定是不是ttyUSB2
    另外:
    user "card"
    password "card"
    这就对应了上面的用户和密码。
     
    ④.同样在peers中新建文件wcdma-chat-connectvim wcdma-chat-connect 输入:
    ABORT "BUSY"
    ABORT "NO CARRIER"
    ABORT "NO DIALTONE"
    ABORT "ERROR"
    ABORT "NO ANSWER"
    TIMEOUT 120
    "" AT
    OK ATZ
    OK AT+CGDCONT=1,"IP","3gnet",,0,0
    OK-AT-OK ATDT*99#
    CONNECT dc
     
    在这里 OK AT+CGDCONT=1,"IP","3gnet",,0,0
           OK-AT-OK ATDT*99#
    这两句话会根据移动联通或者是电信而变化,我这里用的是移动4G
     
    ⑤.同样在peers中新建wcdma-chat-disconnectvim wcdma-chat-disconnect 输入:
    ABORT "ERROR"
     
    ABORT "NO DIALTONE"
     
    SAY "INSending break to the modem "
     
    ""k"
     
    ""+++ATH"
     
    SAY " Good bye "
    致此就完成了大半部分可以先烧录进去试试。
    测试方法:
    开机后先输入:ifconfig eth0 down eth0关掉,因为他会和模块有冲突。
    然后在/etc/ppp下输入指令:
    pppd call wcdma&
    使其一直在后台运行,如果移植成功将会打印一些信息,下面是截取的最后的部分:
     
    CHAP authentication succeeded
    CHAP authentication succeeded
    sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
    rcvd [IPCP ConfReq id=0x0]
    sent [IPCP ConfNak id=0x0 <addr 0.0.0.0>]
    rcvd [IPCP ConfNak id=0x1 <addr 10.211.219.99> <ms-dns1 221.130.33.60> <ms-dns3 221.130.33.52>]
    sent [IPCP ConfReq id=0x2 <addr 10.211.219.99> <ms-dns1 221.130.33.60> <ms-dns3 221.130.33.52>]
    rcvd [IPCP ConfReq id=0x1]
    sent [IPCP ConfAck id=0x1]
    rcvd [IPCP ConfAck id=0x2 <addr 10.211.219.99> <ms-dns1 221.130.33.60> <ms-dns3 221.130.33.52>]
    Could not determine remote IP address: defaulting to 10.64.64.64
    local  IP address 10.211.219.99
    remote IP address 10.64.64.64
    primary   DNS address 221.130.33.60
    secondary DNS address 221.130.33.52
     
    在这里可以是一下ping  ip地址,这里注意要是可以平通的ip地址,可先在电脑上试试能否ping通,然后在开发板上ping 。到这里输入ifconfig会有ppp0出现。
     
    但是到这里,即使ping通了ip,域名应该也是ping不通的。因为有字数限制所有剩下的分另一个贴子。

     

     
  • 相关阅读:
    Javascript 中的浮点数精度丢失问题
    react中使用字符串中生成HTML
    前端-HTML规范
    js 数组(Array)的使用
    ES6变量声明解析
    cookies sessionlStorage和localStroage的区别
    面向对象
    迭代器、生成器、装饰器
    内置函数和文件读取
    函数
  • 原文地址:https://www.cnblogs.com/wenyihu/p/6513522.html
Copyright © 2011-2022 走看看