大部分市面上的xHCI USB host controller都必须支持Debug Capability. (也有部分不支持的,不知道,他们有没有取得USB-IF的CERTIFICATION)
Win8/8.1/10支持USB3.0/3.1的双机调试,运用的就是xHCI USB host controller的这个Debug Capability.
调试的时候,一边是USB3.0/3.1的调试机,另一边则USB3.0/3.1的被调试机,被调试机的USB3.0/3.1 host 运行在USB Debug Device模式下。
调试机这边,有一个USB DEBUG DEVICE DRIVER
被调试机这边,需要将WINDOWS的内核调试模块打开
微软的各类USB驱动都非常ROBUST,例如O/UHCI/EHCI/XHCI, HUB 2.0, HUB 3.0, MASS STORAGE, VIDEO, AUDIO, PRINTER, USB HID, 等。
但这个USB的内核调试模块,总感觉不是特别对劲。
大家可以做这样一个实验,
1. 硬件上找一块带有XHCI USB DEBUG CAPABILITY的XHCI HOST
将它插到主机上,一般是PCIE X 2
2.软件上,
在内核调试模块没有打开前,在DEVICE MANAGER中,将这个XHCI HOST, DISABLE
将系统的内核调试模块打开,并设置为USB, 以及对应的BUS.DEVICE.FUNCTION
重启
回到DEVICE MANAGER, 发现这个XHCI HOST是处于DISABLED状态的
ENABLE该XHCI HOST, 你会发现,系统像死机一样,STUCK几秒钟
3.问题在哪?
问题在于,这个USB内核调试模块,不停地CHECK USB DEBUG CAPABILITY的两个寄存器(DBC PORTSC与DBC CTRL)
本文探讨了Windows 8/8.1/10系统下使用xHCI USB host controller进行USB3.0/3.1设备调试的问题。重点介绍了调试过程中涉及的Debug Capability功能及其实现方式,并指出微软提供的USB调试模块存在的潜在问题。
921

被折叠的 条评论
为什么被折叠?



