![如何诊断嵌入式Linux USB 传输速度慢?](https://linux22.com/image/91754/%E5%A6%82%E4%BD%95%E8%AF%8A%E6%96%AD%E5%B5%8C%E5%85%A5%E5%BC%8FLinux%20USB%20%E4%BC%A0%E8%BE%93%E9%80%9F%E5%BA%A6%E6%85%A2%EF%BC%9F.png)
我有一个带有 Cyclone V SE 的板,其中包含 ARM CortexTM-A9 MPCore(单核)。在这块板上我运行使用 Buildroot 构建的 linux 4.1.15。测试 USB 时发现,批量 OUT 传输的运行速度约为 20MB/s,而批量输入传输的运行速度约为 10MB/s。对于此测量,我在设备上使用了 g_zero,并在主机上使用了一个简单的基于 libusb 的程序。
第二次测量是在设备端使用 g_mass_storage 并在主机端使用 dd 完成的。结果相同。
最后一次测试是使用 ConfigFS、FunctionFS 和我的用户空间应用程序(从 RAM 读取数据或向 RAM 写入数据)的组合完成的。输入速度为 10MB/s,但输出速度高达 40MB/s。我预计速度大致相同(至少在使用 RAM 时)。
我检查了协议中的大量内容USB简而言之并且没有看到任何明显的原因说明为什么 IN 应该比 OUT 慢得多。
现在我知道有太多的事情可能导致这种情况,并且我不期望得到“缓慢是由......引起的”答案。但是我应该在哪里挖掘以及应该使用什么工具来追踪它?