ある製品(たとえば、ゲームコントローラー)のドライバーを作成する必要があると言われた場合、どのように作成しますか?これは、C / C ++で通常実行できることですか?
そして、USBに接続する外部デバイスのファームウェアはどうですか?これは通常どのように作成されますか?これもC/C ++、またはいくつかの低水準言語で行われますか?
ありがとう!
デスクトップコンピューターのオペレーティングシステム用のデバイスドライバーは、通常、CまたはC++で記述されています。ターゲットとするオペレーティングシステムには、何らかの形のフレームワークまたはデバイスドライバー開発環境があります。多くの場合、これらの開発キットは無料で入手できます。
Windows、Linux、MacOS X(およびその他)で利用できる、デバイスドライバーの作成プロセスを詳しく説明した本があります。
ドライバが特定のハードウェアバス(PCI、PCI-X、USB、SCSI、SATAなど)上のデバイスに関連している場合は、その特定のテクノロジに関する書籍を入手することもできます。そのハードウェアシステムを理解すると、ドライバーの設計が大幅に容易になります。
もう1つの優れたリソースは、同じようなデバイスのオープンソースコードです。LinuxカーネルソースまたはFreeBSDソースからそれを入手し、デバイスのタイプの特定の側面がどのように実装されているかを調べることができます。
編集:デバイス自体に関するデータシート、回路図、および/または動作理論情報も必要になることを言及するのをほとんど忘れていました。
インターフェイスと通信できる任意の言語で実行します。ポートまたはアドレスを直接突く必要がある場合は、アセンブリまたはCを使用します。libusbなどの高レベルのインターフェイスがある場合は、ほとんどすべての言語を使用できます。
Amardeepの良い答えに、デバイスドライバーが動作するコンテキストと、それらがどのように構成されているかを考えるのに役立つ次の本を追加します。
Linux: http: //www.amazon.com/Understanding-Linux-Kernel-Third-Daniel/dp/0596005652