Como começar a escrever drivers?

21

Eu tenho um laptop barato que eu gostaria de mexer, um Thinkpad SL 500.

O que me incomoda são dois leds, o de conectividade sem fio e o de hibernação, que não acendem, apesar de funcionais, eu tentei no Windows.

Então eu gostaria de escrever um driver de kernel para eles, nada grande, parece uma boa idéia brincar com o kernel.

Minha pergunta é qual metodologia devo seguir sistematicamente para descobrir quais dispositivos são responsáveis por esses leds (em geral, não necessariamente específicos do meu hardware) e quais drivers são responsáveis pelos outros dois. leds que funcionam, bluetooth e o indicador da bateria?

E quando falo de metodologia, realmente me refiro à metodologia, passo a passo, com motivos para cada etapa, como na resposta que dei a outra pessoa aqui: O que & & mean in void * p = & & abc;

Eu sou proficiente em fagrep através de grandes repositórios de código, usando analisadores de código estáticos & co, mas eu acho que minha falta de conhecimento de hardware me impede sobre este problema.

PS: Estou usando o ArchLinux, então quase a versão mais recente do kernel.

    
por Flavius 07.09.2012 / 09:00

1 resposta

5

What methodology should I follow systematically to find out what devices are responsible for those LEDs?

O ideal é que você encontre uma fonte (aberta) do SO do kernel no qual os LEDs do seu laptop estão funcionando, então você pode comentar parte por parte do kernel até localizar o código que é responsável pelos LEDs (e ter alguns congelamentos do sistema fazendo isso, mas essa é a parte divertida).

If LEDs are not working on Linux and you do not know which hardware is driving them on other OS's, how do you think you'll write a driver?

Essa é a melhor resposta que alguém poderia dar, receio, e isso faz de você (quase) nada mais esperto do que antes. Apenas aponta que você precisa descobrir exatamente qual hardware você tem, para poder fazer algo mais.

Para mais ajuda, duas dicas:

  1. Um dos chips IDE ou SATA mais utilizados é o ICHX ou ICHXr da Intel (ICH5, ICH6, ICH7 ... ou ICH6R, ICH7R, ...).

  2. Diretório do kernel do Linux onde está localizado o código-fonte para controlar o lote de LEDs

Eu daria a você o terceiro ponteiro também, mas como este gorkypy já escreveu acima, eu posso apenas repetir: drivers de dispositivos Linux, 3a edição , em PDF, gratuitamente.

    
por 10.11.2012 / 12:06