Simcom 5G模块调试记录

最近做一个项目需要用到5G模块,写个博客记录一下调试过程。调试尚未完成,先调到哪写到哪。使用的开发板是ADI公司的ADSP-SC589开发板,Linux内核版本是**经过ADI公司剪裁的4.0.0版本。**使用的内核版本不同操作会有差异,请大家多多留意。

1 修改源代码

1.1 添加VID和PID

查看文件 内核源码目录/include/linux/usb.h 中是否包含以下宏定义,如没有则添加:

#define USB_DEVICE_INTERFACE_CLASS(vend, prod, cl) \ 
	.match_flags = USB_DEVICE_ID_MATCH_DEVICE | \ 
	USB_DEVICE_ID_MATCH_INT_CLASS, \
	.idVendor = (vend), \ 
	.idProduct = (prod), \
	.bInterfaceClass = (cl)

如果内核版本大于3.2,小于4.4.131,则对文件 内核源码目录/drivers/usb/serial/option.c 做以下修改:

  1. 添加宏定义:
#define SIMCOM_VENDOR_ID		0x1e0e
  1. 添加结构体:
static const struct option_blacklist_info simcom_pid9001_blacklist = {
	.reserved = BIT(5) | BIT(6),
};
static const struct option_blacklist_info simcom_pid9011_blacklist = {
	.reserved = BIT(7),
};
  1. 在结构体static const struct usb_device_id option_ids[]中添加以下内容:
{USB_DEVICE(SIMCOM_VENDOR_ID, 0x9001),
 .driver_info = (kernel_ulong_t)&simcom_pid9001_blacklist },
{USB_DEVICE_INTERFACE_CLASS(SIMCOM_VENDOR_ID, 0x9011, 0xff), /* Simcom SIM8200 RNDIS mode */
 .driver_info = (kernel_ulong_t)&simcom_pid9011_blacklist },
  1. 如果文件中包含以下内容,将其删除:
{ USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E),
  .driver_info = (kernel_ulong_t)&simcom_sim7100e_blacklist },
{ USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff),

1.2 修改QMI WWAN驱动

首先查看 内核源码目录/drivers/net/usb/qmi_wwan.c 文件中是否含有以下内容,如果包含则删除:

{QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}
{QMI_FIXED_INTF(0x1e0e, 0x9001, 5)},

将simcom官方提供的驱动文件qmi_wwan_simcom.c拷贝进目录 **内核源码目录/drivers/net/usb/**下,并修改该目录下的Makefile如下:

obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan_simcom.o
obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan.o

2 编译驱动模块

进入Linux内核的menuconfig配置界面:
在这里插入图片描述

进入Device Drivers —> USB support —> USB Serial Converter support —> USB driver for GSM and CDMA modems,将其配置为编译成模块。

在这里插入图片描述
进入Device Drivers —> Network device support —> USB Network Adapters —> QMI WWAN driver for Qualcomm MSM based 3G and LTE modems,将其配置为编译成模块。

在这里插入图片描述
配置完成后,在内核源码目录下执行make指令,重新编译内核。

3 加载驱动模块

3.1 安装depmod

在内核中加载驱动模块需要使用depmod指令来确定模块依赖关系,但很多文件系统都不支持depmod,其中也包括我使用的buildroot。本节介绍如何让使用buildroot构建的文件系统支持depmod指令。

  1. 进入 内核源码目录output/build/busybox-x.xx.x ,执行make menuconfig ,进入Linux Module Utilities 菜单。
    在这里插入图片描述
  2. 选中insmod,rmmod,lsmod,modprobe,depmod,保存退出,然后将当前目录下的.config文件覆盖掉 内核源码目录package/busybox/busybox.config 文件,之后在buildroot根目录下执行make指令重新编译。新生成的文件系统即支持depmod指令。

3.2 加载模块

使用ssh命令将编译好的option.ko、qmi_wwan.ko、qmi_wwan_simcom.ko文件拷贝到开发板。其中option.ko拷贝到开发板下/lib/modules/4.0.0-ADI-1.3.1/kernel/drivers/usb/serial目录,qmi_wwan.ko和qmi_wwan_simcom.ko拷贝到开发板下/lib/modules/4.0.0-ADI-1.3.1/kernel/drivers/net/usb目录。

执行以下命令:

depmod
modprobe option.ko
modprobe qmi_wwan.ko
modprobe qmi_wwan_simcom.ko

之后使用lsmod即可查看模块是否被正确加载。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值