我需要在Windows 7主機和Linux設備之間建立USB通信以進行數據傳輸。我能夠在設備上編譯Linux內核以將Gadget Zero驅動程序包含在內核中(而不是作爲可加載模塊--Linux版本3.0.15)。我的項目有一些要求,這也解釋了爲什麼我選擇Gadget Zero:USB linux小工具零驅動程序與Windows主機通信
1)在Windows 7主機上,必須使用內核模式驅動程序通過USB連接進行通信以發送和接收批量數據。 (速度並不重要,一次不會有很多數據)。
2)在linux設備上,除了通過USB鏈接輕鬆發送和接收數據外,USB端沒有要求。接收到的數據最終將被「解組」,以調用另一個內核模塊中的函數(以及將這些響應打包併發送回主機)。 3)多個linux設備將連接到主機,因此需要簡單的方法來枚舉連接的設備並與它們進行通信。
因此,由於要求,我決定對小工具系列。我在通過Win 7主機中的內核模式(KMDF)中的虛擬COM端口發送和接收數據時遇到嚴重問題。 WinUSB似乎不想打開我的連接設備(我在VS2012中使用了KMDF windows模板中的USB驅動程序)另外,在linux端的小工具串行驅動程序中,我找不到數據收到和發送的功能。另外,由於某種原因,任何在linux設備上收到的數據似乎都會回顯給主機。 (並且爲了測試這一點,我在Windows中編寫了一個簡單的用戶模式應用程序,這對我的項目來說是不允許的)。
Gadget Zero,它在linux上顯得簡單得多。我可以將USB電纜插入Win7主機,我可以讓設備出現在設備管理器中。但是,我又遇到了通過鏈接進行溝通的問題。小工具零有兩個批量端點,所以這不應該是一個問題。當然,有人使用Gadget Zero在Windows主機和Linux設備之間進行數據通信。使用Gadget Zero,應該很容易枚舉連接的Linux設備並與它們進行通信。
訣竅是保持Windows端通信在內核模式下。有人可能用小工具零,Windows 7 KMDF和一些示例源代碼指向正確的方向嗎?我很難相信之前沒有人做過這件事,因爲我的網絡搜索量並不多。 (主要是用Gadget Serial的用戶模式解決方案)。
謝謝!