我想添加一个字符串到我的HID项目中(以存储有关固件版本的信息)。我读过有关字符串描述符https://www.beyondlogic.org/usbnutshell/usb5.shtml的文章,我的理解是配置描述符或报告描述符会列出指向字符串的索引。字符串存储在其他地方。然后,主机可以通过索引经由“get”字符串“Descriptor”请求来请求该字符串。
不过,我对它的实现相当迷惑。我一直在搜索STM32F04示例库(可从STM下载或在https://github.com/caozoux/arm/blob/master/stm32/STM32F0x2_USB-FS-Device_Lib%20V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c上复制),并找到了以下内容:
    /* USB DFU device Configuration Descriptor */
    const uint8_t usbd_dfu_CfgDesc[USB_DFU_CONFIG_DESC_SIZ] =
    {
      0x09, /* bLength: Configuration Descriptor size */
      USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
      USB_DFU_CONFIG_DESC_SIZ,
      /* wTotalLength: Bytes returned */
      0x00,
      0x01,         /*bNumInterfaces: 1 interface*/
      0x01,         /*bConfigurationValue: Configuration value*/
      0x02,         /*iConfiguration: Index of string descriptor describing the configuration*/
      0xC0,         /*bmAttributes: bus powered and Supports Remote Wakeup */
      0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/
      /* 09 */这给出了iConfiguration的索引为0x02。然后,我搜索了另一个引用0x02或配置字符串的所有文件,但什么也没有找到。我希望找到某种类型的字符串数组,这些字符串数组可以通过0x02索引或至少一个配置字符串进行索引。可能示例文件不完整,但我觉得更有可能的是我没有搜索到正确的内容。
我的问题是,首先,我对字符串描述符如何正确工作的基本假设是正确的?如果是这样的话,字符串通常是如何存储的以及存储在哪里?任何到示例实现的链接也会非常有帮助!
发布于 2019-10-10 04:52:24
在简要查看您的代码之后,它看起来像是向USB主机返回字符串描述符以响应"Get Descriptor“请求的代码如下:
https://stackoverflow.com/questions/58295031
复制相似问题