ドライバーの作成を開始するにはどうすればよいですか?


21

私は、Thinkpad SL 500をいじくり回したい使い捨ての安いラップトップを持っています。

気になるのは、ワイヤレス接続用とハイバネーション用の2つのLEDです。これらは機能していてもまったく点灯しませんが、Windowsで試しました。

だから、私は彼らのためにカーネルドライバーを書きたいと思っています。大きなことは何もありません。カーネルをいじるのは良い考えのようです。

私の質問は、どのデバイスがそれらのLEDに責任があるのか(一般的には必ずしも私のハードウェアに固有ではない)、どのドライバーが動作する他の2つのLED、Bluetoothとバッテリーインジケーターに責任があるのか​​を見つけるために体系的に従うべき方法です?

そして私が方法論と言うとき、私は本当に、ここで他の誰かに与えた答えのように、ステップごとに理由ごとに方法論を意味します:void * p = && abc;

静的コードアナライザーとcoを使用して、大きなコードリポジトリをfgreppingするのは上手ですが、ハードウェアの知識が足りないとこの問題を妨げると思います。

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


カーネルでCONFIG_IDEAPAD_LAPTOPを有効にしようとしましたか?
パウェウルミアン

@gorkypl:いいえ、どうしてですか?問題は問題を解決することではなく、問題を自分で(プログラマとして)解決するために使用される戦略についてです。
フラビウス

3
わかりました、あなたを誤解しました。とにかく、IDEAPAD_LAPTOPカーネルモジュールは、ThinkPadのSLシリーズでこのようなことを担当しているので、そのソースコードを見ることから始めることができます。:また、あなたはkernelnewbiesに例えば、いくつかの読書に興味がある可能性がありkernelnewbies.org/KernelHackingやLKHによって書かれた素晴らしい本:kroah.com/lkn私の心に来ている他の二つの良いソース:lwn.net/Kernel/ LDD3amazon.com/dp/0596005652/?tag=stackoverfl08-20
パヴェルRumian

回答:


5

どのデバイスがそれらのLEDの原因であるかを見つけるために、どの方法論を体系的に従うべきですか?

理想的には、ラップトップのLEDが動作しているカーネルOSの(オープン)ソースを見つけ、LEDの原因となるコードを見つけるまでカーネルの一部をコメントアウトすることができます(そして、いくつかのシステムがフリーズし、しかし、それは楽しい部分です)。

LinuxでLEDが機能せず、他のOSでLEDを駆動しているハードウェアがわからない場合、ドライバーをどのように作成すると思いますか?

それは誰でもできる最高の答えです、私は恐れています、そして、それはあなたを(ほとんど)これまで以上に賢くしません。あなたが持っているハードウェアを正確に見つけて、もっと何かをする必要があることを指摘してください。

さらに役立つように、2つのポインター:

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

  2. 多くのLEDを制御するためのソースコードがあるLinuxカーネルディレクトリ

3番目のポインターも提供しますが、このgorkypyが既に上記で書いたように、私はただ繰り返すことができます:PDFのLinuxデバイスドライバー、3rdエディション、無料で。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.