阅读:2080回复:7
请问在 Get Max LUN 之后为何收不到 CBW 命令?
各位大侠,刚入门的小弟请教一个问题:在 WIN98SE 下开发 U 盘,程序调试到 Get Max LUN 之后(返回0),收到 Host 传来的 Setup End 命令,从此 Host 处于忙中,不知道在等待什么,鼠标无法进行任何操作,而固件无法收到任何的 CBW 命令,直到拔掉 USB 连线,Host 才退出忙等待而恢复可以正常操作的状态。
恳请各位前辈大侠指点迷津。 |
|
沙发#
发布于:2003-06-20 16:45
我在98下Get Max LUN 之后,机子就不发数据了,倒是没有不能动。后来换了ME,XP都ok,怀疑是98驱动有问题。
|
|
板凳#
发布于:2003-06-20 20:45
肯定是98驱动有问题!
|
|
地板#
发布于:2003-06-23 09:30
用的什么驱动?说来听听
|
|
地下室#
发布于:2003-06-23 11:11
我用的是无驱型U盘针对WIN98专配的驱动程序。请前辈高手参看以下描述符:
static unsigned char DeviceDescriptor[18] ={ 0x12, // 0 Device Descriptor Length : 18 0x01, // 1 type = DEVICE 0x10, // 2 USB Version 0.10 LSB 0x01, // 3 USB Version 1.00 => 1.10 MSB 0x00, // 4 class 0x00, // 5 subclass 0x00, // 6 protocol 0x10, // 7 Max pack size for EP0 0xa0, // 8 vendor ID LSB 0x0e, // 9 vendor ID MSB 0x03, //10 product ID LSB 0x68, //11 product ID MSB 0x00, //12 device release number LSB 0x01, //13 device release number MSB 0x01, //14 string index of manufacture descriptor 0x02, //15 string index of this product descriptor 0x03, //16 string index of the device\'s descriptor 0x01 //17 num of possible configurations }; static unsigned char subStringLanguageDescriptor[4] = { 0x04, //长度 0x03, //类型 0x09, //0x0409是语言代码 0x04 }; static unsigned char subStringManufactureDescriptor[8] = { 0x08, //长度 0x03, //类型 \'U\',0x00, \'S\',0x00, \'B\',0x00 }; static unsigned char subStringProductDescriptor[34] = { 0x22, //长度 0x03, //类型 \'S\',0x00, \'o\',0x00, \'l\',0x00, \'i\',0x00, \'d\',0x00, \' \',0x00, \'s\',0x00, \'t\',0x00, \'a\',0x00, \'t\',0x00, \'e\',0x00, \' \',0x00, \'d\',0x00, \'i\',0x00, \'s\',0x00, \'k\',0x00 }; static unsigned char subStringSerialnumberDescriptor[34] = { 0x22, //长度 0x03, //类型 \'1\',0x00, \'6\',0x00, \'4\',0x00, \'7\',0x00, \'1\',0x00, \'8\',0x00, \'F\',0x00, \'D\',0x00, \'3\',0x00, \'A\',0x00, \'6\',0x00, \'8\',0x00, \'4\',0x00, \'9\',0x00, \'D\',0x00, \'3\',0x00 }; 因为我用的MCU是三星S3FB42F,其USB的Endpointer 0的接收缓冲只有0x10,因此设备描述符的第7项与标准无驱型U盘不同(0x40),使用USBCheck(version 3.2)对固件进行测试,发现设备描述符的14、15、16三项所定义的索引串不能通过测试,而测试语言代码(0x0409)则没有问题。 是不是因为设备描述符的第7项导致以上问题呢?如果是的话,那位大侠可以给小弟提供解决方案? |
|
5楼#
发布于:2003-06-23 13:23
很多U盘的驱动都有识别自己产品的限制!你现在的驱动是USMSBD的驱动吧!
另外你在那里啊!我知道你现在的芯片使用来做播放器的,大家可以探讨探讨! 还有可否发一份usbcheck给我!谢谢! newtech2000@163.com |
|
6楼#
发布于:2003-06-24 15:17
可能是你的u盘不支持GET MAX LUN 命令,造成默认管道STALL,而驱动没有CLEAR STALL.。
|
|
7楼#
发布于:2003-06-24 15:32
至cherry chang:其实,我做的U盘能否支持GET MAX LUN命令,完全取决于我正在调试的固件,在收到该命令之后,进行相应的处理,就可以说支持该命令了。
紧急呼吁:有哪位高手可以向小弟提供一份U盘的驱动程序。不胜感激! |
|