apply
驱动牛犊
驱动牛犊
  • 注册日期2004-04-15
  • 最后登录2004-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1177回复:2

枚举中遇到的问题

楼主#
更多 发布于:2004-04-25 18:55
在枚举过程中遇到了一些问题,然后看了精华区的一些文章
可还是没有找到相应的答案
拜托那位大虾指点一下吧,bow
我遇到的问题是:
1 第一次接收到主机的GetDescriptor请求中断响应,主机要求外设发送设备描述符,确定外设缺省管道控制端点的每次数据包大小。通过控制端点回送设备描述符,第一次只需要保证设备描述符中前8个字节发送正确。
2 主机发送SetAddree请求到USB 设备,给USB设备分配唯一的地址。这时外设被分配唯一地址,此时的USB设备成为被主机承认的合理外设,可以进行正常的数据传送。

3 外设再一次接收到GetDescriptor请求。主机分析描述符的信息。主机操作系统根据描述符信息寻找相应的设备驱动程序。
4 操作系统会继续发出GetConfiguration请求,读取设备的配置信息。要把外设的各个端点的配置情形回送到主机中。如果有多个配置信息,有多次请求发生。
5 在设备能通讯前,主机给外设一个SetConfiguration请求,主机根据整个系统的USB使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关配置,使设备能合理使用。
经过上面的调试后,USB外设可以发送和接收数据,设备如果不立即使用则会进入挂起状态,直到使用。

我现在遇到的问题是:在第3步之后,主机没有再发Get_descriptor(configuration)请求,这是为什么呢?这时候驱动应该工作了吗?还是我前面传回给主机的数据不对?
谢谢拉
refugeesh
驱动牛犊
驱动牛犊
  • 注册日期2004-04-24
  • 最后登录2004-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-26 18:50
我也遇见你同样的问题,不过,你要注意一点就是不要认为主机就是想教科书上说的那样,一个一个的给你发,有时候可能发多次,你程序里面最好不要认为主机只给你发一次,有时候是多次,改了后可能就OK了
refugeesh@hotmail.com
LJ1978
驱动小牛
驱动小牛
  • 注册日期2004-02-25
  • 最后登录2011-06-08
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望24点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-27 10:07
一楼的说的很对。HOST什么时候发什么命令是HOST的事情。
但万变不离其宗,枚举过程就是那几条命令,你对每条都写好响应程序,来什么就调用相应的程序就可以了。
游客

返回顶部