海思3531添加移远EC20 4g模块

本文详细介绍了如何在Linux环境下,特别是海思3531平台上,集成GobiNet驱动以支持移远EC20 4G通信模块。首先,通过对比静态和动态加载驱动的优缺点,确定了内核集成驱动的方案。然后,逐步讲解了在内核中添加驱动源码、解除USB串口驱动对NDIS接口的绑定、将GobiNet添加到内核树中以及编译内核和驱动程序的步骤。过程中遇到的错误和解决方案也一并给出,强调了内核版本和驱动模块版本一致性的重要性。
摘要由CSDN通过智能技术生成

在linux下加载驱动有两种常用方法:静态加载和动态加载。

  • 静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用。静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新编译和下载内核,效率较低。若采用静态加载的驱动较多,会导致内核容量很大,浪费存储空间。
  • 动态加载利用了Linux的module特性,可以在系统启动后用insmod命令添加模块(.ko),在不需要的时候用rmmod命令卸载模块,采用这种动态加载的方式便于驱动程序的调试,同时可以针对产品的功能需求,进行内核的裁剪,将不需要的驱动去除,大大减小了内核的存储容量。

在台式机上,一般采用动态加载的方式;在嵌入式产品里,可以先采用动态加载的方式进行调试,调试成功后再编译进内核。

一开始在纠结是选择模块化添加驱动**.ko还是直接把驱动编译进内核,既然我已经会烧写内核了,那把驱动直接编译进内核也不像想象中那么困难,参照《UC20&EC20 Linux GobiNet User Guide》和网上一些资料,根据自己的理解,总结出海思3531添加移远EC20模块的详细过程。

UC20是3g通信模块,EC20是4g通信模块;

1.   介绍

根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备,VID和PID都是两个字节长,其中,供应商ID(VID)由供应商向USB执行论坛申请,每个供应商的VID是唯一的,PID由供应商自行决定(理论上来说,不同的产品、相同产品的不同型号、相同型号的不同设计的产品最好采用不同的PID,以便区别相同厂家的不同设备。)

VID和PID其实就相当于USB硬件的识别ID系统,也是通过他们来找到UC20/EC20设备的。

Product

PID

VID

UC20

0x9003

0x05c6

EC20

0x9215

0x05c6

2.   在Linux中集成GobiNet

为了在Linux中为Quectel模块使用NDIS接口(Network Driver InterfaceSpecification,即网络驱动接口规范),必须集成GobiNet驱动程序。在linux内核中增加程序需要完成以下三项工作:

1.将编写的源代码添加到Linux内核源代码的相应目录

2.在目录的Kconfig文件中增加新源代码对应项目的编译配置选项

3.在目录的Makefile文件中增加对新源代码的编译条目

2.1    在内核中添加驱动源码

  • 找到海思3531的内核源代码版本并解压它。
  • 将GobiNet驱动程序源代码(ec20/DriveRSourceCode/src下的.c和.h文件)放入($_KERNELROOT)/ drivers / net / usb目录中。($ _KERNELROOT)应该内核源代码的根目录。

2.2    解除USB串口驱动对NDIS接口的绑定

NDIS不是串口设备,因此要在串口驱动中去掉这个端口。在集成GobiNet驱动程序之前,先解除USB串口驱动对NDIS接口的绑定。

  • 打开源代码根目录中的文件:($_KERNELROOT)/drivers/usb/serial/option.c ,然后修改option_probe函数中的源代码。注意到指导书给的修改示例和源代码使用的变量名是不一样的,把变量名也修改成一样。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值