szzwm
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2005-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2080回复:7

请问在 Get Max LUN 之后为何收不到 CBW 命令?

楼主#
更多 发布于:2003-06-20 16:11
    各位大侠,刚入门的小弟请教一个问题:在 WIN98SE 下开发 U 盘,程序调试到 Get Max LUN 之后(返回0),收到 Host 传来的 Setup End 命令,从此 Host 处于忙中,不知道在等待什么,鼠标无法进行任何操作,而固件无法收到任何的 CBW 命令,直到拔掉 USB 连线,Host 才退出忙等待而恢复可以正常操作的状态。

    恳请各位前辈大侠指点迷津。
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-20 16:45
我在98下Get Max LUN 之后,机子就不发数据了,倒是没有不能动。后来换了ME,XP都ok,怀疑是98驱动有问题。
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-20 20:45
肯定是98驱动有问题!
cherry chang
驱动牛犊
驱动牛犊
  • 注册日期2002-08-09
  • 最后登录2005-05-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-23 09:30
用的什么驱动?说来听听
szzwm
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2005-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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项导致以上问题呢?如果是的话,那位大侠可以给小弟提供解决方案?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-23 13:23
很多U盘的驱动都有识别自己产品的限制!你现在的驱动是USMSBD的驱动吧!
另外你在那里啊!我知道你现在的芯片使用来做播放器的,大家可以探讨探讨!
还有可否发一份usbcheck给我!谢谢!
newtech2000@163.com
cherry chang
驱动牛犊
驱动牛犊
  • 注册日期2002-08-09
  • 最后登录2005-05-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-24 15:17
可能是你的u盘不支持GET MAX LUN 命令,造成默认管道STALL,而驱动没有CLEAR STALL.。
szzwm
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2005-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-24 15:32
至cherry chang:其实,我做的U盘能否支持GET MAX LUN命令,完全取决于我正在调试的固件,在收到该命令之后,进行相应的处理,就可以说支持该命令了。

紧急呼吁:有哪位高手可以向小弟提供一份U盘的驱动程序。不胜感激!
游客

返回顶部