Як почати писати драйвери?


21

У мене є дешевий ноутбук, який я хочу вивернути, Thinkpad SL 500.

Що мене турбує - це два світлодіоди, той, що забезпечує бездротове підключення, і режим сплячки, які зовсім не світяться, хоча вони функціональні, я спробував це на Windows.

Тому я хотів би написати для них драйвер ядра, нічого великого, це просто схоже на гарну ідею пограти з ядром.

Моє запитання - яку методологію слід систематично дотримуватися, щоб з’ясувати, які пристрої відповідають за ці світлодіоди (загалом, це не обов'язково специфічно для мого обладнання) та які драйвери відповідають за два інших світлодіоди, які працюють, bluetooth та індикатор акумулятора?

І коли я кажу про методологію, я дійсно маю на увазі методологію, крок за кроком, з причинами кожного кроку, як у відповіді, яку я дав комусь іншому тут: Що && означає void * p = && abc;

Я вдосконалююся при гортанні через сховища великих кодів, використовуючи статичні аналізатори коду & co, але, думаю, мій недолік апаратних знань перешкоджає мені в цій проблемі.

PS: Я використовую ArchLinux, тому майже остання версія ядра.


Ви намагалися ввімкнути CONFIG_IDEAPAD_LAPTOP в ядрі?
Paweł Rumian

@gorkypl: ні, навіщо мені це робити? Питання не в вирішенні проблеми, а в стратегії, що використовується для вирішення проблеми сама (як програміст).
Флавій

3
Гаразд, я вас зрозумів неправильно. У будь-якому випадку, оскільки модуль ядра IDEAPAD_LAPTOP несе відповідальність за такі речі в SL серії Thinkpads, ви можете почати з перегляду його вихідного коду. Також вас може зацікавити читання, наприклад, про kernelnewbies: kernelnewbies.org/KernelHacking або чудова книга, написана LKH: kroah.com/lkn Два інших хороших джерела, які мені спадають на думку: lwn.net/Kernel/ LDD3 та amazon.com/dp/0596005652/?tag=stackoverfl08-20
Paweł Rumian

Відповіді:


5

Якої методології слід систематично дотримуватися, щоб з’ясувати, які пристрої відповідають за ці світлодіоди?

В ідеалі, ви повинні знайти (відкрите) джерело ОС ядра, над якою працюють світлодіодні індикатори вашого ноутбука, тоді ви можете просто прокоментувати частину за частиною ядра, поки не знайдете код, який відповідає за світлодіоди (і, зробивши кілька системних зависань, роблячи це, але це забавна частина).

Якщо світлодіоди не працюють на Linux, і ви не знаєте, яке обладнання керує ними в інших ОС, як ви думаєте, що ви напишете драйвер?

Боюся, це найкраща відповідь, яку хто-небудь міг дати, і це робить вас (майже) нічого розумнішим, ніж раніше. Просто вказує вам, що вам потрібно точно з’ясувати, яке обладнання у вас є, щоб мати можливість зробити щось більше.

Щоб допомогти більше, два вказівки:

  1. Однією з часто використовуваних мікросхем IDE або SATA є серія Intel ICHX або ICHXr (ICH5, ICH6, ICH7 ... або ICH6R, ICH7R, ...).

  2. Каталог ядра Linux, де знаходиться вихідний код для управління партією світлодіодів

Я також дав би вам 3-й покажчик, але, як цей горкипи вже писали вище, я можу просто повторити: драйвери пристроїв Linux, 3-е видання , в PDF, безкоштовно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.