私は次のことを基本的に理解しています。
- ハードウェアデバイスのデータシートの読み方
- ハードウェアデバイスが理論的にどのように機能するか
- デバイスドライバは何をしますか
- Cプログラミングの一般的な概念
- Linux OS
特定のデバイスドライバーのすべてのコードを理解でき、上記の助けを借りて(ソースコードを見ずに)最終的に同じコードを最初から作成できれば、非常に優れたものを得ることができると常に信じていました。 C言語と、デバイスドライバーがどのように機能してOSと対話するかを理解している。私にとって、これは私のキャリアにおける主要なマイルストーンのようなものです。
そのため、ここ数年、私は常にデバイスドライバーの書き方を学ぶことを考えてきました(主にLinux OS用)。私はいつも(少なくとも6〜7回は)熱意を持って始め、いくつかの優れたオンラインリソースを選び、それらを読みます。次に、Linuxカーネルから既存のドライバーコード(たとえば、イーサネットドライバーコード)を取得し、データシートを取得してドライバーコードの読み取りを開始しますが、数行を読んだ後、混乱し、最終的にはフォローできなかったために諦めます。残りのコード。
私の質問:そのようなチュートリアルはあまりにも良いので真実ではありませんが、それでも質問したいです-Linuxデバイスドライバーがデータシートへの詳細な参照からどのように書かれたか、そして既存の行がどのように書かれたかを説明する良いリソースを誰かが知っていますか?それに関連するコードと、それが存在する理由とそれが正確に何をするのかについて、コードの各関数/ブロックを説明します。