2011-09-16 20 views
32

カスタムPCIeドライバの開発には少しアドバイスが必要です。ドライバは、Windows CE 6.0とWindowsデスクトップ(準備ができたらxp、7、および8)の両方をサポートする必要があります。Windows CEおよびWindowsデスクトップ用PCIeドライバ

私たちはWindows CE用のドライバを開発していますが、Windowsデスクトップ用のドライバは開発していません。私は、良い、堅実なWindows CEドライバを開発することができると確信していますが、Windowsデスクトップでは何も手を加えずに同じことをすることはできません。

1)Jungo WinDriverのような既存のドライバフレームワークを使用すると、ドライバを一度開発し、複数のプラットフォームにコンパイルすることができます。これには、開発のほとんどがユーザー空間にあるという利点もあります。そのため、開発プロセスを簡単にする必要があります。

2)すべての配管作業が完了した適切なWindowsデスクトップドライバをセットアップするための外部ヘルプを入手してください。私たちのボードと通信し、関連するIOControlを公開するコードを追加するだけです。おそらく、可能な限り多くのコードをユーザー空間ライブラリに移動してください。

各オプションの利点と欠点は何ですか?代わりの方法をお勧めしますか?

+0

アランはあなたの質問に「窓」を付けるべきであると答えた方がよいでしょう。私はあなたがWindows-ceセクションでのみ回答を得る可能性が低いと思います。また、Jan Axelsonの書籍USB Complete Fourth Edition - www.lvr.comをご覧になることをお勧めします。そこから良い情報を得ることができます。個人的には、WinDriverをバックアップソリューションの外部ヘルプとして使用しようとします。 – garzanti

+0

"windows"タグとあなたの一般的な推薦状についてのご注意ありがとうございます。しかし、私は、USBに関する本がPCIドライバに関する決定にどのように役立つのかを見ていませんか?私はあなたがお勧めの本の第3版を持っている、そしてそれは(USB用のWinDriverはそれ以上言及していないが)私の知る限り、USBプロトコルについては、ほとんど覚えているとドライバについてほとんどです。 –

+0

私にとって、それはその本を助けました。しかし、どのような種類のUSBクラス/サブクラスがあなたのデバイスに属していますか?それはHIDですか?正確には何ですか?少なくとも一般的に言えば、より良いアイデアを得るためです。 – garzanti

答えて

2

少し前にリクエストしたとおり、元の質問をしてから1年以上経ちました。私たちはWindriverを使用することに決めましたが、これまでWindows CE 6.0用のドライバしか書いていないので、クロスプラットフォームサポートについてはコメントできません。

Windows CE 6.0でWindriverを使用すると、長所と短所の両方があります。これは、すべてのドライバコードがライブラリにあることを意味し、開発とデバッグが容易になりました(Platform Builderを必要とする標準ドライバと比較して)。だから、開発の観点からは素晴らしいことでした。パフォーマンスも良いです。 Windriver APIを学ぶ上では、いくつかのオーバーヘッドがあり、特にDMAと割り込みでそれを使用する方法がありましたが、Windows CE 6.0のPCI APIを学ぶよりも悪くはないと思います。

私が考えることができる唯一の真の不利な点は、Windriverを使用して作成したライブラリよりも複数のプロセス間で「リアル」ドライバを共有する方が簡単だということです。私たちのアプリケーション(1つのプロセスを持つ組み込みシステム)では、それは実際問題ではありませんが、メインプロセスの背後にあるハードウェアで動作するデバッグ/開発ユーティリティを作成するのは難しいです。私たちは他のプラットフォームでのテスト/デバッグにこのアプローチを使用しましたが、ここではやや複雑です。

がすべてを要約すると、私たちは正しい選択をしたと思うし、私たちはポート我々はそれを必要とする非常に少ない労力(たぶん)とWindowsデスクトップへの私たちの「ドライバ」する能力を持っていることをうれしく思います。

1

Windows/Linux用のドライバを開発するためにWindriverを使用したので、私はこの質問に答えたいと思います。

私は、ドライバを使用するアプリケーションもあなたによって書かれている場合、Windriverを好む。カスタムドライバーを開発していると言われているので、自分でもアプリケーションを書くつもりだと思います。この場合、ほとんどのドライバ機能がWindriver自体によって生成されるため、アプリケーションはウィンドウとウィンドウCEの間で大きく変更する必要はありません。これは、IOCTLなどを使用するのと対照的に、標準ライブラリ関数を呼び出すようなものです。

これまで、windriverを使用して基本ドライバインターフェイスコードを生成し、windriver生成コードを使用するアプリケーション(主に診断アプリケーション)を開発しました。ほとんど変更を加えずに、WindowsとLinuxの間でドライバとアプリケーションを使用することができました。私はJungoの使用を主張していませんが、使いやすいです。

質問は、提案を求めることです。正確な回答を提供することは難しいので、私はフィードバックを共有しています。

+1

おっと。私はちょうど1年前に尋ねられた質問に私が答えたことに気づいた! –