punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
阅读:2997回复:29

[跪求!!!]ResetDevice之后管道就关闭了?什么原因啊?

楼主#
更多 发布于:2004-01-05 08:23
由于超时出错,我在驱动程序里ResetDevice,之后主机再也不能向管道写数据了。
不知道usb协议中ResetDevice操作后,usb板子会有什么中断事件发生!
不停学习
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-22 08:31
看来这个问题很普遍呀,我在usb.org的bbs上也问过了,哪边的高手比较厉害,只是我的问题依然没有解决,呵呵
shilonglea
驱动牛犊
驱动牛犊
  • 注册日期2004-03-19
  • 最后登录2008-04-17
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-21 16:04
ding ! guan zhu zhong
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-21 13:06
我有1.1的,没问题吧
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-21 13:04
ZLG?能给我传个么?多谢
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-06-21 12:59
我建议你用ZLG的调试助手来调试。
一起交流,共同提高!
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-21 12:52
没有PC端的DEMO驱动呀,所以只能自己调了。正如我前面所描述的。我并没有发送大于64字节的packet呀,我每次只发64字节,PC端每次也只收64字节的。
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-06-21 11:39
你用哪一款USB IC。先找一下PC端DEMO的驱动(如BULKUSB)确定下来,再分析固件程序。正如我上面所说,如果数据长度大于64,在READ例程中要划分多个PACKET的。
一起交流,共同提高!
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-21 11:29
谢谢lejianz.问题就是我怎么能确定到底是哪边的问题.我用的ARM+linux做USB DEVICE.PC端的驱动我用windriver和driverstudio做了两个版本的驱动(为了验证是否是驱动的问题),都有这个问题.所以我最怀疑的就是固件的问题.但我找了很长时间,怎么分析好象并不可能是固件的问题.所以我很郁闷.
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2004-06-21 11:01
我认为你首先应确定哪一部分有问题:固件还是驱动。如果是D12或者1581,你可以用ZLG的调试助手1.2.总之,你先确定哪一方面出问题。根据你的描述,在IRP_MJ_READ的例程中,它会根据EP的最大长度分为(64+1)的IN PACKET。
一起交流,共同提高!
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-21 10:18
谢谢lejianz。可能是firmware的问题吧,但我一直找不到原因。我做过测试发现,连续发送数据到PC端有时能发送几十M,但有时会莫名其妙的停止PIPE(这个现象很普遍)。显示错误为USB设备没有响应。我认为是上位机应用程序中的所要READ的字节超过了USB设备实际发送的字节。我这样试过:USB设备发送64个字节。PC应用程序一次读65个字节就会出现这个错误。至于为什么会出现这个问题,我一直没搞清楚(因为当要读的数据大于实际发送过来的数据量时Read应该返回实际所读到的字节数)。
  而有时还会出现缓冲区溢出的错误。这个错误我是这么来测试的:USB设备发送64个字节。PC应用程序一次读63个字节就会出现这个错误。
  但实际上我的USB DEVICE连续发送数据是这样处理的:每次只发送一个packet(64字节),PC应用端每次也只接收一个packet。那为什么会出现上面所说的错误呢?而且前一个错误是致命的,PIPE复位也不管用。而后一错误则可以通过复位重读来解决。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-18 15:50
我也一样,关注中!!!
新手上路,请多关照.
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2004-06-18 15:11
下位机应该会复位的。这样的复位是USB复位,你应该能监测到此事件,USB复位后,它将会读DEVICE DESCRIPTOR,如果没有这些操作,说明你的固件有问题。
一起交流,共同提高!
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-06-18 12:38
再顶!
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-06-17 11:08
俺每天顶一次!!!期待高人指点
gmmxrr
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2005-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-06-14 14:52
狂顶!!!!!!!
旧贴新用,走前人走过的路,怎么还这么艰难呢?前辈指点呀。期待中...............
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-01-09 11:09
[quote]由于超时出错,我在驱动程序里ResetDevice,之后主机再也不能向管道写数据了。
不知道usb协议中ResetDevice操作后,usb板子会有什么中断事件发生!

高手们不要客气啊!
多多指点!! [/quote]
jixu ding!!!!!!!!!!!!!!!!!!
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-01-07 19:39
由于超时出错,我在驱动程序里ResetDevice,之后主机再也不能向管道写数据了。
不知道usb协议中ResetDevice操作后,usb板子会有什么中断事件发生!

高手们不要客气啊!
多多指点!!
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-01-06 17:27
[quote]没想到在这里也会看到这么愤青的词 :D

Device那里也会得到一个reset事件

我在案下位机的reset事件中打开了接受缓存,但是还是不能写.
是不是因为\"Reset Device 之后还要Enable Device该设备才能使能,EP0才能开启。Enable Device一般就是Enable RootHub Status该设备对应的Port。\"呢?
 [/quote]
问题还没解决阿!!!
请高手们继续关注
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-01-06 16:03
没想到在这里也会看到这么愤青的词 :D

Device那里也会得到一个reset事件

我在案下位机的reset事件中打开了接受缓存,但是还是不能写.
是不是因为\"Reset Device 之后还要Enable Device该设备才能使能,EP0才能开启。Enable Device一般就是Enable RootHub Status该设备对应的Port。\"呢?
不停学习
上一页
游客

返回顶部