Igor, eu trabalho no desenvolvimento de sistemas embarcados e já desenvolvi alguns drivers, mas nada muito complexo. Para desenvolver o driver, nós precisamos saber como que o dispositivo que está conectado ao processador funciona e qual pino do processador corresponde a qual pino do dispositivo. A necessidade de se fazer um driver é para poder acessar esses pinos do processador diretamente, o que não é permitido na userland. O driver então trata os dados para que uma aplicação userland possa utilizar o dispositivo sem se preocupar com o funcionamento específico dele. Todos os drivers que fiz até agora foram char devices, ou seja, a interface do driver com o sistema se dá através de leituras e escritas em um arquivo (um daqueles que ficam em /dev). A maioria dos drivers são assim. Os outros dois tipos são network (sockets) e block devices (HDs e coisas do tipo). Um livro que recomendo é o Linux Device Drivers, que inclusive está disponível de graça na internet. Abraço. 2009/5/11 Igor Mol <igor@yrado.com>:
Ainda matenho um pequeno projeto de kernel pessoal e nele aprendi acerca do desenvolvimento de drivers. Mas em sua maioria, utilizei muitos tutoriais para desenvolvê-los, e sei que na maioria das vezes não dispomos de tutoriais para criar drivers específicos em um sistema real.
Normalmente como acontece o processo de criação de um drive real no Linux? É feita uma analise do mesmo através de uma documentação fornecida pelo próprio desenvolvedor, e a partir daí um estudo de como se comunica com a controladora (chip) do dispositivo? Existem exemplos reais disso?
Curiosidade: tenho feito um trabalho sobre aplicação do Cálculo na engenharia, e então pensei no desenvolvimento do kernel. Há algum tipo de driver que é necessário o conhecimento de Cálculo para fazê-lo?
_______________________________________________ kernel-br mailing list kernel-br@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernel-br
-- Ricardo Ayres Severo <severo.ricardo@gmail.com>