问题是关于USB设备在Zephyr OS中的实现。我们需要为接口名称添加接口字符串描述符。使用USBD_STRING_DESCR_DEFINE(初级)我说,字符串描述符部分,但指数"0";-这是错误的(?),因为它破坏了usb_descriptor.c中定义的基本字符串描述符结构。我们如何设置定义/链接器命令在usb_descriptor.c中添加新的USB字符串?给出的示例定义了索引为0的新添加的字符串(但它应该是4 -在制造商,产品和序列号之后)。
USBD_STRING_DESCR_DEFINE(primary) struct webusb_iface_descriptor webusb_string_descr = {
/* webusb iface String Descriptor */
.bLength = sizeof(struct webusb_iface_descriptor),
.bDescriptorType = USB_DESC_STRING,
.bString = WEBUSB_IFNAME,
};
void webusb_init()
{
int idx = usb_get_str_descriptor_idx(&webusb_string_descr);
if (idx != 0) {
webusb_desc.if0.iInterface = idx;
}
}
您应该使用USBD_STRING_DESCR_USER_DEFINE
而不是USBD_STRING_DESCR_DEFINE
。...USER_DEFINE
将添加到描述符中,...DESC_DEFINE
将覆盖通过usb_descriptor.c
包含的默认描述符。我没有找到任何关于这个的文档但是实验上它是有效的,正如我所描述的