• linux4.1.4上移植ME909s-821,MU609 4G模块驱动


    linux上4G模块是比较常用的,刚开始移植4G模块驱动的时候,废了比较多心思和时间,但也收获了很多,经过这个过程更加认识到4G模块在linux上的工作。

    网上资料也比较多,但是比较杂,经过一番折腾,所以想写一个比较全面的关于linux上移植4G模块驱动的方法

    关于4G模块常见的品牌与型号:

      
    品牌
      
    型号
    市场价格
    芯片组
    状态
    HUAWEI
    ME909s-821
    210-260
    海思芯片,只有五模
    在售
    HUAWEI
    ME909s-521
    400左右,没用过
    高通芯片
    在售
    中兴
    ME3760
    260左右
    中芯微
    停产
    中兴
    MW3630
    210左右
    高通9x07
    在售
    移远
    EC20
    240-290
    高通9x15
    在售
    移远
    EC20 V2.0
    190-240
    高通9x07
    在售
    龙尚
    8300系列
    260左右
    高通9x15
    停产
    龙尚
    U9300系列
    200左右的区间
    高通9x07
    在售
    等等,我在这里以移植ME909s-821和MU609模块为例;
     
     一、识别pid  vid

      肯定要知道模块的产品id和供应商id,即:idVendor idProduct ,一般来说。同一个厂商的模块vid是一样的,不同的是pid。

    在开发板上插入4G模块,正常的板子,只要能识别usb驱动的,都能够识别到模块的id。

    板子控制终端输入:lsusb

    如下:

    就会识别到产品的id ,或者插入模块的时候,板子输出的一堆信息,里面也会可以找到pid和vid

    二、配置内核与编译

    在宿主机的Linux内核源码根目录执行以下指令,配置内核。添加USB串口驱动的配置选项:
    host$ makeARCH=arm menuconfig
           依次选择:
           Device Drivers  --->
                   USB support  --->
                         <*>   USB Serial Converter support  --->
                                <*>USB driver for GSM and CDMA modems

     

    配置CDC驱动,依次选择

           Device Drivers  --->
                   Network device support  --->
                         USB Network Adapters  --->
                                <*> Multi-purpose USB NetworkingFramework
                                       <*>  CDC Ethernet support (smart devices such ascable modems) (NEW)
                                       -*-   CDC NCM support
                                       <*>   Huawei NCM embedded AT channel support
                                       <*>   Simple USB Network Links (CDC Ethernetsubset) (NEW)

     还有一个重要的设置,就是关于ppp驱动的  有的网上护送需要安装ppp驱动,但是实际上我的内核已经支持ppp驱动,而且很多内核也会支持,所以只要在make menuconfgi里面配置好,就不需要再另外安装ppp驱动,关于另外安装的p'p'p驱动 可以参考:https://www.linuxidc.com/Linux/2016-03/129581.htm

     在这里,我只需要配置内核支持ppp就可以 

    make menuconfig Device Drivers --->

               [*] Network device support --->

    // 将这里面所有的ppp 相关的支持都选上

    到这里,关于内核的配置,已经配置完成,但是还不能make,还需要再usb匹配函数中修改添加匹配。

    三、usb匹配列表添加pid  vid

    如果这路不添加,依然无法识别,以为4G模块作为usb驱动添加,u's'b匹配的时候需要添加匹配列表;

    再kernel目录:

    vim drivers/usb/serial/option.c

    关于:ME909s-821

    在  static const struct usb_device_id option_ids[] 

     中添加:

     到这里,make 之后,开发板就能够支持ME909s-821模块了。

    同理,关于MU609,方法一样:

    首先添加vid  我这里直接修改 厂商的vid  其实就是宏定义而已,可以不定义,下面你直接添加给值传入就行。

    关于为什么还需要设置:

    ME909s-821的端口的赋值,由厂商提供,请《HUAWEIModule USB Interface Descriptor Guide》中的3.7.3节,“MODEM Serial Port ”、“DIAG Serial Port ”、“PCUI Serial Port ”、“Ctrl Serial Port ”、“Serial B Port ”各表格的值

    请参考:https://blog.csdn.net/yuzhou_zang/article/details/78286875

    这里说明了 为什么,对于其他的模块移植很有参考意义。

    到这里 ,就可以直接make ,等待编译内核完成。

    四、识别usb设备

     经过以上的步骤,已经能够正常识别usb ,这里来是第一步也是关键。以为识别出usbs才能继续下面的

     插入模块,会虚拟出0~4五个usb

    查看/dev下面是否生成设备节点:

    各端口功能描述如下:

    USB0: MODEM:MODEM串口,用于拨号上网
    USB1: DIAG:普通串口,用于调试和收集日志信息
    USB2:PCUI:用于应用程序进行AT指令通信
    USB3:Ctrl:用于eCall业务
    USB4:Serial B:用于配合Diag端口用于模块log收集
    使用NDIS协议,在评估板给MODEM端口发送AT指令连接4G网络:
     
    到这里,模块的已经支持完成,这里只是举例两个模块me909s-821和mu609,其他的其实也是一样的。
  • 相关阅读:
    阅读笔记十四
    惨淡的蓝桥杯国赛经历
    阅读笔记十三
    阅读笔记十二
    阅读笔记十一
    阅读笔记十
    阅读笔记九
    阅读笔记八
    阅读笔记七
    阅读笔记六
  • 原文地址:https://www.cnblogs.com/ChenChangXiong/p/10852177.html
Copyright © 2020-2023  润新知