szypf2011 发表于 2017-11-2 10:14:56

embedall--i.mx6ul开发板4G模块EC20-C集成与测试

本帖最后由 szypf2011 于 2017-11-2 10:14 编辑

i.MX 6系列应用处理器是目前NXP主推的一个功能和性能可扩展的多核平台,其中,基于高能效比的ARM Cortex-A7处理器的i.MX 6系列产品,因为具备较强的可扩展性、高性能和低功耗等特性,非常适合目前流行的物联网、车载信息处理、家庭能源管理系统、工控领域等应用。
说明:
不久前拿到了盈鹏飞基于ARM Cortex-A7处理器的NXP i.MX 6UL系列处理器的工控板EVB-P6UL,板子适配了高速4G LTE模块!第一眼看到EVB-P6UL,会让人觉得外设资源非常的丰富,到底还是有别于简单的微控制器板,EVB-P6UL板卡采用了核心模块CoM-P6UL以及底板的设计,通过双列直插式排针接口连接,可靠性要比很多SODIMM接口稳定,同时也便于工程师日后的扩展或者直接将核心板移植到现有的项目中去,非常方便!
开发板:

这次使用的模块是移远EC20-C!


EC20-C的驱动使用模块官方提供GobiNet,而非USB CDC子类协议。使用GobiNet驱动与APN工具联网,有别于CDC EMC,方法在下文中介绍。
驱动信息:
EC20模块的端口映射关系如表下图所示:

其中,/dev/ttyUSB0~3为USB串口,第四个接口用于网络连接。
        在Linu系统中使用 usb-devices 指令查看模块的详细信息,如图3-20所示:

说明:从图中并未看到CDC相关的驱动端口,使用模块配套的驱动程序。
驱动集成:
EC20驱动集成,首先添加USB串口驱动,然后解除USB串口驱动对NDIS接口的绑定,最后将驱动程序添加到内核源码树中。
添加串口驱动
        若想Linux支持USB串口,需在option.c文件的ID列表中添加设备ID。过程如下:
步骤1在内核源码的 imx6ul/drivers/usb/serial/option.c文件的option_ids列表中添加EC20的ID。如图3-21、3-22红色矩形框标注所示:

代码清单如下:
        #define QUECTEL_VENDOR_ID                        0x2c7c
        #define QUECTEL_PRODUCT_EC20                  0x0125

代码清单如下:
        { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC20) },
解绑NDIS接口
        步骤1在内核源码的imx6ul/drivers/usb/serial/option.c文件的option_probe结构体添加以下语句。如图3-23所示;

代码清单如下:
         if (dev_desc->idVendor == cpu_to_le16(0x2c7c) &&
            dev_desc->idProduct == cpu_to_le16(0x0125) &&
            iface_desc->bInterfaceNumber == 0x04)
                return -ENODEV;
添加驱动程序
        Quectel提供了EC20的源码与APN工具。如图3-24所示:

步骤1、把GobiNet驱动源码保存到imx6ul/ drivers/net/usb目录。即,图3-20 中“Quectel_Linux_GobiNet_SR01A02V15.zip”文件中“src”目录下的*.c与*.h文件。
host$ cp ../Quectel_Linux_GobiNet_SR01A02V15/src/*.cdrivers/net/usb/
host$ cp ../Quectel_Linux_GobiNet_SR01A02V15/src/*.hdrivers/net/usb/

步骤2、添加内核配置菜单,将“config USB_GOBI_NET”到imx6ul/drivers/net/usb/Kconfig中。如图3-25红色矩形框标注所示:

代码清单如下:

config USB_GOBI_NET
      tristate "Gobi USB Net driver for Quectel module"
      help
      Support Quectel module.
      
      A modem manager with support for GobiNet is recommended.
      To compile this driver as a module, choose M here: the module will be called GobiNet.
步骤3、修改imx6ul/driver/net/usb/Makefile,Makefile文件的末尾添加图3-26红色矩形框标注的内容。

代码清单如下:
obj-y += GobiNet.o
GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o
配置内核与编译:
在宿主机的Linux内核源码根目录执行以下指令,配置内核。添加GobiNet驱动:
host$ make ARCH=arm menuconfig
Kernel Configuration 界面,依次选择:
        Device Drivers--->
           [*] Network device support--->
                  USB Network Adapters--->
                        <*> Gobi USB Net driver for Quectel module

在Linux内核源码目录执行make,编译内核:
host$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
移植APN工具:
解压Quectel_Linux_ConnectManager_SR01A01V21.zip,并交叉编译。
host$ unzip -x Quectel_Linux_ConnectManager_SR01A01V21.zip
host$ make CROSS_COMPILE=arm-linux-gnueabihf-                //APN工具源码目录编译
        编译完成后,生成APN工具,名为quectel-CM。如图3-28所示;


EC20-C联网测试:
在未上电前安装SIM卡、模块,模块连接天线。
        将3.2.3节编译的内核,下载到EVB-P6UL。驱动若正确加载,显示图3-29所示的信息:

从上图可以看出,网络设备为eth1,在/dev目录分别穿件了USB串口ttyUSB0~3 ,以及qcmqi1设备。以上信息说明驱动已经正确加载。
        将APN工具下载到评估,先查看该是否有执行权限,再拨号。成功拨号后会获取IP,如图3-30所示:
target$ ./quectel-CM &

说明:quectel-CM 拨号工具需要udhcpc 指令支持,请确保文件系统中有该指令。驱动加载成功后,在/dev目录生成 qcqmi1设备,网络设备名为eth1。“PS:Attached,DataCap:LTE”表示链接至4G网络。
        查看获取的IP地址情况。如图3-31所示:
target$ ifconfig

指定网络设备号,ping外部网络,如图3-32所示则表示EC20-C工作正常。


页: [1]
查看完整版本: embedall--i.mx6ul开发板4G模块EC20-C集成与测试