4G/5G模组----概念+驱动+调试
前言:USB 驱动程序,包括 USB 串口驱动(如 option 和 ACM)以及 USB 网络驱动(如 GobiNet、QMI_WWAN、MBIM、NCM、RNDIS 和 ECM),各自有不同的功能和用途。以下是对这些驱动程序的简要介绍:
基础概念----USB 驱动程序
USB 串口驱动:
option 驱动:
功能: 支持通过 USB 接口与设备进行串行通信,通常用于连接调制解调器(modem)或其他串口设备。
用途: 允许系统通过 USB 与设备交换数据,常用于嵌入式系统或需要串口通信的场景。
ACM 驱动(Abstract Control Model):
功能: 提供 USB 串口设备的支持,使设备表现为虚拟串口。
用途: 广泛用于调制解调器、GPS 接收器等设备,允许通过标准串口接口进行通信。
USB 网络驱动:
GobiNet 驱动:
功能: 专为高通(Qualcomm)Gobi 技术的设备设计,支持通过 USB 接口进行网络连接。
用途: 用于高通 Gobi 芯片组的调制解调器,提供高速数据传输功能。
QMI_WWAN 驱动:
功能: 支持高通的 QMI(Qualcomm MSM Interface)协议,通过 USB 实现网络连接。
用途: 用于高通基带处理器,与 GobiNet 类似,但实现方式不同。
MBIM 驱动(Mobile Broadband Interface Model):
功能: 专为移动宽带设备设计的接口模型,通过 USB 提供网络连接。
用途: 主要在 Windows 8 及以上版本中使用,支持各种移动宽带设备的连接。
NCM 驱动(Network Control Model):
功能: USB 网络控制模型,提供高效的数据传输方式。
用途: 用于需要高带宽和低延迟的网络通信场景。
RNDIS 驱动(Remote Network Driver Interface Specification)
功能: 微软定义的协议,通过 USB 提供网络适配器功能。
用途: 在 Windows 系统中广泛使用,使设备表现为网络接口。
ECM 驱动(Ethernet Control Model):
功能: USB 以太网控制模型,使设备通过 USB 提供以太网连接。
用途: 常用于需要将设备作为网络接口连接到主机的场景。
驱动程序的选择取决于设备类型、所需的功能以及操作系统的支持情况。例如,如果使用的是高通 Gobi 技术的调制解调器,可能需要加载 GobiNet 或 QMI_WWAN 驱动;如果使用的是标准的以太网功能,可能需要加载 ECM 驱动。
案例:
驱动解析
USB 转串口驱动
模块加载 USB 转串口 option 驱动程序后,在/dev 目录下创建 ttyUSB0、ttyUSB1 和 ttyUSB2 等设备文件。以下章节介绍如何将 USB 转串口 option 驱动程序移植到 Linux 操作系统中。
添加 VID 和 PID
为了识别模块,需将模块的 VID 和 PID 信息添加到kernel/drivers/usb/serial/option.c 文件中,对应的 VID 和 PID 以 EC05 系列模块为例:
static const struct usb_device_id option_ids[] = {
#if 1 //Added by Quectel
......
{
USB_DEVICE(0x2C7C, 0x0125) },
......
#endif
使用 USBNet 驱动(option驱动)
上一节配置使模块的所有 USB 接口均绑定 USB 转串口 option 驱动程序,导致 USBNet 驱动程序接口无法工作。用户可以添加以下语句来防止 USBNet 驱动程序接口绑定 USB 转串口 option 驱动程序。
在kernel/drivers/usb/serial/option.c 文件中添加以下语句:
static int option_probe(struct usb_serial *serial, const struct usb_device_id *id) {
struct usb_wwan_intf_private *data;
……
#if 1 //Added by Quectel
if (