我正試圖加速一個相當遲鈍的引導程序。目前我在一個USB HID輸出端點上發送數據,而且由於它是低速設備,我顯然限制爲每10毫秒間隔一個8字節數據包,速度高達800字節/秒。更快的USB HID輸出
是否有可能以某種方式增加報告頻率?或者在一個界面中使用多個輸出端點或作爲複合設備的一部分?或者也許濫用控制端點發送更多數據?
更好的壓縮方式總是我想的一種選擇,但它是一個收益遞減的領域,重新設計硬件以允許全速USB並不是真正的選擇。
爲了記錄,我很樂意使用僅限Windows的解決方案。
我正試圖加速一個相當遲鈍的引導程序。目前我在一個USB HID輸出端點上發送數據,而且由於它是低速設備,我顯然限制爲每10毫秒間隔一個8字節數據包,速度高達800字節/秒。更快的USB HID輸出
是否有可能以某種方式增加報告頻率?或者在一個界面中使用多個輸出端點或作爲複合設備的一部分?或者也許濫用控制端點發送更多數據?
更好的壓縮方式總是我想的一種選擇,但它是一個收益遞減的領域,重新設計硬件以允許全速USB並不是真正的選擇。
爲了記錄,我很樂意使用僅限Windows的解決方案。
或者也許濫用控制端點發送額外的數據?
您可以使用「供應商特定請求」。 TI TUSB3410芯片的工作方式AFAIK。許多USB堆棧已經安裝了它們的掛鉤。
但是,這需要主機端的驅動程序或libusb。
誰說你每10ms限制在一個8字節的數據包?我不知道我頭頂的確切數字,但我知道你可以發送比這更大的數據包。我做了一個HID設備並使用了64字節的數據包。我想我可以做得更大,但是這個限制可能與硬件有關。你使用什麼硬件?
另外,您是否諮詢了USB in a NutShell?
對於低速設備,實際限制爲每10ms 8個字節,對於高速設備,每個基於中斷的端點每1ms需要64個字節。
因此,如果硬件支持它,首先嚐試切換到高速模式。列表中的下一件事是使用多個端點。如果您真的想獲得最高的傳輸速率,那麼HID級別是一個不錯的選擇。
我能夠通過在控制端點上使用SET_REPORT請求來加速上傳數量級,而不是聲明單獨的中斷端點。這樣你就可以獲得控制傳輸的全部帶寬。
另外使用分成多個段的較大報告有助於減少所需的SETUP數據包數量。
感謝您的建議!我正在使用的PIC18 MCU應該很容易支持它們。我不想寫驅動程序,但是使用現成的驅動程序肯定不是不可能的,特別是在通用HID報告保留爲備用驅動程序的情況下。 – doynax 2012-01-12 19:39:28