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

有没有人遇到D12枚举重复好几次而失败的情况?

楼主#
更多 发布于:2004-05-17 20:07
我自己参照D12 smart board的demo程序写的firmware程序,发现枚举还没成功时就又重新开始枚举了,有人也遇到这样的问题吗?各位大侠帮忙看看,是什么步骤有错啊?
Device  Phase  Data         Description      
------  -----  -----------  ----------------
   1.1  DI     04           .                          
   1.0  CTL    a3 00 00 00  GET STATUS                  
                     02 00 04 00                                  
   1.0  DI     01 01 01 00  ....                            
   1.0  CTL    23 01 10 00  CLEAR FEATURE                  
                     02 00 00 00                                  
   1.0  CTL    a3 00 00 00  GET STATUS                      
               01 00 04 00                                  
   1.0  DI     00 01 00 00  ....                            
   1.0  CTL    a3 00 00 00  GET STATUS                    
               02 00 04 00                                  
   1.0  DI     01 01 00 00  ....                          
   1.0  CTL    23 03 04 00  SET FEATURE                  
               02 00 00 00                                  
   1.1  DI     04           .                              
   1.0  CTL    a3 00 00 00  GET STATUS                    
               02 00 04 00                                
   1.0  DI     03 01 10 00  ....                          
   1.0  CTL    23 01 14 00  CLEAR FEATURE                
               02 00 00 00                                
   1.0  CTL    a3 00 00 00  GET STATUS                    
               02 00 04 00                            
   1.0  DI     03 01 00 00  ....                          
   1.0  CTL    80 06 00 01  GET DESCRIPTOR                
               00 00 40 00                              
   1.0  DI     12 01 00 01  ....                          
               dc 00 00 10  ....                        
               71 04 66 06  q.f.                            
               00 01 00 00  ....                        
   1.0  CTL    23 03 04 00  SET FEATURE                  
               02 00 00 00                              
   1.1  DI     04           .                            
   1.0  CTL    a3 00 00 00  GET STATUS                  
               02 00 04 00                              
   1.0  DI     03 01 10 00  ....                          
   1.0  CTL    23 01 14 00  CLEAR FEATURE                
               02 00 00 00                                
   1.0  CTL    00 05 02 00  SET ADDRESS                    
               00 00 00 00                                
   1.0  CTL    80 06 00 01  GET DESCRIPTOR                
               00 00 12 00                              
   1.0  DI     12 01 00 01  ....                        
               dc 00 00 10  ....                          
               71 04 66 06  q.f.                            
               00 01 00 00  ....                        
               00 19        ..                            
   1.0  CTL    80 06 00 02  GET DESCRIPTOR                
               00 00 09 00                                
   1.0  DI     09 02 2e 00  ....                          
               01 01 00 60  ...`                          
               01           .                            

   1.1  DI     04     ;重新开始了                          
   1.0  CTL    a3 00 00 00  GET STATUS                  
                     02 00 04 00                                  
   1.0  DI     01 01 01 00  ....                            
   1.0  CTL    23 01 10 00  CLEAR FEATURE                  
                     02 00 00 00                                  
   1.0  CTL    a3 00 00 00  GET STATUS                      
               01 00 04 00                                  
   1.0  DI     00 01 00 00  ....                            
   1.0  CTL    a3 00 00 00  GET STATUS                    
               02 00 04 00                                  
   1.0  DI     01 01 00 00  ....                          
   1.0  CTL    23 03 04 00  SET FEATURE                  
               02 00 00 00                                  
   1.1  DI     04           .                              
   1.0  CTL    a3 00 00 00  GET STATUS                    
               02 00 04 00                                
   1.0  DI     03 01 10 00  ....                          
   1.0  CTL    23 01 14 00  CLEAR FEATURE                
               02 00 00 00                                
   1.0  CTL    a3 00 00 00  GET STATUS                    
               02 00 04 00                            
   1.0  DI     03 01 00 00  ....                          
   1.0  CTL    80 06 00 01  GET DESCRIPTOR                
               00 00 40 00                              
   1.0  DI     12 01 00 01  ....                          
               dc 00 00 10  ....                        
               71 04 66 06  q.f.                            
               00 01 00 00  ....                        
   1.0  CTL    23 03 04 00  SET FEATURE                  
               02 00 00 00                              
   1.1  DI     04           .                            
   1.0  CTL    a3 00 00 00  GET STATUS                  
               02 00 04 00                              
   1.0  DI     03 01 10 00  ....                          
   1.0  CTL    23 01 14 00  CLEAR FEATURE                
               02 00 00 00                                
   1.0  CTL    00 05 02 00  SET ADDRESS                    
               00 00 00 00                                  
总是在第二次发送设备描述符和配置描述符后重新开始枚举,如此重复多次,未果,枚举失败!

[编辑 -  5/17/04 by  martinqk]

[编辑 -  5/17/04 by  martinqk]

[编辑 -  5/17/04 by  martinqk]
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-17 20:22
即使一个好的USB设备也可能出现多次枚举,这是由于干扰等原因导致数据传输出错等。当如果像你所说的不断枚举最后枚举失败就不正常了,这种情况应该是枚举三次然后报告枚举失败
www.dragon-2008.com 欢迎交流
martinqk
驱动牛犊
驱动牛犊
  • 注册日期2004-04-15
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-17 21:37
那么,按照我的数据,是固件程序哪里有问题呢?设备描述符和配置描述符都发出去了,应该是成功的,对吧,可是看不到Set Configuration与Get Configuration。
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-18 08:54
看一下你的配置描述符对不对,我也遇到过这样的问题,最后发现是传递的描述符指针类型不对
有朋自远方来,不亦乐乎?
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-18 09:03
这种重复枚举不成功的例子,一般都是描述符不对,或没有发送对。
看你的问题好像是配置描述符的问题。
用bushound抓一下,看发的数据和定义的是否一样。
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-18 09:29
同意bbiliu和hoverfei的观点,应该是描述符错误!而且应该是比较明显的错误!
www.dragon-2008.com 欢迎交流
martinqk
驱动牛犊
驱动牛犊
  • 注册日期2004-04-15
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-18 09:29
12 01 00 01 dc 00 00 10 71 04 66 06 00 01 00 00 00 19 设备描述符        
09 02 2e 00 01 01 00 60 01  配置描述符    
我能抓到的包就是这两个, 都没发错啊!
有没有可能是程序跑飞了?

[编辑 -  5/18/04 by  martinqk]
chengzhen
驱动牛犊
驱动牛犊
  • 注册日期2004-04-05
  • 最后登录2008-10-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-18 10:40
你用bus hound抓一个u盘的枚举过程分析一下,会有帮助的。
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-18 10:41
设备描述符中的dc字段表示什么?在设备描述符中,这个字段应该为0x00啊(class),另外如果用usb1.1的话,
字段应该如下:
12 01 10 01 00 00 00 10 71 04 66 06 00 01 00 00 00 19?
上面的19表示什么啊?有19个配置吗,没有那么多吧,改为01试试。
最后如下:
12 01 10 01 00 00 00 10 71 04 66 06 00 01 00 00 00 01
配置描述符基本上正确,长度2E应该是你的配置描述符的正确长度。
如果都正确了,下一步应该会取全部的2E长度的配置描述符。
chengzhen
驱动牛犊
驱动牛犊
  • 注册日期2004-04-05
  • 最后登录2008-10-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-05-18 10:50
bbiliu:
  麻烦指点!
为什么我的d12固件程序用仿真器运行时能够正确的完成枚举并且能够能够正确的响应主机pc端的厂商请求,可是将程序烧到片子中却连正确的枚举都不能进行,mcu根本不送描述府,连第一步的设备描述符的请求都没有响应。


 
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-18 10:55
不清楚,你烧写入的代码,有没有改为rom运行版本的啊。
在仿真器下运行的程序是不能直接烧入rom的。

[编辑 -  5/18/04 by  bbiliu]
chengzhen
驱动牛犊
驱动牛犊
  • 注册日期2004-04-05
  • 最后登录2008-10-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-05-18 11:04
bbiliu:
你怎么就不睬我呢?
chengzhen
驱动牛犊
驱动牛犊
  • 注册日期2004-04-05
  • 最后登录2008-10-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-05-18 11:07
rom运行版本?
什么意思,我就是直接把编译生成的目标文件*.hex烧进去的。
这样不行吗?
请详细说明!
谢谢!
martinqk
驱动牛犊
驱动牛犊
  • 注册日期2004-04-15
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-05-18 11:15
bbiliu:

可是,我用d12 smart board demo程序抓到的正确枚举的设备描述符和配置描述符也是这样的。
12 01 00 01 dc 00 00 10 71 04 66 06 00 01 00 00 00 19 设备描述符
09 02 2e 00 01 01 00 60 01 配置描述符
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-05-18 11:18
在编译器的链接设置里应该有这方面的设置。
不知道你用的是什么编译器.看看帮助文档里有没有说明。
其实我对单片机不熟悉的,我是做ARM开发的。不过我想这些编译器应该原理上都差不多的。
chengzhen
驱动牛犊
驱动牛犊
  • 注册日期2004-04-05
  • 最后登录2008-10-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-05-18 11:24
我用的是伟福的仿真器,就是按他的要求进行的设置。仿真时可以响应主机的标准请求,可是烧进去之后只是led闪三次,用bus hound所抓数据看不到mcu回送的数据。
 真急人呀!怎么办?
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-05-18 11:34
如果你可以控制到led灯的话,用点灯的方式查看一下程序在什么地方出问题了。
否则的话就只有详细的分析代码,和阅读文档,看有没有启发了。
如果代码烧写正确的话,那你要看看数据区的位置对不对了。
我没用过伟福的仿真器,所以不能给你具体的建议。
你用的MCU是什么型号的?单片机系统吗?
chengzhen
驱动牛犊
驱动牛犊
  • 注册日期2004-04-05
  • 最后登录2008-10-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-05-18 11:38
我用的mcu是AT89C2051,用它来控制d12的
martinqk
驱动牛犊
驱动牛犊
  • 注册日期2004-04-15
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-05-18 14:16
bbiliu:

可是,我用d12 smart board demo程序抓到的正确枚举的设备描述符和配置描述符也是这样的。表明我现在的描述符没有写错啊!
12 01 00 01 dc 00 00 10 71 04 66 06 00 01 00 00 00 19 设备描述符
09 02 2e 00 01 01 00 60 01 配置描述符
ms520sxl
驱动牛犊
驱动牛犊
  • 注册日期2004-03-17
  • 最后登录2005-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-05-18 17:11
chenzhen,我和你出现一样的问题了。哪为高手指教一下呗
游客

返回顶部