11 Replies Latest reply on Aug 5, 2018 9:15 PM by yyca

    CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败

    xwf72_3551651

      @我使用CYUSB3KIT-003 EZ-USB FX3 TM开发板,下载了USBMassStorageDemo固件,SuperSpeed枚举都是正常的,为了验证HighSpeed的枚举情况,我用了一根2.0的线材进行测试,测试了很多主机,枚举结果都是正常的,只有一款主机的其中一个接口(一台电视机中的一个USB3.0接口)枚举失败了,而这个主机接口我用别的U盘或移动硬盘都是枚举正常的,并且从捉包工具和读取文件的速度确认是高速枚举正常。

       

      下图是枚举失败时我捉包工具的截图,从图中来看是红圈中缺少一个ACK包,也就是FX3在这个地方没有返回ACK包,从而引起了主机枚举失败。

      11.png

      下图是我用一个普通U盘的在同一个主机接口的枚举截图,该截图枚举结果是正常的:

      22.png

       

       

      我现在是怀疑官方的底层代码还是有一些兼容性的BUG。

       

      另外补充一下,如果我在代码中做了很小的修改,就是通过增加CyU3PUsbForceFullSpeed (CyTrue);强制为FULL SPEED的话,枚举就正常了。yycazheng.rong.14_2919396yliu

        • 1. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
          yyca

          Hi xuweifeng,

           

          请把你测试的工程发出来,我们这边测试下。

          • 2. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
            xwf72_3551651

            33.png

            就是官方的原例子,我什么代码都没改,这个例子我测试了很多主机,都可以正常枚举,只有一款电视机的一个USB3.0接口才出现这种2.0高速枚举失败的情况,该电视机还有一个USB2.0接口也能正常枚举,我的判断是跟这个电视机的主机有关系,但仍然觉得应该是FX3底层固件的问题。

             

            如果需要的话,我也可以把电视机寄给你进行分析。

             

            44.png

            • 3. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
              yyca

              xu weifeng 撰写:

               

              只有一款电视机的一个USB3.0接口才出现这种2.0高速枚举失败的情况,该电视机还有一个USB2.0接口也能正常枚举

               

              你是说Fx3的开发板,同样的Mass storage 的固件,在这个电视的USB3.0接口上2.0枚举失败,而在这个电视的另一个USB2.0的接口上则是可以正常枚举的?是这个意思吗?

              • 4. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
                xwf72_3551651

                是的,是您说的这样的,但千万不要理解成这台电视机的这个USB3.0接口有问题,因为我用普通的2.0U盘、3.0移动硬盘、2.0读卡器等,去验证这个接口,都能正常枚举,而且我也用仪器去分析,确定都是2.0高速枚举OK。

                • 5. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
                  xwf72_3551651

                  yyca您好:能帮忙再分析一下我的这个问题吗,这个问题还没解决,这个问题又必须得解决,已经困扰了我好长时间。

                   

                  或者说有没有别的渠道可以获取到Cypress直接的技术支持。

                   

                  谢谢了。

                  • 6. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
                    yyca

                    Hi xu weifeng,

                     

                    前面问题中你提到,Fx3在你的电视的USB的接口上会枚举失败,我想问下。

                    1. 如果枚举失败,电视端是否有类似Windows的设别管理器或者Linux的/dev 可以查看设备挂载?

                    2. 如果不烧录固件,bootloader启动的话,是否可以正常枚举为USB2.0的设备?

                    3. 如果step2 可以正常枚举为USB2.0,那么将固件中USB2.0设备描述符的bcdClass从USB2.1 改为USB2.0是否会不一样?

                    4. 你截图所示的USB抓包软件我没有用过,你能解释下对应到没有ACK的那次USB transfer是什么吗?

                     

                    期待你的测试和回复。

                    • 7. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
                      xwf72_3551651

                      Hello yyca, 感谢您的回复,我一直在期待您的答复,因为我实在不知道还能找谁来技术支持我。

                      1、是一台成品电视机,应该是安卓系统,没有类似设备管理器,也看不到/dev目录。

                      2、如果不烧录固件,bootload启动的话,也枚举不了,捉包工具捉到的信息与下载USBMassStorageDemo相似,也是FX3返回设备描述符后,主机返回应答,然后FX3不返回ACK,如下图:

                      66.png

                      3、我试过把描述符2.1改为2.0也不行。

                      4、那是USB数据传输的标准协议,我稍后找到相关协议再附上来。

                      • 8. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
                        xwf72_3551651

                        “4. 你截图所示的USB抓包软件我没有用过,你能解释下对应到没有ACK的那次USB transfer是什么吗?”

                        关于这个问题我补充如下:

                        1.按照USB标准规定,设备刚插入主机的时候,USB主机会通过控制传输(Control Tranfer)读取设备描述符,控制传输包含三个阶段:

                              1) 建立阶段(Setup)

                              2) 数据阶段(无数据控制没有此阶段)(DATA)

                              3) 状态阶段(Status)

                        2. 出问题的地方属于控制传输的状态阶段,由于是读设备描述符,因此这里HOST返回给DEVICE的状态,分解到包层面的话,HOST返回数据给DEVICE,需要DEVICE返回ACK包。

                        具体你可以参考USB标准文档,我是参考下面链接中的文章分析的:

                        USB协通讯议(很好的一篇文章) - CSDN博客

                         

                         

                        • 9. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
                          xwf72_3551651

                          用FX3的BOOTLOAD固件去枚举我之前没有尝试过,但今天尝试了,发现跟USBMassStorageDemo的情况是一样的,除了FX3返回的设备描述符内容不一样外,其它都一样。我把BOOTLOAD固件的开发板插到这台电视机的另一个USB2.0接口上,枚举就成功了,如下图:

                          77.png

                           

                          那么从这个现象来看就不是固件程序的问题了,好像是属于电气性能或者时序性能不兼容的问题,或者说最底层寄存器级别的固件问题。

                          如果是这样的话,有没有可能解决呢,我能不能把东西(一块电视主板和一个电源适配器)寄给你去帮我分析一下呢?

                          • 10. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
                            xwf72_3551651

                            yyca 能不能再帮我分析一下我的这个问题,我还在等待。

                            • 11. Re: CYUSB3KIT-003 EZ-USB FX3 TM高速枚举失败
                              yyca

                              Hi Xu weifeng,

                               

                              不好意思,上周工作较忙,没有及时回复你的问题。

                              1. 看到你说在固件里增加了CyU3PUsbForceFullSpeed (CyTrue),

                                另外补充一下,如果我在代码中做了很小的修改,就是通过增加CyU3PUsbForceFullSpeed (CyTrue);强制为FULL SPEED的话,枚举就正常了

                                   那么你做了如上修改后,是否FX3就可以枚举为USB2.0设备?

                              2. 如我前面所述,

                              4. 你截图所示的USB抓包软件我没有用过,你能解释下对应到没有ACK的那次USB transfer是什么吗?

                              我的意思是:你截图的软件我并没有用过,对它的排版不了解,我不能明白你所指的ACK是属于哪一次transfer/transaction的。是属于前面的get_dscr的transfer/transactiion?

                              例如下面的USB trace,展开的是一次host获取device 描述符的transfer,

                              BaiduShurufa_2018-8-6_12-13-12.bmp

                               

                              3. FX3 是经过了USB协会兼容性认证的产品,所以在USB兼容性方面,目前是有认证的。

                               

                              综上,如果需要进一步定位问题,需要你那边提供下USB协议分析仪获取的trace信息。对于你截图的软件,我目前没有更多的建议。