This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM5728:通过集线器测试USB2模式

Guru**** 2456800 points
Other Parts Discussed in Thread: AM5728, TUSB8041

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/596356/linux-am5728-usb2-test-patterns-through-hub

部件号:AM5728
主题中讨论的其他部件: TUSB8041

工具/软件:Linux

大家好。 这可能是用户错误,意味着我只需要写入几个寄存器,或者可能是我的设计出了问题。 我将在下面粘贴示意图的屏幕截图。

基础知识:我将USB2连接到TUSB4041,该设备可驱动三个USB mini-B插孔。 我知道这不是标准的,但是系统的空间有限。 它基本上可以工作-我们可以将拇指驱动器连接到插孔,传输数据等。我想做一些测试来检查眼图,抖动等。在测试设施中,我们无法在插孔上显示测试模式。 我可以按照以下说明使用调试器将5728 USB端口设置为测试模式: http://processors.wiki.ti.com/index.php/Linux_Core_DWC3_User's_Guide#USB_2.0_Test_Modes。 查询时,处理器会报告它处于命令模式。 但是,我们看不到任何插孔的测试模式。 我们是否需要执行一些操作来告诉处理器将测试模式路由到特定的4041输出?

如果我没有记错,5728没有检测到测试夹具是否插入了插孔。 我觉得这是问题的一部分,但我不知道为什么我们可以检测到拇指驱动器,而不能检测测试仪。 想法?

这可能需要咨询USB专家。

示意图:

非常感谢!

夫人

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    USB专家已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是集线器的功能。 将其移至TUSB4041的支持组。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我希望看到完整的示意图,但无论如何,由于USB设备在集线器后面工作正常,我认为不存在硬件问题。

    我想现在的情况是,测试数据包是在处理器端口的下游发送的,而不是在TUSB4041的下游发送的,你必须让TUSB4041在下游发送测试数据包。
    USB提供了一个Windows工具-如果要执行此操作,您可以从此处下载
    www.usb.org/.../

    这里还有一个文档,介绍如何在Linux中执行此操作
    www.linux-usb.org/.../

    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复,Elias。
    TUSB4041连接到AM5728 -不涉及Windows。
    Linux链接看起来很有希望,但似乎是在发送自己的测试模式,而不是将4041置于测试模式。 或者我错过了什么?
    干杯!
    夫人
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我从未使用过Linux版本,我建议您发送电子邮件至admin@usb.org,他们可以为您指明正确的方向。
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我给他们发了电子邮件,谢谢。 TI应用中的某些人是否必须经历类似的经历才能推出TUSB4041评估板?
    夫人
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们始终使用适用于Windows的USB-IF工具,因为这些是认证研讨会中使用的工具,我在这里找到了更多信息
    http://testusb.com/EHHS.html
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    描述为我单击的测试方法的pdf。 我已通过电子邮件向我所使用的测试室发送电子邮件,以查看他们是否使用了PID VID方法(我想一些专业示波器现在应该内置该方法,或者内置在示波器的附件中)。 如果是,那么我需要知道枚举失败的原因。 如果不是这样,我们也许可以尝试一下。

    TUSB4041是以测试模式响应,还是主机正在响应?

    当我从试验室得到一些答案时,我会回到这个主题。

    谢谢! 夫人

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有两种方法可从 集线器的下游端口获取测试数据包:

    使用USB Test_Force_Enable命令强制集线器通过主机生成的测试数据包。  请注意,此测试数据包可能无法通过USB HS方形眼图测试。  信号质量掩码所需的测试数据包是由测试硬件所连接的端口生成的,而不是重复的测试数据包。

    使用USB Test_Packet命令强制集线器在下行端口上为该特定端口生成测试数据包。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好

    PID VID方法不起作用。 驱动程序识别测试装置已插入,并正确枚举,但仍然没有测试图案。

    那么,JMMN,您能否提供一些详细信息,说明如何将Test_Force_Enable或Test_Packet命令传送到集线器? 我在UART调试器上使用Linux命令行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Michael:

    1)     确保禁用所有Linux USB PM。 如有疑问,请在未被测试的集线器端口中插入一些内容,以防止上游链路挂起。

    2)     下载并构建位于此处的control.C实用程序,将其放入您的Linux映像: https://gitorious.org/usb/usb-tools/source/747ef6547d84b6db45ba8b005ee1e56fe5faa80a:control.c?p=usb:usb-tools.git;a=summary

    (注:我的Linux专家告诉我,应该在目标上构建,而不是在主机上进行交叉编译)

    3)     在Linux命令行运行以下命令:“./control -t 0x23 -r 0x03 -v 0x0015 -i 0x04nn -l 0x00 -c 1 -D 0x0451:0x8044”,其中'nn'表示要测试的端口。

    这应导致输出test_packet。 请告诉我...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为方便起见:

    ./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0401 -l 0x00 -c 1 -D 0x0451:0x8044
    ./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0402 -l 0x00 -c 1 -D 0x0451:0x8044
    ./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0403 -l 0x00 -c 1 -D 0x0451:0x8044
    ./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0404 -l 0x00 -c 1 -D 0x0451:0x8044
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    编辑:注意到注意:关于交叉编译,原始帖子中缺失。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢,DK。 我是硬件人员,所以构建软件不是我的事情,但我会向软件寻求帮助。 是否有方法可以判断是否已内置control.c? 询问是因为我认为我们合作的承包商可能已经完成了建筑工程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您正在询问另一个硬件人员。 ;)

    您可以尝试在映像上运行该命令,并查看其是否执行。 我选中了,但它似乎没有内置于我们的Linux SDK (OS映像)中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哈哈。 我在我们的正常图像上尝试了一下,并收到了一条类似"找不到控件"的消息。 我正在闪烁承包商给我留下的SD卡上的图像。 也许她把它融入其中。
    否则,我将获得一个构建版本。
    我不知道为什么它不是SDK的一部分? 您何时不会在新PCB上进行电气测试?

    编辑:不,也不在测试构建中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件公司试图将SDK保持在合理的大小,因此很少有测试应用程序能够完成。 在这种情况下,只有实施集线器的设计才需要应用程序,因此更难证明其永久包含的合理性。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,进步! 'control'./control -h最初不起作用,但我偶然发现需要对破折号选项进行一些更改。
    在某种程度上,我做了一个lsusb:
    root@am57xx-EVM:~/USB_test_mode# lsusb
    总线003设备003:ID 05e3:f11d Genesys Logic, Inc.
    总线004设备001:ID 1d6b:0003 Linux Foundation
    总线002设备001:ID 1d6b:0003 Linux Foundation
    总线001设备001:ID 1d6b:0002 Linux Foundation
    Bus 003 Device 002 (总线003设备002):ID 0451:8142 Texas Instruments,Inc. TUSB8041 4端口集线器
    总线003设备001:ID 1d6b:0002 Linux Foundation

    “啊哈”说,我的PID是错的。 所以我解决了这个问题。 同时我意识到巴士号码需要是03而不是04。 (AM5728中实际上没有两辆巴士)。 因此,所需的命令应该是:

    ./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0301 -l 0x00 -c 1 -D 0x0451:0x8142
    ./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0302 -l 0x00 -c 1 -D 0x0451:0x8142
    ./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0303 -l 0x00 -c 1 -D 0x0451:0x8142
    ./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0304 -l 0x00 -c 1 -D 0x0451:0x8142

    于是我就大刀阔斧地切断了一根USB连接线并连接了一个示波器(我没有任何类型的测试装置)。 当我在端口1上运行命令时,我以为我看到了一次diff信号摆动,但我从未见过它。 它是否需要另一端的设备才能工作?

    现在,我输入命令,然后返回一个提示符。 如果信号晃动,我就错过了。 当我再次输入时,我收到一条错误消息:

    root@am57xx-EVM:~/USB_test_mode#./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0301 -l 0x00 -c 1 -D 0x0451:0x8142
    root@am57xx-EVM:~/USB_test_mode#./control -t 0x23 -r 0x03 -v 0x0015 -i 0x0301 -l 0x00 -c 1 -D 0x0451:0x8142
    控制信息失败-->-9
    root@am57xx-EVM:~/USB_test_mode#[ USB] 1730.448919 3-1-port1:无法启用。 USB电缆可能损坏?

    最后一点:输入命令一次,然后等待,确保错误消息不是超时的结果。 等了一分钟左右,我猜它不会做任何事情。

    我应该期待什么行为?

    更新:我没有正确设置范围触发器。 重置后,第一次运行控制命令会产生100mV脉冲,缓慢衰减,然后80us后出现60mV脉冲,看起来要短得多。 当我再次发送命令时,大约间隔33 us的短脉冲出现。 当我重复发送命令时,这两种情况交替出现。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我粘贴的PID和拓扑(总线编号)代表不同(非TI)板上的不同TI集线器(本例中为BeagleBone X15)。

    您的lsb不显示实例化的SS根集线器。

    下面是我的:

    root@am57xx-EVM:~ lsusb
    总线002设备002:ID 0451:8140 Texas Instruments,Inc.
    总线002设备001:ID 1d6b:0003 Linux Foundation 3.0 root hub
    总线001设备002:ID 0451:8142 Texas Instruments,Inc.
    总线001设备001:ID 1d6b:0002 Linux Foundation 2.0 根集线器

    您正在使用哪个版本的SDK?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SDK 3.0 Tm2.

    我在USB3上没有集线器-它直接连接到'A'插孔。 当我插入同事的USB3驱动器时,它会枚举。 事实上,我们可以在实验室进行USB3测试。 所以目前我不太关心那辆巴士。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    啊...我现在看到了。 我错误地认为这是一个SS集线器。

    此时,我需要我们的USB软件人员来研究这个问题。 我将转发此主题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    继续我在范围内看到的东西:我看到的那些脉冲是握手过程的一部分吗? 我正在探测的USB电缆仅连接在我的主板插孔上;远端打开-未连接USB设备。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不,听起来不是这样。

    我的SW家伙现在正在为我构建映像。 我希望今天再作努力。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,我现在可以使用了。

    我使用以下命令测试AM572x GP EVM上的三个下行端口:
    CONTROL -t 0x23 -r 0x03 -v 0x0015 -i 0x0401 -l 0x00 -c 1 -D 0x0451:0x8142
    CONTROL -t 0x23 -r 0x03 -v 0x0015 -i 0x0402 -l 0x00 -c 1 -D 0x0451:0x8142
    CONTROL -t 0x23 -r 0x03 -v 0x0015 -i 0x0403 -l 0x00 -c 1 -D 0x0451:0x8142

    此EVM使用与您相同的处理器+集线器。

    问题是control. C实用程序的-i (索引)参数是指USB协议'Windex'字段内容,而不是USB总线编号。 当提供VID:PID时,该实用程序足够智能,可以对正确的设备进行寻址,因此命令中的其他内容无需更改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好吧,这有点奏效,然后在我切换到另一个端口时停止工作。 我尝试了关机后再开机;没有帮助,但可能还有其他一些重置问题。 我宣布问题已解决。
    是否有一个魔术解码器环来显示其他测试模式? 或者这是唯一的一个吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒! 不要忘记始终将拇指驱动器连接到其中一个端口,否则Linux可能(将)挂起集线器。

    您指的是其他哪些测试模式? 对于USB 2.0 ,test_packet是我知道的唯一模式。 还有其他测试模式(test_J,test_K等),但这些模式用于硅本身的认证,而不是对PCB设计进行资格认证。