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

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

楼主#
更多 发布于:2004-09-14 14:30
如题,怀疑是根本就没有发送到总线上去,因为检测不到总线有任何变化,各位大侠遇见过此类情况吗??困惑啊
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-09-14 17:22
你在写主机驱动? 从机驱动?

操作系统?

不说清楚,那些niu 人懒的答啊。 哈哈
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-14 17:59
是Host端的驱动
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-14 17:59
To:wdy9927
你的可以了吗?
jrmforever
驱动牛犊
驱动牛犊
  • 注册日期2004-07-24
  • 最后登录2010-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-14 18:44
我怎么感觉你和我的问题还是一样啊

你怎么肯定能使主机的问题呢???

我看不一定把!!!!

照着我的方法去做,在中断函数出来的地方加个延时

也许就好用了!!!!!
jrmforever
驱动牛犊
驱动牛犊
  • 注册日期2004-07-24
  • 最后登录2010-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-14 18:47
嗬嗬,下面的固件肯定没问题吗??


如果那样的话我就不知道了!!!!

breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-15 09:25
楼上的兄台,是在中断函数内部还是调用后加延时呢?
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-09-15 09:30
你是ehci ?  uhci ohci ?

我做的ehci 。

但我估计都差不多,你看你的描述符填写的是否正确。

估计都是描述符有问题。 再参看协议里有
4.10 Managing Control/Bulk/Interrupt Transfers via Queue Heads
这节描述的是传输的过程。 setup就属于这里。

因为有太多的原因导致你目前的现象。 我调了好久才通的。
好运~  
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-15 09:34
wdy:
那你是什么原因呢?我找了好久也没有找到原因,我是ohci的,不过应该差不多。你的问题是出在哪里呢?多谢
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2004-09-15 10:01
我的原因就是因为 描述符 出错。 后来仔细查看,一点一点的找的错。 

ochi 协议里也应该有传输过程的描述吧。 建议好好看看。

耐心点,一边一边的检查。 哈哈,我可是郁闷了好长时间的。

 

breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-09-15 10:27
是SETUP描述符的8字节内容出错吗?还是传输出错?
breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-15 10:45
老兄,可否把你改正的地方贴出来看看,linux的代码和vxworks的基本一样的
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于: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分
13楼#
发布于:2004-09-15 11:18
会不会跟物理偏移地址之类的有关系啊,我的偏移地址PCITOMEM都是用的0
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2004-09-15 11:25
sorry。

我这里没有 PCITOMEM 

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

但帮不上忙,ohci不懂啊。

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

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

breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-09-16 11:50
楼上的兄台,可否给个定位明确一点的出错地方,好不好。
找来找去还是找不到。我看看对我是否有启发
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
19楼#
发布于:2004-09-16 15:22
晕`

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

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

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

ohci 具体怎么样,我不清楚,而你到现在也不说,帮不上了。
协议里面至少有一章会讲hc是怎么把数据传输的吧,把那章好好看看。
上一页
游客

返回顶部