楽しいと思うので、デバイスドライバーの作成方法を学びたいと思います。 Mac OS X Macbookを使用していますが、Ubuntuマシン(Mac Minで実行)もあります。私はCにかなり精通しており、現在 この本 を読んでいます。 Mac Dev Center などのリンクがオンラインで見つかりました。それは楽しいからだからだ。私が書いたソフトウェアのおかげで、ハードウェアが動作するのを見るのは本当に嬉しいことだと思います。
私が欲しいのは、いくつかのヒントやアドバイス、ガイダンスであり、ドライバーを持たないデバイスのリストを知っている人はいますか、すでにサポートされているもののドライバーを書くことができます(前者を好むので実際に価値の提供)。始めるのに適したデバイスは何ですか?私は噛むことができる以上に噛んでいますか?私は、低レベルのプログラミングやアセンブリ、または必要な労力を恐れていません。本当にチャレンジしたい!
Linuxの場合は、O'Reillyの選択を検討することもできます Linuxデバイスドライバー 本または読書 PDF オンライン。私の意見では、それは主題のまわりのよりよいテキストの1つです。
The Linux Kernel Module Programming Guide も良いリソースです。
また、Linuxカーネルに関する本を取り上げることもできます。この目的のために、ロバート・ラブの Linux Kernel Development(2nd Edition) のコピーを手に入れました(- rd Edition 途中です)。
デバイスドライバーの記述は非常に単純な場合もあれば、ほとんど任意に複雑な場合もあります。たとえば、私は6人のデバイスドライバーの1つのバグを解決するのに約3年かかったプロジェクトに参加しました。もちろん、私たちはそれを探している間に他の多くのバグを取り除きました...コードは非常に改善されました。修正は8行のパッチであることが判明しましたが、そのコストは控えめに言っても約100万ドルです。
しかし、そのためのサイドプロジェクトとして、私は1週間でチップデータシートからイーサネットドライバーを作成し、それをデバッグするのにさらに1週間かかりました。それ以来、それに触れる必要はありません。
一般に、ドライバーの仕事量を言う方法はありません。 GPUドライバーのコストは数億ドル、単一のLEDのドライバーのコストはせいぜい数時間です。
Linuxデバイスドライバーの開発に行きたい場合は、無料で入手できるO'Reillyの本 Linux Device Drivers、Third Edition を読む必要があります。
ドライバを作成できるサポートされていないハードウェアを見つけるには、 Linuxメーリングリスト で質問してください。たぶんいくつかのUSB 3.0デバイス? ;)
Macの場合は、 Mac OS X Internals bookをご覧ください。それは考えると重いが、読むのは楽しい。主にPowerPCベースのMacに関するものですが、Intelベースのものに関する付録があります。 Linuxの場合は、 Linuxデバイスドライバー、第3版 をご覧ください。軽量で(オンラインの無料PDF :)、実際にはデバイスドライバー指向です。