Zephyr USB设备字符串描述符定义



问题是关于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包含的默认描述符。我没有找到任何关于这个的文档但是实验上它是有效的,正如我所描述的

相关内容

  • 没有找到相关文章

最新更新