Platon
驱动牛犊
驱动牛犊
  • 注册日期2010-02-10
  • 最后登录2010-07-08
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1901回复:6

USB总线的IN指令是怎么产生的.

楼主#
更多 发布于:2010-02-10 16:12
USB设备在枚举成功后,如果有IN Endpoint.那么HOST会根据端点所设定的时间定时发送IN指令.以查询设备有无数据.这个IN指令是怎么生产的.与驱动有关吗?
(我现在利用DDK自带的BULKUSB.直接安装到我的STM32 设备上,STM32设备有一个BULK OUT和一个BULK IN.可是每次都地枚举成功后,便发现设备被Suspend.只有枚举过程,无任何IN,OUT数据查询指令.)
 不明白怎么回事.最近才开始看怎么写驱动的.请大家指教.

谢谢!
平凡人
Platon
驱动牛犊
驱动牛犊
  • 注册日期2010-02-10
  • 最后登录2010-07-08
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-02-10 16:14
盼望着高人的指点.
平凡人
Platon
驱动牛犊
驱动牛犊
  • 注册日期2010-02-10
  • 最后登录2010-07-08
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-02-11 08:10
回 1楼(Platon) 的帖子
绝望,此处无高手.感觉国内的网站实在是内容空洞.
平凡人
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-02-11 09:48
首先声明我不是高手,不过,这个问题我应该可以解答
IN指令准确地说是要由设备驱动产生一个Bulk In Pipe上的读数据URB请求,然后主机控制器驱动(HC)根据这个请求给设备发送IN指令。如果设备还没准备好数据,就会回NAK,那么主机控制器驱动会每隔一段时间就发IN指令轮询一下,直到设备回送数据为止。
需要指出的是,设备永远是被动的,只有主机方给它发指令,它才回答。不要指望它主动给主机发数据,就是同步或中断端口,也是要主机方先进行启动操作后才会有的。
不知道这么解释是否够清楚。
Platon
驱动牛犊
驱动牛犊
  • 注册日期2010-02-10
  • 最后登录2010-07-08
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2010-02-11 12:01
回 3楼(jally76) 的帖子
Hi,了解您的说法,也感谢您的回答.
 
我最近用DDK自带的BULKUSB驱动.设备为STM32.每次都是在枚举成功后,设备便被挂起来了.我使用DDK自带的测试程序.使用Read来进行测试,也是出现Faild Open to <//Piople 00>

都搞了好几天了.找不出个所以然,没有怎么搞过USB驱动.
 使用IRPTrace看了一下.根本就没进行Dispatch Read  write这个过程.总是在Clearn up,说不清楚,看能不能贴图.
平凡人
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2010-02-16 01:19
感觉问题应该是出在Query Device Relation这一步
Platon
驱动牛犊
驱动牛犊
  • 注册日期2010-02-10
  • 最后登录2010-07-08
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-02-19 08:19
回 5楼(jally76) 的帖子
祝大家节日快乐!经过最近的折腾,弄明白了.正如jally76所说.
平凡人
游客

返回顶部