Come iniziare a scrivere i driver?


21

Ho un laptop economico da buttare che mi piacerebbe armeggiare, un Thinkpad SL 500.

Ciò che mi preoccupa sono due led, quello per la connettività wireless e quello per l'ibernazione, che non si accendono affatto, anche se sono funzionali, l'ho provato su Windows.

Quindi vorrei scrivere un driver del kernel per loro, niente di grosso, sembra proprio una buona idea giocare con il kernel.

La mia domanda è quale metodologia dovrei seguire sistematicamente per scoprire quali dispositivi sono responsabili di quei led (in generale, non necessariamente specifici per il mio hardware) e quali driver sono responsabili degli altri due led che funzionano, il bluetooth e l'indicatore della batteria?

E quando dico metodologia, intendo davvero la metodologia, passo dopo passo, con le ragioni di ogni passo, come nella risposta che ho dato a qualcun altro qui: Cosa significa && nel vuoto * p = && abc;

Sono bravo a trovare repository di codice di grandi dimensioni, utilizzando analizzatori di codice statico e altri, ma penso che la mia mancanza di conoscenza dell'hardware mi ostacoli su questo problema.

PS: sto usando ArchLinux, quindi quasi l'ultima versione del kernel.


Hai provato ad abilitare CONFIG_IDEAPAD_LAPTOP nel kernel?
Paweł Rumian,

@gorkypl: no, perché dovrei? La domanda non riguarda la risoluzione del problema, ma la strategia utilizzata per risolvere il problema da solo (come programmatore).
Flavio

3
OK, ti ho frainteso. Ad ogni modo, poiché il modulo del kernel IDEAPAD_LAPTOP è responsabile di tali cose nella serie SL di Thinkpad, puoi iniziare guardando il suo codice sorgente. Inoltre, potresti essere interessato ad alcune letture, ad esempio su kernelnewbies: kernelnewbies.org/KernelHacking o un grande libro scritto da LKH : kroah.com/lkn Altre due buone fonti che mi vengono in mente sono: lwn.net/Kernel/ LDD3 e amazon.com/dp/0596005652/?tag=stackoverfl08-20
Paweł Rumian

Risposte:


5

Quale metodologia dovrei seguire sistematicamente per scoprire quali dispositivi sono responsabili di quei LED?

Idealmente, dovresti trovare la sorgente (aperta) del sistema operativo del kernel su cui funzionano i LED del tuo laptop, quindi potresti semplicemente commentare parte del kernel fino a individuare il codice responsabile dei LED (e fare in modo che qualche sistema si blocchi, ma questa è la parte divertente).

Se i LED non funzionano su Linux e non sai quale hardware li sta guidando su altri sistemi operativi, come pensi di scrivere un driver?

Questa è la migliore risposta che chiunque potrebbe dare, temo, e ciò non ti rende (quasi) più intelligente di prima. Ti indica solo che devi scoprire esattamente quale hardware hai, per poter fare qualcosa di più.

Per essere di maggiore aiuto, due puntatori:

  1. Uno dei chip IDE o SATA spesso utilizzati è la serie Intel ICHX o ICHXr (ICH5, ICH6, ICH7 ... o ICH6R, ICH7R, ...).

  2. Directory del kernel Linux in cui si trova il codice sorgente per il controllo di molti LED

Vorrei anche darti il ​​3 ° puntatore, ma come già scritto sopra in questo gorkypy, posso semplicemente ripetere: driver di dispositivo Linux, 3a edizione , in PDF, gratuitamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.