1. 程式人生 > >xHCI USB host controller & Debug Capability & Windows debug module

xHCI USB host controller & Debug Capability & Windows debug module

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