ドライバの作成を始めるには?

ドライバの作成を始めるには?

持って遊びたい古くて安いノートパソコンがあり、それはThinkpad SL 500です。

私を悩ませているのは、2つのLED(ワイヤレス接続用のLEDと休止状態のLED)が正しく機能していますが、まったく点灯していないことです。 Windowsでこれを試してみました。

それで私は彼らのためのカーネルドライバを書こうと思いました。あまりありませんが、カーネルで遊んでみるのが良い考えのようです。

私の質問はこれらのLEDを担当するデバイスを見つけるには、体系的にどのような方法に従う必要がありますか?(通常は私のハードウェアに限定されていません。)他の2つの動作LED、Bluetooth、およびバッテリーインジケーターを担当するドライバーは何ですか?

私が方法論と言うとき、私が実際に意味するのは、方法論、段階的、そして各段階に理由があるということです。私がここで他の人に提供した答えと同じです。void *p = &&abc; &&はどういう意味ですか?

私は静的コードアナライザなどを使用して大規模なコードストアを探索するのに精通していますが、ハードウェアの知識が不足しているため、この問題を解決するのが妨げられているようです。

PS:私はArchLinuxを使用しているので、ほとんど最新のカーネルバージョンです。

答え1

これらのLEDを担当するデバイスを見つけるには、体系的にどのような方法に従う必要がありますか?

理想的には、ノートブックLEDが動作しているカーネルOSの(パブリック)ソースコードを見つけて、LEDを担当するコードが見つかるまでカーネルの一部をコメントアウトできます。 (そして停止するシステムもありますが、それは面白い部分です)。

LinuxでLEDが動作せず、他のオペレーティングシステムでLEDを駆動するハードウェアが何であるかわからない場合は、ドライバをどのように書くことができると思いますか?

残念ながら、それは誰でもできる最高の答えであり、それがあなたを(ほぼ)以前より賢くするのを防ぎます。より多くのタスクを実行するには、保有しているハードウェアが何であるかを正確に知る必要があることを指摘してください。

さらに支援が必要な場合は、次の2つを確認してください。

  1. 一般的に使用されるIDEまたはSATAチップの1つは、IntelのICHXまたはICHXrシリーズ(ICH5、ICH6、ICH7 ...またはICH6R、ICH7R ...)です。

  2. Linuxカーネルディレクトリには、複数のLEDを制御するためのソースコードが含まれています。

3番目のアドバイスもしたいのですが、Gorkypiはすでに上記のように繰り返すことができます。Linuxデバイスドライバ、バージョン3、PDF形式、無料。

関連情報