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/OMAPL137-HT:USB 性能

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/599301/linux-omapl137-ht-performance-of-usb

器件型号:OMAPL137-HT

工具/软件:Linux

您好!  

我想问一下在 omapl137平台上 USB 的性能。 阅读 LSP 02.20 Linux 驱动程序数据表,我看到 CDC 设备上达到的最大速度可以是(第24页的表) 36Mbps。 我能不能问为什么这么低? USB 高速应提供480Mbps 左右的吞吐量?

谢谢、

调整数

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

    首先也是最重要的、480Mbps 甚至包括协议数据包。 因此、如果您仅考虑数据而不考虑协议(可能占8-10%)、则该速率将低于480Mbps。 接下来是传输类型。 如果是批量传输、则比等时传输慢。 本可以为 ISO 提供 USB 编号。 但 CDC 使用批量。 与指定速度相比、速度降低的另一个原因。 然后是 CDC 协议开销。 但这不应该是一个大问题。 在 USB 协议级别、这些是我能想到的为数不多的。

    其主要原因是、即使 USB 控制器是2.0兼容控制器、并且能够以指定的速度发送/接收数据、数据的实际使用者/发送者也是嵌入式控制器。 因此、如果 OMAPL137无法更快地向 USB 控制器发送数据、则 USB 速度甚至会降低。 这将低于高性能台式机通过连接到相同的 USB 2.0兼容控制器所能实现的性能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dwarakesh、

    关于这一点、这个用户正在寻找的答案是"OMAPL137是否不能更快地发送数据"。 您已经说过、如果器件速度慢、USB 速率将会很慢、但这是我们要知道的问题。 我们想知道器件速度是否太慢、外设速度是否太慢、Linux 驱动程序速度是否太慢、或者是否可以进行任何改进。 456MHz 处理器似乎可以轻松保持5-6MB 的数据速率。

    如果驱动程序声称支持高速 USB、则从最大480Mbps 中获得36Mbps 的速度会不合理地降低。

    您和您的团队对该器件和 Linux 支持非常了解、因此如果您可以进一步了解低速结果的原因、我们将不胜感激。

    您是否在 OMAPL137上看到过通过 TI-RTOS 对 USB 的支持? 也许摆脱 Linux 开销会大大提高性能。

    感谢您的快速响应。 任何新信息也将不胜感激。

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

    非常感谢 Randy 在这里的扩展。 感谢您的支持。  

    我知道 USB 会有一些开销、CDC 会有一些开销。 如果我们甚至假设这些传输速率为20%、则有效公布的传输速率将为43Mbps。 这仍然比我预期的慢10倍。 正如 Randy 所指出的、我想知道阻塞在哪里。 Linux、ARM9、ARM 时钟、外设时钟、USB 驱动程序、 设备驱动程序、EDMA?

    感谢您的帮助

    谢谢、

    调整数

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

    "Linux、ARM9、ARM 时钟、外设时钟、USB 驱动程序、 设备驱动程序、EDMA?"

    ME:所有这些都是在 OMAPL137中运行的代码或较慢的 OMAPL137硬件的一部分。 但其中大部分是 OMAP 控制器发送到 USB 控制器的速率、这会降低 USB 性能。

    2."相对而言、此用户查找的答案是"OMAPL137是否无法更快地发送数据"

    我:这是我试图表达的观点。 OMAPL137无法更快地发送数据传输。 为什么它很慢、是因为第1点中的提问/指出的原因的组合。

    3.我们想知道设备速度是否太慢、外设速度是否太慢、或者 Linux 驱动程序速度是否太慢。

    ME:OMAPL137比 PC 慢。 因此器件很慢。 USB 外设速度不能太慢、因为与我连接到 PC 的挂起外设相同、它使用 dd 命令为我提供了一个更高的数字。 OMAPL137中的 Linux 驱动程序速度较慢、因为 OMAPL137速度较慢。

    4.如果驱动程序声称支持高速 USB,则从最大480Mbps 中获得36Mbps 的速度将不合理地降低。

    我:驾驶员从不会直接声称这一点、因为如果让驾驶员在非常慢的控制器中运行、会怎么样。 它由 USB 2.0声明。 因此、USB 2.0控制器可以/应该提供接近480Mbps 的数据速率。 但是、与以更高速度运行的 PC/台式机相比、如果 USB 2.0控制器以非常慢的速率馈送数据、情况会怎样。

    5.您是否在 OMAPL137上看到过通过 TI-RTOS 对 USB 的支持? 也许摆脱 Linux 开销会大大提高性能。

    ME:BareMetal 代码的开销甚至比 TI-RTOS 更低。 但它只能避免软件的使用(并因此进行了小幅改进)、但不会显著提高性能。 无论是裸机代码还是 TI-RTOS、它仍然在同一硬件上运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dwarakesh、  

    感谢您的回复。  

    您的回复基于这样一个前提:OMAPL137速度较慢、无法以足够快的速度向 USB 控制器馈送数据。 假设 我处于批量传输模式、我将尝试在这里进行数学运算。 纠正我的不足。  

    要使 USB 控制器输出60Mb/s (480Mb/s)、必须每66ns 馈送32位大小的字。  

    时钟频率为456MHz 的 OMAPL137每2.2ns 执行一条指令。 要完成任务、它将执行30个指令周期。  在 66ns 内传输32位大小的字时、裸机代码是否会出现问题?

    谢谢、

    调整数

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

    您好!

    它变得越来越有趣。

    我对数学的担忧是假设"要完成工作、就需要执行30个指令周期。"

    如果这是从 R1到 R2的 MOV 指令、我同意您的数学计算。

    但将32位值移动到 USB 控制器时并非如此。

    还涉及其他硬件组件、如 DDR 和 DMA。 我想指出的是、DDR 和 DMA 可以使用自己的频率、而不是456MHz。 假设速度由三个参数中最慢的(CPU、DDR、EDMA)决定、您可能需要考虑 DDR 的速度(可能是150MHz)。 但是、并非所有指令、仅用于存储器相关操作。

    因此、所涉及的代码甚至假定为裸机情况
    1.读取/加载32位值
    2.配置 USB 控制器
    3.配置 DMA 控制器
    4、实际运行 DMA 所需的时间、虽然 CPU 可以自由执行下一条指令、但假定只有一个字节的传输。
    5.函数进入/退出开销(除函数的代码外,我可以看到添加了至少8条指令作为上下文保存等)

    我们需要考虑上述所有5点的说明。 所有5个步骤都需要完成、无论是1字节还是512字节、如果它们是单独发送的。 另外、点1和点4以 DDR 速度执行、而不是以 ARM 速度执行。

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

    为什么我们需要在循环中配置 USB 和 DMA 控制器? 我假设我们正在进行批量传输、在我们开始移动之前、这些内容应该已经开始。 此外、我们不会假设我们使用 EDMA、以便不会使过程复杂化。 我们可以假定处理器负责传输、时间的100%。

    因此、现在我在这种情况下看到的唯一瓶颈是 DDR (实际上、在本例中是 SDRAM)。 您已正确识别、DDR 将以较低的速度运行、从 DDR 加载内容所需的指令周期时间将超过几个。

    如果我们在 DSP 上执行此操作、我们可以使用快速 DSP RAM。 因此、在 DSP 上运行裸机可能会有所帮助。

    谢谢、
    调整数
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    DMA 不是为了使复杂、而是为了帮助 CPU 实现自由。 使用 DMA 肯定有优势,否则为什么芯片中会有 DMA? 它有助于传输大量数据。 由于您以32位为例、它看起来很复杂。 但在大多数情况下都不是这样、因为批量数据是以大容量存储等实际用例发送的。
    2.如果每次都没有配置 USB,USB 控制器就不能自由运行和传输垃圾数据,即使我们没有/打算发送? 对于无 DMA 运行以在不需要时发送垃圾数据的情况也是如此。
    3.我不知道 DSP RAM 以及如何配置 DSP RAM? 您是说 DSP 可以访问 USB 控制器吗? 您能再解释一下吗?

    从您所说的软件设计来看、ARM 中似乎没有其他代码运行、其唯一目的是将数据传输到 USB。 遗憾的是、OMAPL137中的 ARM9是一款应用处理器、它的工作要比这多。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dwarakesh、  

    DMA 不是为了使复杂、而是为了帮助 CPU 实现自由。 使用 DMA 肯定有优势,否则为什么芯片中会有 DMA? 它有助于传输大量数据。 由于您以32位为例、它看起来很复杂。 但在大多数情况下都不是这样、因为批量数据是以大容量存储等实际用例发送的。

    我知道。  


    2.如果每次都没有配置 USB,USB 控制器就不能自由运行和传输垃圾数据,即使我们没有/打算发送? 对于无 DMA 运行以在不需要时发送垃圾数据的情况也是如此。  

    情况不应如此。  


    3.我不知道 DSP RAM 以及如何配置 DSP RAM? 您是说 DSP 可以访问 USB 控制器吗? 您能再解释一下吗?

    您可以 使用链接器命令文件配置 DSP RAM、是的、DSP 可以访问 USB 控制器。  



    从您所说的软件设计来看、ARM 中似乎没有其他代码运行、其唯一目的是将数据传输到 USB。 遗憾的是、OMAPL137中的 ARM9是一款应用处理器、它的工作要比这多。

    是的、这是预期的。  

    我认为对话不会在任何地方进行、所以我将把它留在这里。  

    感谢您的帮助、  

    调整数

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

    您好!

    谢谢、很高兴能与您讨论

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

    同样的 Dwarakesh:)