2011-09-16 98 views
32

我需要一些建議來開發自定義PCIe驅動程序。該驅動程序必須同時支持Windows CE 6.0和Windows Desktop(準備就緒時,xp,7和8)。用於Windows CE和Windows桌面的PCIe驅動程序

我們在開發用於Windows CE的驅動程序方面有很多經驗,但對於Windows桌面方面卻沒有經驗。我非常肯定我們可以開發一個好的,穩定的Windows CE驅動程序,但我認爲如果沒有外部幫助,我們將無法爲Windows桌面執行相同的操作。我認爲,我們有兩個選擇:

1)使用現有驅動程序框架,如Jungo公司的WinDriver,這使我們能夠一次開發驅動程序,編譯成mulitiple平臺。這也具有大部分開發將在用戶空間中的優點,所以它應該使開發過程更簡單。

2)獲得一些外部的幫助,以建立一個良好的Windows桌面驅動程序,所有的管道被完成,我們只需要補充的是我們的板通信代碼,並揭露相關IOControls。也許儘可能將代碼移到用戶空間庫中。

每個選項的優點和缺點是什麼?你會推薦替代方法嗎?

+0

艾倫更好的機會得到一個答案,你應該用「windows」標記你的問題。我認爲你只有在windows-ce部分纔有機會得到答案。我還建議你看看Jan Axelson的書「USB Complete Fourth Edition - www.lvr.com」,你會從那裏得到很好的信息。就個人而言,我會嘗試使用WinDriver,作爲備用解決方案的外部幫助。 – garzanti

+0

感謝您關於「windows」標籤和您的一般建議。但是,我不明白一本關於USB的書會如何幫助我做出有關PCI驅動程序的決定?我有你推薦的這本書的第三版,而且我記得主要是關於USB協議,而關於驅動程序的文檔卻很少(WinDriver for USB被提及,但不超過)。 –

+0

對我來說,它幫助了那本書。但是你的設備屬於哪種USB類/子類?它是一個HID?究竟是什麼?至少在一般意義上來說,以獲得更好的想法。 – garzanti

回答

2

按照要求前一陣,我會盡力分享我的經驗,現在一年多後,我問原來的問題。我們決定使用Windriver,但到目前爲止我們只寫了Windows CE 6.0的驅動程序,所以我不能評論跨平臺的支持。

在Windows CE 6.0上使用Windriver具有優點和缺點。這意味着我們所有的驅動程序代碼現在都在庫中,所以開發和調試起來更容易(與需要Platform Builder的標準驅動程序相比)。所以從發展的角度來看,這很好。性能也很好。在開始學習Windriver API以及如何使用它的時候,有一些開銷,特別是在DMA和中斷方面,但我認爲這比學習原始的Windows CE 6.0 PCI API差。

唯一真正的缺點我能想到的是,一個「真正的」司機是很容易,我們已經用WinDriVer創建的庫中的多個進程之間共享。在我們的應用程序(帶有一個進程的嵌入式系統)中,這並不是一個真正的問題,但是創建在主進程後面的硬件上運行的調試/開發實用程序更加困難。我們已經在其他平臺上使用這種方法進行測試/調試,但在這裏做更復雜一點。我想我們做出了正確的選擇,我很高興我們有能力在我們需要的時候將我們的「驅動程序」移植到Windows桌面(希望是)很少的努力。

1

在使用Windriver開發Windows/Linux驅動程序後,我想回答這個問題。

我喜歡Windriver的,如果它使用驅動應用程序也將被你寫的。既然你提到你正在開發一個自定義的驅動程序,我假設你也將自己編寫應用程序。在這種情況下,應用程序不需要在Windows和Windows CE之間有很大的變化,因爲大多數驅動程序功能都是由Windriver自己生成的。這就像是調用標準庫函數而不是使用IOCTLs等。

過去,我使用windriver生成基本的驅動程序接口代碼,並開發了使用windriver生成的代碼的應用程序(主要是診斷應用程序)。幾乎沒有修改,我們能夠在Windows和Linux之間使用驅動程序和應用程序。我不主張使用Jungo,但它很容易使用。

因爲問題是有關要求的建議,這是很難提供確切的答案,我只是分享我的反饋意見。

+1

oops。我剛剛意識到我回答了一年前問過的問題! –

相關問題