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.

[参考译文] AM623:"SLOW"设备 FS 设备上的 USB-CDC 吞吐量问题

Guru**** 2794745 points

Other Parts Discussed in Thread: AM623

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1623234/am623-throughput-usb-cdc-issue-on-slow-device-fs-device

器件型号: AM623

对于 USB 芯片或 dwc3 驱动程序、每 1ms 帧的事务数有限制、或者它可以从放弃到下一帧的设备接收的数量或 NAK。  我们有一款设备在大部分时间都能正常工作、但必须处于边缘。  它将进入一个状态,它得到 NAK 并陷入一个坏的状态。

 

模拟与 Beagle USB 在坏的状态下、我们看到:

0,,2428,0:02.450.884,86.041 us,64 B,,01,03,IN txn   [3 POLL]
0,,2433,0:02.450.978,86.020 us,64 B,,01,03,IN txn   [3 POLL]
0,,2439,0:02.451.827,51.041 us,64 B,,01,03,IN txn
0,,2443,0:02.451.884,85.895 us,64 B,,01,03,IN txn   [3 POLL]
0,,2448,0:02.451.977,85.875 us,64 B,,01,03,IN txn   [3 POLL]
0,,2454,0:02.452.827,51.291 us,64 B,,01,03,IN txn
0,,2458,0:02.452.885,85.791 us,64 B,,01,03,IN txn   [3 POLL]
0,,2463,0:02.452.977,85.791 us,64 B,,01,03,IN txn   [3 POLL]
0,,2469,0:02.453.827,51.041 us,64 B,,01,03,IN txn
0,,2473,0:02.453.884,85.791 us,64 B,,01,03,IN txn   [3 POLL]
0,,2478,0:02.453.977,85.645 us,64 B,,01,03,IN txn   [3 POLL]
0,,2484,0:02.454.827,51.291 us,64 B,,01,03,IN txn
0,,2488,0:02.454.885,85.791 us,64 B,,01,03,IN txn   [3 POLL]
0,,2493,0:02.454.977,85.708 us,64 B,,01,03,IN txn   [3 POLL]

 

这里有几个 3s、所以不要混淆它们。 基本上它尝试 3 个传输(与一些 NAK ) [ 3 轮询]是 3 NAK 之前通过。  我们得到 3 个 64 字节的数据包。  我们是否可以增加 NAK 或在它放弃之前发生的传输数量、并且不请求更多数据包?

 

当它是在坏的状态 — 它只是勉强足够慢,在那里它永远不会赶上,我们会丢失数据包。

我们也可以修改器件、但由于对器件进行测试的一些更高要求、在 AM62x 上找到权变措施可能非常麻烦。

 

以下是我尝试过的一些操作。

设置 parkmode_disable_hs_quirk 会使其更糟(有点符合预期)
使用补丁将 xHCI IMOD_INTERVAL 调整为 0(似乎没有帮助)
将读取的 URB CDC-ACM.c 数字从 2 增加到 8(没有帮助)

谢谢

布莱斯

 

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

    当它处于良好状态时、它看起来更像这样:

     

    0,,2626,0:00.154.300,51.375 us,64 B,,01,03,IN txn
    0,,2630,0:00.154.368,73.062 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2635,0:00.154.458,72.687 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2640,0:00.154.547,72.625 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2646,0:00.154.637,713.770 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2651,0:00.155.368,93.979 us,64 B,,01,03,IN txn   [2 POLL]
    0,,2656,0:00.155.479,72.541 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2661,0:00.155.568,72.708 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2667,0:00.156.300,51.229 us,64 B,,01,03,IN txn
    0,,2671,0:00.156.368,72.479 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2676,0:00.156.458,72.791 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2681,0:00.156.547,94.291 us,64 B,,01,03,IN txn   [2 POLL]
    0,,2687,0:00.157.300,51.041 us,64 B,,01,03,IN txn
    0,,2691,0:00.157.368,93.979 us,64 B,,01,03,IN txn   [2 POLL]
    0,,2696,0:00.157.479,72.645 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2702,0:00.157.568,782.958 us,64 B,,01,03,IN txn   [2 POLL]
    0,,2707,0:00.158.369,94.208 us,64 B,,01,03,IN txn   [2 POLL]
    0,,2712,0:00.158.479,72.791 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2717,0:00.158.569,72.458 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2723,0:00.159.300,50.958 us,64 B,,01,03,IN txn
    0,,2727,0:00.159.369,72.437 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2732,0:00.159.458,72.541 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2737,0:00.159.547,94.041 us,64 B,,01,03,IN txn   [2 POLL]
    0,,2743,0:00.160.301,50.875 us,64 B,,01,03,IN txn
    0,,2747,0:00.160.369,72.458 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2752,0:00.160.458,72.458 us,64 B,,01,03,IN txn   [1 POLL]
    0,,2757,0:00.160.547,94.062 us,64 B,,01,03,IN txn   [2 POLL]
    0,,2763,0:00.161.301,50.770 us,64 B,,01,03,IN txn

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

    您好:Bryce、

    请先帮助我了解用例的总体情况。

    AM623 USB 是否处于主机模式 (xHCI) 且连接了 USB CDC-ACM 器件? 器件是全速 USB 接口吗?

    问题出在 AM623 接收来自 CDC-ACM 器件的串行数据吗?

    您能否解释一下这种情况下的“框架“?

    您在 AM623 上运行的内核版本是什么?

    我有 Beagle USB 逻辑分析仪、但我从不会以文本格式读取其跟踪、因此无法完全理解您提供的总线跟踪中的问题。

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

    尊敬的 Bin:

    内核 版本为 ti-linux-kernel-11.02.08。  XHCI 处于主机模式、从该器件连接一个复合 (2 CDC-ACM)。  它是全速的。

    用例是我们有大约 220kB/s 的 USB 数据从器件从 USB CDC-ACM 模式传输到 AM623。  当它处于坏状态时,它将得到大约 170kb/s 和丢失数据。

    引擎盖下处于良好状态(驱动器还是 USB 器件?) AM623 主机将请求数据并获取 64 字节数据或 NAK。  如果它 NAK 并发送数据请求、它将在 beagle 跟踪中显示[1 poll]。  它可以 NAK 的原因有很多、包括设备尚未排队 64 字节。  它将使用整个 1ms 来发送更多数据包。

    在坏的状态下,我们得到了几个 NAK。  它将放弃(经过太多的 NAK?) 200us 后停止请求数据包。  例如、如果我们从上面看时序

    0,,2469,0:02.453.827,51.041 us,64 B,,01,03,IN txn
    0,,2473,0:02.453.884,85.791 us,64 B,,01,03,IN txn   [3 POLL]
    0,,2478,0:02.453.977,85.645 us,64 B,,01,03,IN txn   [3 POLL]
    0,,2484,0:02.454.827,51.291 us,64 B,,01,03,IN txn 0,,2488,0:02.454.885,85.791 us,64 B,,01,03,IN txn [3 POLL] 0,,2493,0:02.454.977,85.708 us,64 B,,01,03,IN txn [3 POLL]



    它会得到一个 64 字节的数据包  

    02.453.827
    02.453.884
    (3 naks)
    02.453.977
    (3 naks)

    Then stops asking after .977 until the next 1ms window at
    02.454.827

    If you look at trace on a logic analyzer. It will give up after ~317us and not do anything else for the remainder.
    At that point we fall behind until we run out of buffer on the device

      


    因此、需要认为 USB 驱动程序或实际的器件会在线路上有太多 NAK 之后放弃、直到接下来的 1ms。  可能会有一些限制?

    布莱斯

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

    您好:Bryce、

    感谢您的解释。 我现在更好地理解了。

    您能否以原始格式 (*。tdc) 附加 USB 总线跟踪?

    您是否可以在 Linux PC 上附加 CDC-ACM 器件、运行命令“lsusb -v -d“ “并提供输出?