wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:886回复:3

请教:usb 主机芯片是怎么向下传urb的

楼主#
更多 发布于:2004-09-06 16:02
  我用的芯片是 via 的 vt6202 。模式是ehci 。

  1
  我照着协议把 qh 写好(就是那些地址,端口之类),把qh的地址添到 ASYNCLISTADDR 寄存器中。 并使能 Asynchronous Schedule。Asynchronous Schedule Status 寄存器也设置为1了。

  协议上说,Asynchronous Schedule Status 和 Asynchronous Schedule enable 都为1的时候, Asynchronous Schedule 才有效。主机才能够从这里取得描述符,从而发送数据。

  我的理解是这时候芯片硬件会自动把qh中的内容解读并把数据按地址, 端口发出去。 但是我的数据根本没有向下传递。 郁闷~ :(
  
  是不是我哪里理解的不对? qh 或许没有完全写对,不敢保证(因为没有可以借鉴的)。
  
  2
  看协议上说,发送的数据包,除了要传递的数据还包括一些其他的东西。 sync, setup ,addr, endp,crc5,idle 等等
  但这些有些都是芯片自己搞定的吧(有的是从描述符中取得,有的是定死的,有的是芯片自己计算出的),软件是不是不用管它是怎么发这些东西的?

  3
  哪位比较了解主机芯片流程,可以说说么?1.1的主机芯片流程也行,估计应该是差不多。

  还请各位多多指教。



  


[编辑 -  9/6/04 by  wdy9927]
afc
afc
驱动牛犊
驱动牛犊
  • 注册日期2001-05-24
  • 最后登录2011-08-24
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-06 16:24
看看Linux的源代码吧,里边有主机控制器驱动程序
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-09-06 17:04
感谢楼上的。

我现在就是仿照 linux 的代码来写的。但估计是哪里我没有搞清楚,所以到现在还是不行。希望各位能给提个醒。
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-09-07 09:42

我看到 Transfer Overlay 寄存器已经添好。

但是 status 中的 Halted 竟然是1,说明发送的时候出现错误。

可能的错误在哪呢? 超时? 超时芯片是怎么计算超时的?

游客

返回顶部