yxiner
驱动牛犊
驱动牛犊
  • 注册日期2004-08-13
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2711回复:13

通过bus hound观察到在host给usb device发送get descriptor时,device 没有响应,原因可能是什么

楼主#
更多 发布于:2005-03-16 14:01
通过bus hound观察usb key的插入过程,发现在host给usb device发送get descriptor时,device 没有响应(USTS 为no response),host连续尝试三次,得到的都是一样结果。原因可能是什么呢?

最新喜欢:

tsingkongtsingk...
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-25 11:06
什么叫有些设备行,有些设备不行?行和不行的设备之间是什么关系?
就是他们的异同点.ZLG的固件就是周立功的固件.他是针对PHILIPS
公司的芯片的.在PHILIPS的网站上有下载类似固件的,但你可能用不
上,控制芯片不同.
新手上路,请多关照.
yxiner
驱动牛犊
驱动牛犊
  • 注册日期2004-08-13
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-25 10:43
感谢linkup和metalwing:
  我的固件是自己开发的(但不是我),用在有些设备上可以,有些上面就出现上面的问题。
  我在芯片的datasheet没有找到怎么发送ACK信号,感觉好像是硬件自己发送的。我尝试用0包作为ACK信号发送出去,结果还是不行

  另外,metalwing,你说的ZLG固件是什么?哪里有?
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-23 11:42
to yxing:
郁闷呀.你确定是同一个程序吗.给我的感觉好象你是这样干的:
有一个现成的USB设备,他提供固件,然后你用这个固件放到你的设备上就不行了.是这样吗?如果是的话:
1.你把这个固件下到现成的设备上,看是否工作正常.
2.不知道你用的是什么芯片,我用的是1581,他有2种有效端点BUFF的
 方法,你的有几种?我用ZLG的固件中的方法不行,换一种就可以了.你
 看看.
对,象LINKUP说的,每收到包,要发ACK响应.
新手上路,请多关照.
dujian197988
驱动牛犊
驱动牛犊
  • 注册日期2005-03-22
  • 最后登录2006-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-23 09:54
大家帮我看一下我用BUS HOUND 抓的数据,帮我分析一下好吧
  10.0  CTL    a3 00 00 00  02 00 04 00                            GET STATUS              45.1.0        
  10.0  DI     03 01 00 00                                         ....                    45.2.0        
  10.0  CTL    23 03 04 00  02 00 00 00                            SET FEATURE             46.1.0        
  10.1  DI     04                                                  .                       47.1.0        
  10.0  CTL    a3 00 00 00  02 00 04 00                            GET STATUS              48.1.0        
  10.0  DI     03 01 10 00                                         ....                    48.2.0        
  10.0  CTL    23 01 14 00  02 00 00 00                            CLEAR FEATURE           49.1.0        
  10.0  CTL    80 06 00 01  00 00 40 00                            GET DESCRIPTOR          50.1.0        
  10.0  DI     12 01 10 01  00 00 00 40  b4 04 11 08  00 01 01 02  .......@........        50.2.0        
               00 01                                               ..                      50.2.16      
  10.0  CTL    a3 00 00 00  02 00 04 00                            GET STATUS              51.1.0        
  10.0  DI     03 01 00 00                                         ....                    51.2.0        
  10.0  CTL    23 03 04 00  02 00 00 00                            SET FEATURE             52.1.0        
  10.1  DI     04                                                  .                       53.1.0        
  10.0  CTL    a3 00 00 00  02 00 04 00                            GET STATUS              54.1.0        
  10.0  DI     03 01 10 00                                         ....                    54.2.0        
  10.0  CTL    23 01 14 00  02 00 00 00                            CLEAR FEATURE           55.1.0        
  10.0  CTL    00 05 02 00  00 00 00 00                            SET ADDRESS             56.1.0        
  10.0  CTL    80 06 00 01  00 00 12 00                            GET DESCRIPTOR          57.1.0        
  10.0  DI     12 01 10 01  00 00 00 40  b4 04 11 08  00 01 01 02  .......@........        57.2.0        
               00 01                                               ..                      57.2.16      
  10.0  CTL    80 06 00 02  00 00 09 00                            GET DESCRIPTOR          58.1.0        
  10.0  DI     09 02 22 00  01 01 00 a0  32                        ..\".....2               58.2.0        
  10.0  CTL    23 01 01 00  02 00 00 00                            CLEAR FEATURE           59.1.0
我们一直在努力
LinkUP
驱动牛犊
驱动牛犊
  • 注册日期2001-12-04
  • 最后登录2008-12-23
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-23 00:16
我用1183 ,也有同样的现象;
解决方法是,在发送前判断是否是Setup包,如果是,需要发送ACK指令,然后再发数据,就好了。 ;)
世界是我们的!!!
dujian197988
驱动牛犊
驱动牛犊
  • 注册日期2005-03-22
  • 最后登录2006-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-22 17:47
我的也是啊,请高手帮忙啊
我们一直在努力
yxiner
驱动牛犊
驱动牛犊
  • 注册日期2004-08-13
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-22 15:47
感谢metalwing,先给分再说!
请各位高手继续关注我的问题!
yxiner
驱动牛犊
驱动牛犊
  • 注册日期2004-08-13
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-21 17:06
to metalwing:
我已经将buff有效了。事实上,我同样的固件程序,down在有的usbdevice中,能够正常运行,而在另一部分usb device(硬件参数完全相同)中,就不能正常运行,出现上述的问题。我跟踪的目的也是希望找到为什么一部分设备不能正常工作的原因。
我知道这可能与硬件不稳定有关,但我想首先排查软件原因,看是否我的固件程序存在一些不完善的地方。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-18 11:24
没有发送回去有2个可能:
1.HOST没有发送IN令牌.这个不太可能,因为是在枚举阶段,IN令牌是
由系统发送的.我是比较相信系统的.
2.设备的BUFF没有有效他.
一般来说,你要发送数据给HOST,先将数据写入端点BUFF,然后使BUFF
有效,最后等待HOST发来的IN令牌将数据取走.你看看你的程序和器件
手册,是否将BUFF有效了.
再,你不要告诉我你不是用EP0的IN端点发送的.
新手上路,请多关照.
yxiner
驱动牛犊
驱动牛犊
  • 注册日期2004-08-13
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-17 17:20
我使用的是JTAG,没有仿真器。
我跟踪进去后发现,device收到了getdescriptor命令,并且也准备了要返回的数据,打开ep0In端口,但之后没有进入ep0In的中断,也就是可能没有发送出去;
    我不知道是否会由于跟踪造成的时间延误导致我观察到的结果与实际不符合;但如果确实如此,原因可能是什么呢?
    还有什么其他方法呢?
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-03-17 10:39
你是用什么来调试你的设备的?是否有仿真器?如果有的话建议你跟踪
一下看看.要注意的有几点:
1.在ADDRESS阶段是否正确设置了设备的地址.
2.是否收到GET DESCRIPTOR命令.
3.是否正确响应了GET DESCRIPTOR命令.
新手上路,请多关照.
yxiner
驱动牛犊
驱动牛犊
  • 注册日期2004-08-13
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-03-16 14:45
具体方法我有些不太清楚
可否qq交流一下?我的qq:16458580
lettertoxw
驱动牛犊
驱动牛犊
  • 注册日期2004-09-02
  • 最后登录2007-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-03-16 14:28
不妨在固件里加入一些串口输出的信息,以确定你的程序运行的情况。先看看你的设备到底有没有发送回去数据。

[编辑 -  3/16/05 by  lettertoxw]
游客

返回顶部