打印

usb cdc acm模拟串口,数据通信bulk不通,【求助】

[复制链接]
10776|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chen053611|  楼主 | 2012-12-24 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位高手,我用xlp432芯片的usb接口在boot下做cdc类模拟串口,现在枚举已经成功,连接串口工具已经成功,但是cdc acm的67个字节的配置描述符中的中断端点没有使用,现在发现数据通信usbputc 和usbgetc都不通。xlp432(cpu)作为usb slave存在。
1.in操作不通的原因,可能是in 令牌包没有及时的到来,没有in令牌包,其他操作都不行。请问各位高手,host是根据什么发送in 令牌包的。
2.out操作不通的原因,可能是rxfifo中的数据有残留,清空fifo发现,里面有一个不变的数据。也可能是host(pc windows-xp usbser.sys)没有发送的原因。用bushound抓包发现,usbser.sys并没有发送数据(可能是传输不成功,抓包没有抓到的原因),也可能是没有使用中断端点的原因,也可能是超时设置的原因。
3.在网上查看实例发现,在枚举set configuration后,中断端点会向后发送10个字节的数据(a1 20 00 00 00 00 02 00 8b 06),不知道代表什么意思。好像8b是个状态。
4.在连接串口工具的时候,发现在setup包是21 20 00 00 00 00 07 00时,host向slave发送7个字节的数据,发送过程成功后,发现实际传输的是8个字节,芯片size寄存器却只是变化7个字节,rxfifo中有数据残留,请问一下,各位前辈在模拟串口的时候,这个地方是怎么处理的?
下面是端点2(out) host上,bushound上的包,后面的unkown是驱动,usbhub和usbser都没有发送报文,寻求原因???
20.2                                 URB    48 00 09 00  00 00 01 c0  BULK/INT XFER           38.1.0        2012-12-24  10:45:59.193  unknown

相关帖子

沙发
chen053611|  楼主 | 2012-12-24 11:06 | 只看该作者
自己顶下,麻烦各位前辈指点一下!!!

使用特权

评论回复
板凳
chen053611|  楼主 | 2012-12-24 17:07 | 只看该作者
别沉了啊,前辈们指点一下啊

使用特权

评论回复
地板
wuzx-61| | 2012-12-24 20:25 | 只看该作者
静候,帮顶一下!

使用特权

评论回复
5
john_lee| | 2012-12-25 01:00 | 只看该作者
a1 20 00 00 00 00 02 00 8b 06 是 device 发出的 serial state notification,见 usbcdc11 第 6.3.5 节。
21 20 00 00 00 00 07 00 是 host 发出的 set line coding,见 usbcdc11 第 6.2.12 节。

使用特权

评论回复
6
chen053611|  楼主 | 2012-12-25 09:55 | 只看该作者
john_lee 发表于 2012-12-25 01:00
a1 20 00 00 00 00 02 00 8b 06 是 device 发出的 serial state notification,见 usbcdc11 第 6.3.5 节。
...


能把usbcdc11这个文件传给我吗?这个应该是usbcdc的协议吧,我就是下不到能看的,下到过一个,pdf打开是乱码。我的邮箱是chen053611@163.com
还有问题是 a1 20 00 00 00 00 02 00 8b 06这个serial state notification是usb cdc acm模拟串口必须要做的吗?网上很多说法说,中断端点操作不是必须的,也就是说,这个命令不一定需要是吗?

使用特权

评论回复
7
john_lee| | 2012-12-25 10:13 | 只看该作者
http://www.usb.org/developers/devclass_docs/usbcdc11.pdf
notification 端点是可选的,就是说,你可以连这个端点都不要,那么 notification message 自然都省了。

使用特权

评论回复
8
chen053611|  楼主 | 2012-12-25 10:26 | 只看该作者
chen053611 发表于 2012-12-25 09:55
能把usbcdc11这个文件传给我吗?这个应该是usbcdc的协议吧,我就是下不到能看的,下到过一个,pdf打开是 ...

我下到了,可是全是英文的,有中文版的吗?看着真费劲,英语不好啊

使用特权

评论回复
9
chen053611|  楼主 | 2012-12-25 10:30 | 只看该作者
john_lee 发表于 2012-12-25 10:13
http://www.usb.org/developers/devclass_docs/usbcdc11.pdf
notification 端点是可选的,就是说,你可以连 ...

对于host获取配置描述符的时候,您的意思是对于接口0的中断端点描述符可以直接干掉??
可是串口改变属性的时候,不是说要用到它吗?比如改变波特率等,可能以后usb模拟串口后,还要用它提高波特进行文件传输呢

使用特权

评论回复
10
john_lee| | 2012-12-26 12:27 | 只看该作者
那个中断端点是 IN 类型,device 到 host 的单向 pipe,串口改变设置(波特率等),明显是 host 到 device 的传输啊,明白没?

就是说设置串口的属性,不可能使用那个“中断端点”来传输设置命令和数据,实际上这些命令是用的默认端点,就是所谓的 endpoint 0。
再说一次,这个中断端点只用来 device 通知 host,串口的状态发生了变化,比如流控状态,振铃状态、奇偶校验错误状态等等。如果你的 device 没有这些状态通知功能,那么这个中断端口就根本不会用到,即使你在描述符中定义了它。既然从不用它,与其空占着一个硬件端口,还不如把它省略掉,USB协议的制定者这点不可能想不到。

使用特权

评论回复
11
chen053611|  楼主 | 2012-12-26 21:07 | 只看该作者
john_lee 发表于 2012-12-26 12:27
那个中断端点是 IN 类型,device 到 host 的单向 pipe,串口改变设置(波特率等),明显是 host 到 device  ...

嘿嘿,好像明白了,那就不用就是了,虽然占一个硬件端口,占就占了,呵呵,我今天调试,发现这个芯片这个部分做的太复杂了,txfifo中,我竟然没有数据,老是发不出去东西,真郁闷。现在0长度的包能发出去,抓包器只能抓到0长度的包。发送有长度的就失败,真的闹心啊。
不光txfifo有问题,rxfifo也有问题,在连接串口工具的时候,这个命令21 20 00 00 00 00 07 00,host发出的set line coding命令,host给的是8个字节,不是7个,芯片给移动了7个,还有一个在rxfifo中,清除不掉,气了我个半死。

使用特权

评论回复
12
chen053611|  楼主 | 2012-12-27 20:14 | 只看该作者
john_lee 发表于 2012-12-26 12:27
那个中断端点是 IN 类型,device 到 host 的单向 pipe,串口改变设置(波特率等),明显是 host 到 device  ...

我终于找到发送和接受usb包不通的原因了,竟然是同一个原因,但是临时解决不了,准备找技术支持。usb接口,除了端点0,其他端点进行传输的时候,DMA不好用,在fifo和内存之间,DMA不工作,发送包的时候,数据在内存中,DMA不会写到fifo中,同样的道理,收包的时候,也不会写到内存中。所以不好用。
查遍了芯片手册,不知道哪里配置错了,郁闷死了。难道真的是芯片的bug吗?

使用特权

评论回复
13
chen053611|  楼主 | 2012-12-29 15:47 | 只看该作者
john_lee 发表于 2012-12-26 12:27
那个中断端点是 IN 类型,device 到 host 的单向 pipe,串口改变设置(波特率等),明显是 host 到 device  ...

大哥,最后一个问题,回答完马上给分,我不会给分,我这几天没注意到这个问题,不好意思。
  20.3                                 USTS   c0000011                  xact error           17418.1.0        2012-12-29  15:39:10.562  usbser        
  20.3                                 URB    48 00 09 00  11 00 00 c0  BULK/INT XFER        17418.2.0        2012-12-29  15:39:10.562               
                                              20 d3 f0 88  22 00 00 00                       17418.2.8                                                
                                              8c 77 b2 89  03 00 00 00                       17418.2.16                                               
                                              00 00 00 00  04 00 3e 88                       17418.2.24                                               
                                              60 e5 34 88  00 00 00 00                       17418.2.32                                               
                                              ff ff ff ff  0d f0 ad de                       17418.2.40                                               
                                              00 00 00 00  00 00 00 00                       17418.2.48                                               
                                              00 00 00 00  00 00 00 00                       17418.2.56                                               
  20                                   IRP    06 00 fc 01  00 00 00 00                       17418.3.0        2012-12-29  15:39:10.562               
                                              00 00 00 00  00 00 00 00                       17418.3.8                                                
                                              a8 81 d8 88  a8 81 d8 88                       17418.3.16                                               
                                              01 00 00 c0  00 00 00 00                       17418.3.24                                               
                                              00 01 05 06  00 00 00 04                       17418.3.32                                               
                                              00 00 00 00  00 00 00 00                       17418.3.40                                               
                                              00 00 00 00  00 00 00 00                       17418.3.48                                               
                                              00 00 00 00  00 00 00 00                       17418.3.56                                               
  20                                   STAK   0f 00 00 e0  c4 67 f3 88  SUBMIT_URB           17418.4.0        2012-12-29  15:39:10.562               
                                              00 00 00 00  03 00 22 00                       17418.4.8                                                
                                              00 00 00 00  30 30 77 89                       17418.4.16                                               
                                              00 00 00 00  4e e6 e5 a8                       17418.4.24                                               
                                              a8 54 4e 88                                    17418.4.32                                               
  20.1                                 USTS   c0000011                  xact error           17419.1.0        2012-12-29  15:39:10.562  usbser        
  20.1                                 URB    48 00 09 00  11 00 00 c0  BULK/INT XFER        17419.2.0        2012-12-29  15:39:10.562
不知道什么意思?
20是我的设备,设备的3端点和1端点没有回应吗?1端点我就没有发送东西啊,这个抓包过程怎么解释啊

使用特权

评论回复
14
chen053611|  楼主 | 2012-12-29 15:48 | 只看该作者
john_lee 发表于 2012-12-25 10:13
http://www.usb.org/developers/devclass_docs/usbcdc11.pdf
notification 端点是可选的,就是说,你可以连 ...

大哥,最后一个问题,回答完马上给分,我不会给分,我这几天没注意到这个问题,不好意思。
  20.3                                 USTS   c0000011                  xact error           17418.1.0        2012-12-29  15:39:10.562  usbser        
  20.3                                 URB    48 00 09 00  11 00 00 c0  BULK/INT XFER        17418.2.0        2012-12-29  15:39:10.562               
                                              20 d3 f0 88  22 00 00 00                       17418.2.8                                                
                                              8c 77 b2 89  03 00 00 00                       17418.2.16                                               
                                              00 00 00 00  04 00 3e 88                       17418.2.24                                               
                                              60 e5 34 88  00 00 00 00                       17418.2.32                                               
                                              ff ff ff ff  0d f0 ad de                       17418.2.40                                               
                                              00 00 00 00  00 00 00 00                       17418.2.48                                               
                                              00 00 00 00  00 00 00 00                       17418.2.56                                               
  20                                   IRP    06 00 fc 01  00 00 00 00                       17418.3.0        2012-12-29  15:39:10.562               
                                              00 00 00 00  00 00 00 00                       17418.3.8                                                
                                              a8 81 d8 88  a8 81 d8 88                       17418.3.16                                               
                                              01 00 00 c0  00 00 00 00                       17418.3.24                                               
                                              00 01 05 06  00 00 00 04                       17418.3.32                                               
                                              00 00 00 00  00 00 00 00                       17418.3.40                                               
                                              00 00 00 00  00 00 00 00                       17418.3.48                                               
                                              00 00 00 00  00 00 00 00                       17418.3.56                                               
  20                                   STAK   0f 00 00 e0  c4 67 f3 88  SUBMIT_URB           17418.4.0        2012-12-29  15:39:10.562               
                                              00 00 00 00  03 00 22 00                       17418.4.8                                                
                                              00 00 00 00  30 30 77 89                       17418.4.16                                               
                                              00 00 00 00  4e e6 e5 a8                       17418.4.24                                               
                                              a8 54 4e 88                                    17418.4.32                                               
  20.1                                 USTS   c0000011                  xact error           17419.1.0        2012-12-29  15:39:10.562  usbser        
  20.1                                 URB    48 00 09 00  11 00 00 c0  BULK/INT XFER        17419.2.0        2012-12-29  15:39:10.562
不知道什么意思?
20是我的设备,设备的3端点和1端点没有回应吗?1端点我就没有发送东西啊,这个抓包过程怎么解释啊

使用特权

评论回复
15
john_lee| | 2012-12-29 17:06 | 只看该作者
不要什么信息都抓,观察数据传输,只需要抓:
CTL,IN,OUT,RESET,USTS。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

0

粉丝