WHQL USB Exposed Port System Test

在 Windows 10 的 WHQL 测试中【参考1】,有一个称为“USB Exposed Port System Test”的项目。这个项目的测试目的是测试当前系统中对外的 USB 3.0接口和2.0接口的配对情况。比如,一个USB3.0 的端口构成如下,实际上可以看作是 2.0的信号 加上 3.0的信号组成的。而在实际设计上, USB2.0 和 3.0 的线并不是配对的,比如 USB 2.0 的 Port 1 可以和 USB 3.0 的Port 2共同组成这个端口。这对于 Chipset 来说是知道的,但是 Windows 并不知道这样的配对方式。

image001

image002

因此,通知 Windows 组合方式的任务就落在了 BIOS身上,更准确的说是通过 ASL 来完成这一工作的。具体来说是通过_UPC和_PLD这两个 Method 完成的【参考2】。具体设定完成之后,可以直接在被测机器上用 USBView进行检查(注意要用支持 USB 3.0的版本)。这个测试要求将全部“暴露”给客户的USB端口上插满USB Hub。 当USB Hub 插入后,会同时在 USB 2.0和3.0 的 Root Port 下出现设备。这样系统就可以得知 ACPI 的Report和真实的硬件能否对应上。
当然,上面并不是本文的重点,对于BIOS工程师来说最困难的bug并不是BIOS本身,而是并非BIOS却要求BIOS工程师来解的问题。
对于这个测试来说,真正的难点在于:需要使用USB IF 认证过的USB Hub来进行测试。起初我们使用了普通的USB Hub,结果始终无法通过测试,最后多方打听,终于找到了支持这个测试的Hub。
京东有售 http://item.jd.com/983704.html#product-detail ,显然价格比普通的USB 3.0 Hub要高出一截(当然,如果你再看一下测试 WHQL使用的 WindowsToGo 的U盘,还会觉得这个是良心价格)。

image003

截至目前(2017/04/22),我还不清楚这种认证过的Hub和普通的Hub有什么差别(错误提示和 container ID 有关系,我查看了资料也没有弄清楚是什么问题)。

亲测有效,希望对进行 WHQL 测试的朋友有所帮助。

参考:
1. https://msdn.microsoft.com/en-us/library/windows/hardware/jj123655(v=vs.85).aspx
2. https://msdn.microsoft.com/windows/hardware/drivers/install/using-acpi-to-configure-usb-ports-on-a-computer#

发表评论

电子邮件地址不会被公开。 必填项已用*标注