31

カスタムPCIeドライバーの開発について少しアドバイスが必要です。ドライバは、Windows CE6.0とWindowsDesktopの両方をサポートしている必要があります(準備ができている場合はxp、7、および8)。

Windows CE用のドライバーの開発には多くの経験がありますが、WindowsDesktop用のドライバーはありません。優れた堅牢なWindowsCEドライバーを開発できると確信していますが、外部の支援がなければ、Windowsデスクトップでも同じことを行うことはできないと思います。2つの選択肢があると思います。

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

2)すべての配管が行われ、ボードと通信するコードを追加して関連するIOControlを公開するだけで、優れたWindowsデスクトップドライバーをセットアップするための外部ヘルプを入手できます。おそらく、コードを可能な限りユーザースペースライブラリに移動します。

各オプションのメリットとデメリットは何ですか?別のアプローチをお勧めしますか?

4

2 に答える 2

2

少し前にリクエストされたように、最初の質問をしてから 1 年以上経った今、私の経験を共有しようと思います。Windriver を使用することにしましたが、これまでのところ Windows CE 6.0 用のドライバーしか作成していないため、クロスプラットフォームのサポートについてコメントすることはできません。

Windows CE 6.0 で Windriver を使用することには、利点と欠点の両方があります。これは、すべてのドライバー コードがライブラリに含まれていることを意味するため、(Platform Builder を必要とする標準ドライバーと比較して) 開発とデバッグが容易になりました。したがって、開発の観点からは、それは素晴らしいことです。業績も好調。特に DMA と割り込みを使用して、Windriver API とその使用方法を学習する最初の段階でオーバーヘッドが発生しましたが、生の Windows CE 6.0 PCI API を学習するよりも悪いことではないと思います。

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

すべてをまとめると、私たちの選択は正しかったと思います。必要なときに (願わくば) 非常に少ない労力で "ドライバー" を Windows デスクトップに移植できることを嬉しく思います。

于 2012-10-22T19:44:16.070 に答える
1

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

ドライバーを使用するアプリケーションも自分で作成する場合は、Windriver を使用することをお勧めします。カスタムドライバーを開発しているとのことなので、アプリケーションもご自身で書かれると思います。この場合、ドライバ関数のほとんどは Windriver 自体によって生成されるため、アプリケーションは Windows と Windows CE の間であまり変更する必要はありません。IOCTL などを使用するのではなく、標準ライブラリ関数を呼び出すようなものです。

以前は、windriver を使用して基本的なドライバー インターフェイス コードを生成し、windriver によって生成されたコードを使用するアプリケーション (主に診断アプリケーション) を開発しました。少し変更を加えるだけで、Windows と Linux の間でドライバーとアプリケーションを使用することができました。Jungo を推奨しているわけではありませんが、使いやすかったです。

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

于 2012-10-12T23:16:43.300 に答える