This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C123GE6PM:USB driverlib 能否处理0xEE Microsoft OS 描述符?

Guru**** 1788580 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1171753/tm4c123ge6pm-can-usb-driverlib-handle-0xee-microsoft-os-descriptors

器件型号:TM4C123GE6PM

您好!

我正在尝试使用下面链接的方法在 TM4C 器件上自动载入 winusb:

https://github.com/pbatard/libwdi/wiki/WCID-Devices

我想知道 TI 的 driverlib 是否支持处理操作系统发出的0xEE 描述符请求。  有人知道这是否可行?  在 TI 驱动程序库中查看大容量 USB 示例时、我看到以下内容、但没有放置适当的"Microsoft OS 字符串描述符"的位置。  请参阅示例批量 USB 项目中的 USB_bulk_structs.c 中的以下代码。

//*****************************************************************************
//
// The descriptor string table.
//
//*****************************************************************************
const uint8_t * const g_ppui8StringDescriptors[] =
{
    g_pui8LangDescriptor,
    g_pui8ManufacturerString,
    g_pui8ProductString,
    g_pui8SerialNumberString,
    g_pui8DataInterfaceString,
    g_pui8ConfigString
};

#define NUM_STRING_DESCRIPTORS (sizeof(g_ppui8StringDescriptors) /                \
                                sizeof(uint8_t *))

我在其他地方看到可以将字符串放置在偏移量0xEE 处、但我看不到将0xEE id 窗口与特定字符串相关联的选项。  是否有人知道我在使用驱动程序库来处理此问题时缺少什么?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Robert、

      0xEEUSB 规范未强制要求位于索引处的附加字符串描述符。 它是仅适用于 MS Windows 的操作系统字符串描述符。 我假设在枚举期间、主机将为 索引为0xEE 的字符串描述符发送 get_descriptor 请求。 当器件收到此请求时、它将以 Microsoft 定义的格式提供操作系统字符串描述符。 TivaWare USB 库不支持此类字符串描述符扩展、但您可以自由地修改该库以适应您的应用。   

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否会碰巧有一个建议的方法来修改 driverlib 来处理这个问题?  例如、也许可以在某个地方添加回调、以处理预期标准描述符之外的描述符?

    作为示例 usbdenum.c 具有以下似乎处理枚举的函数、其中一个的 mod 是否有意义?

    static void USBDGetStatus(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDClearFeature(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDSetFeature(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDSetAddress(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDGetDescriptor(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDSetDescriptor(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDGetConfiguration(void *pvInstance,
                                     tUSBRequest *psUSBRequest);
    static void USBDSetConfiguration(void *pvInstance,
                                     tUSBRequest *psUSBRequest);
    static void USBDGetInterface(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDSetInterface(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDSyncFrame(void *pvInstance, tUSBRequest *psUSBRequest);
    static void USBDEP0StateTx(uint32_t ui32Index);
    static void USBDEP0StateTxConfig(uint32_t ui32Index);
    static int32_t USBDStringIndexFromRequest(uint16_t ui16Lang,
                                              uint16_t ui16Index);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嘿、Charles、

    USB 驱动程序库具有"tCustomeHandlers"结构、(我认为)允许用户为 driverlib 不处理的内容添加处理程序函数。  字符串描述符有一个客户处理程序点。  TI 的这一意图是否适用于 tCustomHandlers?  它看起来是这样的、但在文档中并不完全清楚。

    有关这方面的信息、请参阅第2.23.2和2.24.1.4节中的 USB driverlib 指南

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Robert、

     您可以修改它并查看是否能够扩展 MS 字符串描述符。 让我们知道结果、我相信这将使 可能需要支持这一非强制性 USB 功能的其他人受益。