2009-10-13 102 views
11

我應該如何處理爲Windows實現USB設備驅動程序?我應該如何考慮到不同版本的Windows e.g: - Windows XP中 - Windows Vista中 - Windows 7的如何實現Windows的USB設備驅動程序?

是否有開源的解決方案,可以作爲一個起點?我是Windows驅動程序開發的總新手。

我們有一個帶有USB設備端口的嵌入式設備,我們希望在不犧牲數據吞吐量的情況下儘可能實現從應用層到設備的低延遲通信。實際傳輸的數據是ADC/DAC數據。基本上,我們需要儘可能快地將數據傳輸到Windows機器。

回答

1
+0

與總新手我不是說那個水平的新手;-) – 2009-10-13 21:11:39

+0

對不起,我把字面上總新手。下面的答案對於你所在級別的人是非常詳細的。 – 2009-10-13 21:45:25

12

我們需要更多的信息,有關設備,以你指出正確的方向,但這裏有幾個步驟,讓你開始:

  • 寄存器與微軟連接,所以你可以下載Windows驅動程序工具包
  • osr-online註冊,因爲你會發現偉大的文章,大量的信息,並專門爲Windows驅動程序專用的新聞組 - 這個地方是一個金礦
  • 購買Developing Drivers with WDF,這將有助於您理解Windows上的驅動程序開發併爲您閱讀OSR和Microsoft的文章提供良好的基礎
  • 希望您可以使用UMDF(用戶模式驅動程序),就像您可以使用C++一樣寫COM代碼。如果你正在做任何需要內核空間的USB ......你在下一年有很多閱讀和學習的東西!

要回答你的問題的版本,驅動程序工具包有工具,將幫助您管理創建不同的驅動程序。如果你編寫了一個好的驅動程序,它應該可以在所有三個操作系統上運行,沒有問題,差異只會在配置區域(不是二進制)。

基本上,這取決於你的設備有多複雜。你想寫什麼類型的驅動程序?文件系統? MP3播放器?相機?調制解調器?

如果最終不得不編寫內核模式驅動程序,請告訴我,我可以爲您指出一些好的文章,而不是。

我還應該補充一下,大約5000美元,你可以購買WinDriver的許可證,這是一個將驅動程序開發中的所有困難內容都取出來的工具。您可以使用C++或C#用戶模式代碼與您的設備自定義生成的驅動程序進行通信。如果您的期限很緊,這就是要走的路。

+0

我們擁有帶USB設備端口的嵌入式設備,我們希望在不犧牲數據吞吐量的情況下,實現從應用層到設備的低延遲通信。 – 2009-10-13 21:25:29

+0

延遲將嚴重依賴於您的硬件的USB控制器。如果我是你,我會首先把UMDF(用戶模式)測試驅動放到一起,看看它是否滿足你的延遲需求。忘掉漂亮的界面,不要做什麼,只需要實現I/O功能以及一個用於推拉數據的Win32測試應用程序。有了我上面提到的這本書,你應該可以在一週內準備好基本的司機。 UMDF的優勢在於它很容易實現並且易於調試,因爲您不需要內核調試器。如果UMDF不削減它,你可以隨KMDF一起去。 – 2009-10-14 01:34:54

1

如果您對設備端有某種形式的控制權,讓它實現Windows已經爲其提供驅動程序的界面。例如。 USB HID類(字面上是人類輸入設備,但人和輸入都不是強制性的)已經具有Windows驅動程序,並且頂部有一個合理的Win32 API。儘管如此,你不會獲得任何接近480 Mbps的數據速率。

+0

同意,在設備端實施HID是避免在Windows端(或其他操作系統)上開發驅動程序的最佳方法。 – kenny 2012-11-08 12:46:26

2

你可以看看的的libusb * here *窗口的變體。官方的libusb網站和網絡上有許多編程語言的包裝。

+0

請注意,libusb-win32已經過時了,並且支持crossplatform [libusb](http://libusb.info/)。 – 2017-08-09 21:31:35