工具/软件:Linux
您好!
我想问一下在 omapl137平台上 USB 的性能。 阅读 LSP 02.20 Linux 驱动程序数据表,我看到 CDC 设备上达到的最大速度可以是(第24页的表) 36Mbps。 我能不能问为什么这么低? USB 高速应提供480Mbps 左右的吞吐量?
谢谢、
调整数
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平台上 USB 的性能。 阅读 LSP 02.20 Linux 驱动程序数据表,我看到 CDC 设备上达到的最大速度可以是(第24页的表) 36Mbps。 我能不能问为什么这么低? USB 高速应提供480Mbps 左右的吞吐量?
谢谢、
调整数
非常感谢 Randy 在这里的扩展。 感谢您的支持。
我知道 USB 会有一些开销、CDC 会有一些开销。 如果我们甚至假设这些传输速率为20%、则有效公布的传输速率将为43Mbps。 这仍然比我预期的慢10倍。 正如 Randy 所指出的、我想知道阻塞在哪里。 Linux、ARM9、ARM 时钟、外设时钟、USB 驱动程序、 设备驱动程序、EDMA?
感谢您的帮助
谢谢、
调整数
您好 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、
DMA 不是为了使复杂、而是为了帮助 CPU 实现自由。 使用 DMA 肯定有优势,否则为什么芯片中会有 DMA? 它有助于传输大量数据。 由于您以32位为例、它看起来很复杂。 但在大多数情况下都不是这样、因为批量数据是以大容量存储等实际用例发送的。
我知道。
2.如果每次都没有配置 USB,USB 控制器就不能自由运行和传输垃圾数据,即使我们没有/打算发送? 对于无 DMA 运行以在不需要时发送垃圾数据的情况也是如此。
情况不应如此。
3.我不知道 DSP RAM 以及如何配置 DSP RAM? 您是说 DSP 可以访问 USB 控制器吗? 您能再解释一下吗?
您可以 使用链接器命令文件配置 DSP RAM、是的、DSP 可以访问 USB 控制器。
从您所说的软件设计来看、ARM 中似乎没有其他代码运行、其唯一目的是将数据传输到 USB。 遗憾的是、OMAPL137中的 ARM9是一款应用处理器、它的工作要比这多。
是的、这是预期的。
我认为对话不会在任何地方进行、所以我将把它留在这里。
感谢您的帮助、
调整数