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.
您好!
我正在尝试使用下面链接的方法在 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、
0xEE
USB 规范未强制要求位于索引处的附加字符串描述符。 它是仅适用于 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 功能的其他人受益。