breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:3319回复:28

获取设备描述符Host发送SETUP包引起超时错误!!!请求帮助

楼主#
更多 发布于:2004-09-14 14:30
如题,怀疑是根本就没有发送到总线上去,因为检测不到总线有任何变化,各位大侠遇见过此类情况吗??困惑啊
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-27 09:40
hongshanger:
在你以前超时的时候是否就没有收到setup包还是收到了setup包却没有反映而产生超时?
zyyz1100
驱动牛犊
驱动牛犊
  • 注册日期2003-01-11
  • 最后登录2009-10-12
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-26 10:57
你用的是sl811吧,我们成功的开发了host的应用,系统非常的稳定。qq:45364203
email: zyyz1100@eyou.com
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-26 09:27
目前是已经触发了WDH中断,即已经处理完了一个TD,但是数据发出了却没有发送到总线上去,奇怪!
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-25 16:22
不会是晶振的问题吧,要试试看
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-25 14:52
小妹和你一样的情况,枚举时候发送setup包时第一次就超时,
还用有源晶振后一切ok,你用的是哪种?
新手上路,各位大侠莫不理睬
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-25 11:39
有硬件出错的可能吗?如果有一般哪里出问题的可能大些呢
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-25 09:40
顶下
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-24 11:51
我跟你的问题一样,我的setup包内容是80,06,0001,0000,1200,在EP0Xfer中把1200调换成0012,在usbXfer传输中cmd=27h,intr=91h,可是每次进入while循环后执行if(intr & USB_A_DONE)后跳出,然后result  = SL811Read(EP0Status);就得到result=04,超时,我头都大了。
我用的是12m无缘晶振,可是有朋友说他们用这个能成功。
新手上路,各位大侠莫不理睬
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-24 11:41
能想到的问题都去检查了一遍,都没有问题。可就是数据发送不到USB总线上,郁闷啊!!
哪位还有提示信息
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2004-09-16 15:22
晕`

host controller 怎么才能把你的数据向下传递???

ehci 中,是要在芯片中填写一些寄存器,比如,这次要发给设备的地址,端点,多少数据,数据的地址等等。 你自己看一下这些你填写的对不对。我说的描述符就是指这些,而不是设备的描述符。

还有就是如果是什么传输,都应该把相应的寄存器使能,也就是说让hc 知道这里的寄存器已经填写好了,可以发送了。

ohci 具体怎么样,我不清楚,而你到现在也不说,帮不上了。
协议里面至少有一章会讲hc是怎么把数据传输的吧,把那章好好看看。
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-16 11:50
楼上的兄台,可否给个定位明确一点的出错地方,好不好。
找来找去还是找不到。我看看对我是否有启发
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2004-09-15 15:07
楼主,真的很同情你。

但帮不上忙,ohci不懂啊。

不知道你的代码是自己写还是移植的。 努力进行调试吧。

还有,你用什么方法确定数据没送到的。看看是不是检验的方法有问题。我当时这也有问题。 我是下面有个usb 从机的设备的固件有问题,所以误以为数据没下去,但实际上数据已经下去了,只是固件没给我反映。

breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-09-15 14:40
还是不行啊
jrmforever
驱动牛犊
驱动牛犊
  • 注册日期2004-07-24
  • 最后登录2010-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-09-15 11:41
在中断结束之后加延时!!!!如果你的问题在这里的话!!
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2004-09-15 11:25
sorry。

我这里没有 PCITOMEM 

什么物理偏移地址? 是数据的地址么?
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-09-15 11:18
会不会跟物理偏移地址之类的有关系啊,我的偏移地址PCITOMEM都是用的0
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
17楼#
发布于:2004-09-15 11:09
那内容可多了。

可能我没表达清楚。

在ehci 中,主机要发送setup包,就要先建立个urb,把这个urb传递下去。 我想ohci 也是一样的。

要传递这个urb,就要按ehci 协议填写 qtd,qh等描述符。芯片就是根据这些描述符,来得知你要传递的是什么类型的数据,数据在哪里?往哪里传递? 等等。

而这些东西,不是一个,二个函数就完成的,是整个一个大的流程。



Queue Element Transfer Descriptor (qTD)
Queue Head(qh)
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-09-15 10:45
老兄,可否把你改正的地方贴出来看看,linux的代码和vxworks的基本一样的
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-09-15 10:27
是SETUP描述符的8字节内容出错吗?还是传输出错?
上一页
游客

返回顶部