Jak zacząć pisać sterowniki?

21

Mam tani wyrzucany laptop, którym chciałbym się kręcić, Thinkpad SL 500.

Niepokoją mnie dwie diody LED, ta do łączności bezprzewodowej i ta do hibernacji, które wcale się nie zapalają, chociaż są funkcjonalne, wypróbowałem to w systemie Windows.

Chciałbym więc napisać dla nich sterownik jądra, nic wielkiego, to po prostu dobry pomysł na zabawę z jądrem.

Moje pytanie brzmi: jaką metodologię powinienem systematycznie stosować, aby dowiedzieć się, które urządzenia są odpowiedzialne za te diody LED (ogólnie niekoniecznie specyficzne dla mojego sprzętu) i jakie sterowniki są odpowiedzialne za pozostałe dwie diody LED, które działają, bluetooth i wskaźnik baterii?

A kiedy mówię metodologię, naprawdę mam na myśli metodologię krok po kroku z uzasadnieniem każdego kroku, jak w odpowiedzi, którą udzieliłem komuś innemu tutaj: Co oznacza && w void * p = && abc;

Jestem biegły w przeszukiwaniu dużych repozytoriów kodu, używając statycznych analizatorów kodów i innych, ale myślę, że mój brak wiedzy o sprzęcie utrudnia mi ten problem.

PS: Używam ArchLinux, więc prawie najnowsza wersja jądra.

Flawiusz
źródło
Czy próbowałeś włączyć CONFIG_IDEAPAD_LAPTOP w jądrze?
Paweł Rumian
@gorkypl: nie, dlaczego miałbym? Pytanie jest nie o rozwiązanie problemu, to o strategii stosowanych w celu rozwiązania problemu myself (jako programista).
Flavius
3
OK, źle cię zrozumiałem. W każdym razie, ponieważ moduł jądra IDEAPAD_LAPTOP jest odpowiedzialny za takie rzeczy w serii Thinkpadów SL, możesz zacząć od spojrzenia na jego kod źródłowy. Być może zainteresuje Cię również lektura, na przykład na kernelnewbies: kernelnewbies.org/KernelHacking lub świetna książka napisana przez LKH: kroah.com/lkn Dwa inne dobre źródła, które przychodzą mi do głowy to: lwn.net/Kernel/ LDD3 i amazon.com/dp/0596005652/?tag=stackoverfl08-20
Paweł Rumian

Odpowiedzi:

5

Jaką metodologię należy systematycznie stosować, aby dowiedzieć się, jakie urządzenia są odpowiedzialne za te diody LED?

Idealnie byłoby, gdybyś znalazł (otwarte) źródło systemu operacyjnego jądra, na którym działają diody LED twojego laptopa, a następnie możesz po prostu komentować część jądra, dopóki nie znajdziesz kodu odpowiedzialnego za diody LED (i kilka systemów zawiesza się, robiąc to, ale to jest fajna część).

Jeśli diody LED nie działają w systemie Linux i nie wiesz, który sprzęt napędza je w innych systemach operacyjnych, jak myślisz, jak napiszesz sterownik?

Obawiam się, że to najlepsza odpowiedź, jaką każdy może udzielić, a to czyni (prawie) nic mądrzejszego niż wcześniej. Po prostu wskazuje, że musisz dowiedzieć się dokładnie, jaki masz sprzęt, aby móc zrobić coś więcej.

Aby być bardziej pomocnym, dwa wskaźniki:

  1. Jednym z często używanych układów IDE lub SATA jest seria Intel ICHX lub ICHXr (ICH5, ICH6, ICH7 ... lub ICH6R, ICH7R, ...).

  2. Katalog jądra Linux, w którym znajduje się kod źródłowy do kontrolowania wielu diod LED

Dałbym ci również trzeci wskaźnik, ale jak już pisałem ten gorkypy powyżej, mogę po prostu powtórzyć: sterowniki urządzeń Linux, wydanie trzecie , w formacie PDF, za darmo.

wynika
źródło