在原先的USB鼠标驱动中加入了一套DFU的接口。配置描述符中也改了bNumInterfaces=2.。。wTotallength长度也修改了。但驱动无法进入配置状态。
xp主机知道是个USB鼠标设备。但是配置无法成功。
else if(FM3_USB0->UDCS & UDCS_CONF) { /* SET-CONFIG detect *///驱动匹配成功主机会发送set_config 。让设备进入配置状态。添加接口,类描述符后,估计主机匹配不了驱动所以无法进入这步。
/*emulate set config command*/
UsbSetDevState(UsbDevStatusAddress);
UsbEp0SetupPacket.mRequestType.Dir = UsbHost2Device;
UsbEp0SetupPacket.mRequestType.Type = UsbTypeStandart;
UsbEp0SetupPacket.wIndex.Word = 0;
UsbEp0SetupPacket.wLength.Word = 0;
UsbEp0SetupPacket.wValue.Lo = (FM3_USB0->UDCIE & UDCIE_CONFN)>>1;
UsbEp0SetupPacket.bRequest = SET_CONFIGURATION;
USB_SetupHandler();
FM3_USB0->UDCS &= ~UDCS_CONF; /* CONF clear */
}
请问添加一个接口。配置描述符和设备描述符还有其他地方 需要改修吗???因为调试了很多次。在配置状态之前,设备确实发了设备和配置描述符等给主机,让PC主机判断是否能够提供USB的Driver。
------解决方案--------------------
这段是在哪个spec里?之前确实没看到过
之前做多接口的复合设备,也试过将bDeviceClass等3个字段设置为0x00,但枚举出错
后来配置成复合设备,各功能设备都可以识别到了,除了那几个系统,在win7上也跑过可以的