嵌入式学习小组
直播中

ytrwv

8年用户 887经验值
擅长:EMC/EMI设计
私信 关注

980建立的虚拟串口,PID/VIP如何修改?

Linux 通过 gadget 建立的虚拟串口,其PID/VIP 为0xA4A7/0x0525,如果修改?

回帖(1)

杨言

2024-1-9 15:44:46
PID/VID 是设备的厂商和产品识别码,修改需要通过修改对应的设备驱动程序实现。

在 Linux 中,通过 gadget 建立的虚拟串口的 PID/VID 可以在 gadget 驱动程序代码中进行修改,例如在文件 /drivers/usb/gadget/function/f_serial.c 中,可以找到如下代码:

```
#define UDC_VID         0x0525
#define UDC_PID_BASE    0xA4A7

static int gserial_bind(struct usb_configuration *c, struct usb_function *f)
{
    struct f_serial_opts *opts = f->config->cdev->gadget->driver_data;
    ...
    f->descriptors = descriptors;
    if (opts->use_acm) {
        ...   
        descriptors[0].idVendor = cpu_to_le16(UDC_VID);
        descriptors[0].idProduct = cpu_to_le16(UDC_PID_BASE + 1);
    } else {
        ...
        descriptors[0].idVendor = cpu_to_le16(UDC_VID);
        descriptors[0].idProduct = cpu_to_le16(UDC_PID_BASE);
    }
    ...
}
```

其中 UDC_VID 和 UDC_PID_BASE 定义了默认的 PID/VID,可以根据需要进行修改。需要注意的是,修改 PID/VID 可能会导致 host 端无法自动识别设备,需要手动修改 host 端的驱动程序配置文件。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分