我有一个带有 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 慢得多。
现在我知道有太多的事情可能导致这种情况,并且我不期望得到“缓慢是由......引起的”答案。但是我应该在哪里挖掘以及应该使用什么工具来追踪它?