![USB 测试方法和自动化工具](https://linux22.com/image/1588173/USB%20%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95%E5%92%8C%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%20.png)
我负责设计用于对计算机 USB 端口进行压力(老化)测试的架构。要求尚未确定,而我还有双重复杂任务 — 确定要测试的内容、在什么条件下测试以及使用哪些工具进行测试。我提出了以下初始要求:
- 测试必须自动化——可以从脚本/批处理文件运行;
- 能够使用相同的 USB3.0 设备测试两个接口 - USB2 和 USB3(从而无需手动更换 2.0 和 3.0 设备);
- USB 用于命令/数据传输,我使用哪种设备并不重要,但它必须强调双向通信通道。最简单的选择是 USB 闪存驱动器 3.0 或更高版本,可以连续读取和写入。必须相对便宜且容易。
现在的困难和问题是:
- 您会改进/增加哪些要求?
- 就所用方法和设备而言,您能提出更好的方法吗?
- 回复:USB2/USB3——我无法弄清楚是否可以通过编程方式移除并重新安装 USB 设备,强制其在特定模式下运行;
- USB 是否提供任何通道/通道统计信息 - 例如传输/接收信息(帧/数据包)的大小、重传、错误等;
- 有什么软件可用,最好是开源/免费的?例如,
dd
压力测试是一个选项,但我完全找不到任何提供 USB 统计数据的实用程序。
非常感谢@Ale-chenski
如果您从事生产质量保证业务,则只需检查装配缺陷和连续性损失。这意味着您不需要太过紧张,只需检查所有(当前)5 种 USB 模式(SS+、SS、HS、FS、LS)的连接情况即可。
这似乎是一项很好的任务,可以满足要求。现在进一步的问题 -
如何以最佳、自动化且尽可能经济高效的方式实现这一目标?
也许是标准解决方案?或者是使用标准设备和可用软件的定制解决方案?
好吧,版主不喜欢我“宽泛”的问题,要求我“描述你的情况和你试图解决的具体问题”。所以它们如下:
USB 3.0 闪存驱动器已安装到 USB 3.0 连接器中。我需要重新初始化接口才能在 USB 2.0 模式下使用此驱动器,而无需将其从连接器中移除。我使用什么命令(Linux 和 Windows)?
我想通过 USB 传输尽可能多的数据。Linux 和 Windows 中哪个命令在数据吞吐量方面对 USB 连接的影响最大?
我需要查看通过 USB 接口传输了多少数据,以及检测到了多少传输错误。我该使用什么命令(Linux 和 Windows)?
答案1
这个问题太宽泛了,无法回答。USB 功能受到多种不同因素的影响。
- 主机控制器实现——存在硬件代码的变体,实现和制造裕度可能会导致细微的错误;
- 主机软件驱动的细微细节,特别是在电源管理、端点管理、内存管理方面。
- 物理层信号质量,包括主板走线实现、额外 ESD 保护电路的存在和选择、连接器的质量(尤其是 Gen1-Gen2 速率);
- 链路层测试是每个链路本地的,可能需要在 BIOS/UEFI 级别进行单独配置;
- 电源传输管理,尤其是 Type-C 连接器,其中包括特殊排序形式的电源管理软件及其与 USB 框架的集成。
测试策略大致取决于您在开发中的角色,无论您是处理主机软件/硬件开发活动,还是测试最终生产是否存在装配缺陷。
如果这是关于 OEM 系统开发,则对于 (1) 和 (2) 存在Microsoft 测试套件它使用专门设计的 MUTT 设备并运行数周。
对于 (3),测试使用物理设备、高速 16-40 GHz 示波器、误码率测试仪 (BERT)、模式生成器以及一系列脚本测试。
对于(4),您将需要 USB 协议分析仪,并再次进行一组脚本测试以验证几十个 TD(测试定义)。
一套用于测试硬件的工具的典型成本约为 50 万美元
对于(5),您还需要另一组测试仪。
上述测试确保任何无缺陷的生产系统都具有足够的功能裕度,不会出现“强调命令/数据传输”的问题。
如果您从事生产质量保证业务,则只需检查装配缺陷和连续性损失。这意味着您不需要太过紧张,只需检查所有(当前)5 种 USB 模式(SS+、SS、HS、FS、LS)的连接情况即可。
要全面了解问题的复杂性,你应该先USB实施论坛并审查开发文档和其他指导以及行业提供的内容。