英创Linux嵌入式工控主板支持4G网卡

 2015-6-8          [nemail]    
[lablebox]

  随着数据通讯业务的日益增加,对数据传输效率的要求也越来越高,目前普遍使用的有第二代移动通信技术(2G)最高传输速率为115kbit/s,第三代移动通讯技术(3G)可提供5.76Mbits/s的数据上行和高达21.6Mbit/s的数据下行速度,英创公司对2G和3G的支持已经有了成熟的方案,2G可以使用ETA301套件通过串口控制,3G可以使用ETA303转接模块将3G模块的MiniPCIe接口转换成USB接口与板卡连接进行拨号等操作。现在第四代移动通讯技术(4G)也逐渐的发展起来,4G从数据传输的速度或者通信的灵活度上讲,都有着不可比拟的优越性,理论上最大速度可达100Mbit/s,如果对网络性能有较高的要求时,4G将是不错的选择。

 

  英创公司已经完成了对中兴的4G模块ME3760的评估,硬件和驱动都已经测试通过。硬件部分和3G模块相同,使用ETA303转接模块将4G模块的MiniPCIe接口转换成USB接口与板卡连接,这样硬件的连接就已经完成。所以以前通过ETA303模块使用3G网络的客户如果想升级为4G,硬件上面不需要做任何改动,将3G模块换成4G模块即可。下面英创公司就使用ME3760模块为例,介绍如何在EM335x和EM928x系列的Linux工控主板上成功连接上4G网络。

 

 

1、驱动的移植

 

  4G模块和3G模块有较大的区别,文件系统中USB转串口的通用驱动不能够直接使用到4G模块上,还要加入USB转网络的驱动,根据中兴官方提供的资料,需要对驱动文件usbserial.c和cdc_ether.c做一些修改,具体的修改方法可以在模块的手册中查看。修改完成后内核中的驱动选项如下,我们还是使用模块的形式来编译:

 

  Device Drivers --->
    [*] Network device support --->
      USB Network Adapters --->
        Multi-purpose USB Networking Framework
        -M- CDC Ethernet support (smart devices such as cable modems)

 

  编译完成后,我们需要用到的模块有usbserial.ko、usb_wwan.ko、option.ko、cdc_encap.ko这四个ko文件。

 

2、驱动加载

 

  插入ETA303模块上电后,还是需要加载编译好的ko文件才能识别,usbserial.ko加载的时候带上vendorID和productID,ME3760模块的vendorID为0x19d2,productID为0x0199,所以加载命令为:

 

  insmod /lib/modules/3.12.10/usbserial.ko vendor=0x19d2 product=0x0199
  usbserial.ko、usb_wwan.ko、option.ko这三个模块有依赖的关系,所以需要按照usbserial.ko->usb_wwan.ko->option.ko这样的顺序加载:
  insmod /lib/modules/3.12.10/usbserial.ko
  insmod /lib/modules/3.12.10/usb_wwan.ko
  insmod /lib/modules/3.12.10/option.ko

 

  加载完成后,终端会打印一些信息,显示USB已经转换成串口ttyUSB0、ttyUSB1和网络eth1(如果是双网口则是转换成eth2),这样就说明驱动加载成功了。

 

 

  也可以使用命令ifconfig -a可以在终端查模块转换出来的网络设备。

 

3、连接网络

 

  4G模块和以往的2G、3G在网络连接方面也有一些区别,不再使用pppd拨号脚本了,而是使用AT指令直接获取IP和DNS设置到模块转换成的网络设备上(本次示例中的eth1)。接下来看一下详细的步骤:

 

  ①首先发送指令“AT+CFUN=1'设置4G模块为完全功能模式,这里大约需要等待40秒左右的时间,模块才能将功能启动起来。

 

  ②发送指令“AT+CGACT=1,1”获取IP地址和DNS地址,命令的应答格式为:

 

 

  这里需要将返回的一个IP地址和两个DNS地址记录下来以便等一下设置到4G模块中。

 

  ③发送指令“AT+ZGACT=1,1” 用于连接RNDIS链路。

 

  ④使用命令ifconfig eth1 10.72.172.95将前面获取的IP地址设置到eth1中,然后使用命令ifconfig eth1 up将eth1启用,通过这几步操作模块就已经连上网络了。接下来需要设置一下默认网关,使用命令:route add default gw 10.72.172.95将默认网关修改为4G网卡。

 

 

 

  ⑤如果需要使用DNS的功能,那么需要将第二步中通过AT指令获取到的两个DNS设置到/etc/resolv.conf中:

 

 

  经过以上步骤,就能够通过4G模块访问外网了,测试如下:

 

 

  考虑到以上的步奏较为繁琐,为了方便用户操作,英创公司已经将以上的操作全部整合到例程test_4g中了,用户运行程序能够实现自动发送AT指令,记录下IP和DNS,并且将IP设置到4G网卡中,实现上网的功能,如需要相关代码,可以向英创相关工程师索取。

[lablebox]