Linux OS でドライバを C でコーディングしたいのですが、非常に難しいと思います。始める方法や参考にする本についてのヒントを得ることができますか? ドライバは、USB ポートからグラフィックス カードまで使用できます!!
どこで本を探せばよいかは知っていますが、どのような基礎知識から始めればよいか知りたいです。ハードウェアの知識が必要ですか? また、私のような初心者に適した書籍はどれですか?
Linux OS でドライバを C でコーディングしたいのですが、非常に難しいと思います。始める方法や参考にする本についてのヒントを得ることができますか? ドライバは、USB ポートからグラフィックス カードまで使用できます!!
どこで本を探せばよいかは知っていますが、どのような基礎知識から始めればよいか知りたいです。ハードウェアの知識が必要ですか? また、私のような初心者に適した書籍はどれですか?
O'Reilly が発行している Rubini と Corbet によるLinux Device Driversから始めます。
無料の PDF ダウンロードとしても利用できます。
Rubini と Corbet による「Linux Device Drivers」 (O'Reilley の本) は、Linux Device Drivers の決定版です。
涼しい!Roddy の回答と kristina のコメントで無料の PDF バージョンを参照してください。
アマゾンをお試しください!! ドライバー向けの本がたくさんあります。いくつかはサンプル2を持っています!!
いくつかのテキスト:
ドライバーは、デバイスによって複雑さが大きく異なります。USB ドライバーは、スペクトルの単純な側にあります。GPU ドライバーは非常に複雑であり、通常、これらのドライバーの作成者でさえ、その機能のすべてを知っているわけではありません。私が推奨するのは、ハードウェアの何でも屋になろうとするのではなく、個人的に関心のあるハードウェアのドライバーに焦点を当てることです。長期的にはより簡単になります。
ドキュメントのソースやさまざまな読み物に関する他のすべての回答は的を射ており、そのうちの1つを実際に受け入れる必要があります。
より複雑なドライバー コミュニティの多くには、独自のドメイン固有の情報もあります。GPU ドライバーを作成したい場合、DRI/DRM および Mesa コミュニティーには独自の wiki とメーリング リストがあり、非常に役立ちます。また、独自のドキュメントもあります。http://dri.freedesktop.org/は、http://wiki.x.org/と同様に適切な出発点です。
お役に立てれば!
ドライバーの設計に取り掛かる前に、まず優れた C スキルと、おそらく Linux カーネルのノウハウを習得する必要があります。ドライバの設計は簡単ではなく、低レベルでのプログラミングに慣れていない場合は怖がるかもしれません。
私の意見では、C に慣れていない場合はC プログラミング言語をお勧めします。プログラミングのバックグラウンドがある場合は C の入門書です。
あなたはここに本当に良い例を持っています
現在のドライバーのソースコードを見てください。コードの上にあるコメントを読むだけで、usb rndis ドライバーを作成しました。
カーネル ソースを取得し、/drivers ディレクトリを確認します。USB ドライバーは usb ディレクトリにありますが、ネットワークに関する USB ドライバーは /net/usb にあります。
コメントを読むことで、多くのことを学ぶことができます。