大部分市面上的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)