您的位置:首页 > 其它

4G上网模块ME3760移植到arm开发板上(6410)

2016-11-22 22:53 399 查看
    花了一天时间终于让6410开发板ping通www.baidu.com了,下面分享给大家。希望大家少走弯路~

    我不知道是不是因为ME3760 V2这个4G模块太偏了,网上没有一个成熟详细的移植教程。官方文档一大堆,但是看得云里雾里的。我将我的移植尽可能详细的记录下来,不一定适用你的环境哈~

    一、驱动移植:

    1、ECM驱动。ME3760带有两种接口,一种是NDIS接口,一种是ECM接口。首选当然是ECM接口,驱动移植较为简单。可以再串口输入以下模块使模块切换到ECM接口:

echo "AT+ZNCARD=1" > /dev/ttyUSB0


    下面的步骤可以按照官方手册:

1.1. 增加具体设备驱动

文件: /linux-2.6.18/drivers/usb/serial/option.c

    ( 注: 说明:在比较早的 linux 版本中,对应的驱动文件为: usb-serial.c 文件,路径可能在..\drivers\usb\serial\usb-serial.c)

    找到如下行:

    static struct usb_device_id option_ids[] = {

    在其下添加内容:

    { USB_DEVICE(0x19d2, 0x0199) },

    如图 1 所示:

    
1.2.Usb 串口驱动过滤 ECM 接口

由于 usb 串口跟 ECM 都属于非标准 cdc 设备,需要防止 ECM 口被 usb 串口驱动加载导致 ECM 驱动无法顺利完成加载。
文件: /linux-2.6.18/drivers/usb/serial/usb-serial.c
找到 usb_serial_probe 函数,在函数中找到如下行:

type = search_serial_device(interface);


在其前面添加如下内容:

if ((le16_to_cpu(dev->descriptor.idVendor) == 0x19d2) &&

(le16_to_cpu(dev->descriptor.idProduct) == 0x0199)) {

if ((1 == interface->cur_altsetting->desc.bInterfaceNumber)||

( 0 == interface->cur_altsetting->desc.bInterfaceNumber)) {

return -ENODEV;

}

}


如图 2 所示:

 1.3.编译内核

普通的 3G 数据卡( modem)采用 usb 接口,对上层的功能接口是串口,在 linux 系统中通常使用
usb 转串口的驱动。
驱动添加需要配置系统 linux 系统内核,配置方法如下:
 cd kernel
 make menuconfig
 device drivers--->usb support--->usb serial converter support
选中如下组件:
USB driver for GSM and CDMA modems
选中后保存配置,重新编译内核即可。

至此,插入你的4G模块,出现如下打印:
 说明ECM驱动移植成功。我第一次失败了,后来换了光盘另外一个内核源码重复上诉步骤,烧如开发板就OK了,估计是先前的内核配置有点问题。

    二、 模块编译。

    在这一步,我们要编译出三个重要的模块:usbnet.ko  cdc_encap.ko  cdc_ether.ko

    2.1、usbnet.ko

    文件: /linux-2.6.24/drivers/net/usb/cdc_ether.c 本文件改动内容较多,不再一一列举,请直接使用我们提供的文件
cdc_ether.c 替换掉原来的 dc_ether.c。(如果您的内核源代码本来就修改过这个文件,则不宜直接覆盖,请注意保留原来的修改)(如果你没有,在我的资源中可以下载到。)

    配置内核:

1、进入内核目录,执行 make menuconfig
2. 依次进入 device drivers--->usb support--->usb serial converter support 将如下组件作为模
块进行编译:
USB driver for GSM and CDMA modems
3. 依次进入 device drivers--->Network device support--->usb Network Adapters 将如下组件
作为模块进行编译:
Mutil-purpose USB Networking Framework

     2.2、cdc_encap.ko  cdc_ether.ko

    将文件 cdc_encap.c 和 cdc_encap.h 拷贝到/linux-2.6.24/drivers/net/usb/目录下。

    文件: /linux-2.6.24/drivers/net/usb/Makefile
    找到如下行:

    obj-$(CONFIG_USB_USBNET) += usbnet.o
    在其下添加内容:
    obj-m += cdc_encap.o
    如图 3 所示:

    

    2.3.在内核源码根模块输入make moudles,便可在/linux-2.6.24/drivers/net/usb/目录下找到usbnet.ko  cdc_encap.ko  cdc_ether.ko三个模块,通过第100中方法将它拷贝到目标板,这里我推荐用串口rz最简单。

    2.4.加载三个模块:

    
     注意顺序!!!
    通过ifconfig -a可以查看当前网卡。

    

     至此,驱动成功移植。

    三、拨号。

    ME3760 V2好像不支持ppp拨号,可以直接用AT直接集。在官方的资料里并没有找到拨号脚本。查阅一番资料,网上有用minicom的,那个交叉编译太麻烦了,后来发现一个busybox自带的很好用的串口软件,microcom,在我的开发板上已经有这个软件,直接输入命令:

microcom -t 20000 -s 115200 /dev/ttyUSB0


   -t表示20秒内没有操作就退出串口,-s比特率,最后为AT指令对应的串口。这个不确定的话可以一个个试,输入AT,返回OK说明当前串口正确。

     (不知道为啥我的终端不能显示我输入的字符,但是可以正常返回。)

    一次输入一下AT指令。

AT+CFUN=0

AT+CGDCONT=1,"IP"

AT+CFUN=1

AT+CREG=1

AT+CEREG=1

AT+CGACT=1,1

AT+ZGACT=1,1


    如果一切顺利,如下图所示:

[root@FriendlyARM /]# microcom -t 20000 -s 115200 /dev/ttyUSB0


+CGEV: ME PDN DEACT 1


+CREG: 0


+CGREG: 0


+CEREG: 0


^MODE: 0


OK


+ZICCID: 898600C2191607060668


OK


+ZPBIC: 1,0


OK


+CREG: 2


+CGREG: 2


+CEREG: 2


+CGEV: ME PDN ACT 1


+CREG: 1


^MODE: 17,9


+CREG: 1


+CEREG: 1


OK


+ZPBIC: 1,1


OK


OK


+ZGIPDNS: 1,1,"IP","10.15.133.223","0.0.0.0","221.179.38.7","120.196.165.7"


OK


    得到的10.15.133.223为IP地址,221.179.38.7为首选DNS, 120.196.165.7为备选DNS.

    四、开启网卡。

    拨号成功后,还不能正确上网,输入ifconfig -a发现usb0这个网卡是没有IP地址的。网上一般用udhcpc自动分配个IP地址,我这里介绍手动分配我们通过AT指令得到的IP地址。

    4.1、打开usb0网卡:

ifconfig usb0 up


    4.2、设置上面得到的IP地址:

ifconfig usb0 10.15.133.223


    4.3、添加路由:默认路由为本身的IP地址。

route add  default gw 10.15.133.223


    至此,已经可以ping通IP地址了,但是ping不通网址,因为没有DNS。

    

    4.4、增加DNS。

vi /etc/resolv.conf


    输入获取到的DNS地址:

nameserver 120.196.165.7


    保存退出,即可ping通网址。

     大功告成。

                     
                   
                   
                   
                   
                   
                   
                  QQ:501930128

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息