热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux下EC204G模块驱动移植

之前有移植过ME909sMU609,主要工作就是把4G模块当做USB设备,挂载在linux上,驱动移植主要是能够让板子识别到模块,并产生SUB多个虚拟的节点,用于操作模块,拨号上网关

 

之前有移植过ME909s MU609,主要工作就是把4G模块当做USB设备,挂载在linux上,驱动移植主要是能够让板子识别到模块,并产生SUB多个虚拟的节点,用于操作模块,拨号上网

 

关于内核的配置,请参考:https://www.cnblogs.com/ChenChangXiong/p/10852177.html

 

内核配置:

Device Drivers --->

       [*] USB support --->

            <*> USB Serial Converter support --->

                   <*> USB driver for GSM and CDMA modems         //选上

Device Drivers --->

        [*] Network device support --->

                         // 将这里面所有的ppp 的支持多选上

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)

 匹配列表:

宏定义添加支持:

 

 //----add for EC20----add by chencx 20190513

 #define QUECTEL_VENDOR_ID 0x2C7C

#define QUECTEL_PRODUCT_EC20 0x0125

usbdevice列表添加:

在kernel目录下:

vim drivers/usb/serial/option.c

 

 

在: static const struct usb_device_id option_ids[] 中添加

{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC20)}, /* QUECTEL EC20 */

 最后:

在: static int option_probe 匹配函数中添加

if (dev_desc->idVendor ==cpu_to_le16(0x2c7c) &&
  dev_desc->idProduct ==cpu_to_le16(0x0125) &&
   iface_desc->bInterfaceNumber ==0x04)
   return -ENODEV;

接下来:make -j20

等待内核编译完成。

插入模块会生成usb0~usb3的usb节点,说明驱动已经移植成功。

 

 

比如ME909s  MU609模块。直接是用pppd拨号就可以上网,但是EC20我试了很久不行,非常郁闷,无奈之下,只用移远官方提供的usb驱动作为.ko加载进去,然后使用APN工具。

 

然而,关于Quectel_Linux_ConnectManager_SR01A01V21.zip 和 Quectel_Linux_GobiNet_SR01A02V13.zi的下载,也是比较费劲才找到,在此附上链接:
 

Quectel_Linux_GobiNet_SR01A02V13.zip下载:http://bbs.21ic.com/forum.php?mod=attachment&aid=MTA1NjgwNHxkYmMwMDdjNHwxNTU3NzE4NDk2fDB8MTcwMDMxNg%3D%3D

Quectel_Linux_ConnectManager_SR01A01V21.zip 下载: http://dev.t-firefly.com/thread-52743-1-1.html

 

 注意以下开发板的交叉编译器就行

 

编译得到GobiNet.ko

解压     Quectel_Linux_ConnectManager_SR01A01V21.zip,并交叉编译,只需要修改makefile适应自己的开发板即可

我是把解压后文件放到drivers/net/usb/ 中 新建一个文件夹来保存,在里面编译,

其实放在哪都行,当做模块加载,只需要编译makefile的时候指定kernel即可,就像平时编译模块一样。

修改makefile  直接作为模块加载进入

 编译后生成 GobiNet.ko  复制到开发板  insmod   

 

编译拨号工具:

解压:

     unzip -x Quectel_Linux_ConnectManager_SR01A01V21.zip

直接编译:

     make CROSS_COMPILE=arm-linux-gnueabihf-  

     

得到quectel-CM

接着就大功告成了

在开发板中,首先加载GobiNet.ko  然后后在运行quectel-CM

   insdmo   GobiNet.ko

   ./quectel-CM  &

    运行./quectel-CM  & 后会提示找到eth2 有的是eth1  接着可以ifconfig看一下ip  有了ip就可以直接pingl了。

 

注意是先加载模块 在执行 quectel-CM    就可以ifconfig查看到产生了ip,然后ping 8.8.8.8  我这里直接来65500包

 

算是比较完整的移植EC20的过程,记录一下

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


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
author-avatar
梦想不被束缚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有