Material do treinamento de drivers
- por Sergio Prado
Finalmente finalizei o material do treinamento de Linux Device Drivers! :)
O grande desafio foi mesmo condensar todo o conteúdo que gostaria de apresentar em 24 horas de treinamento, e acredito que tenha conseguido encontrar um equilíbrio entre o que apresentar na teoria e os desafios que teremos nos exercícios práticos.
O primeiro dia será focado no aprendizado de uma base sobre o desenvolvimento de drivers para Linux. Começaremos estudando os fontes de kernel e revisaremos seu processo de configuração e compilação. Teremos um enfoque grande em analisar e utilizar o código existente como base para o desenvolvimento. Para navegar nos fontes do kernel, utilizaremos ferramentas com o LXR, o ctags e o cscope. Desenvolveremos um módulo do kernel, e depois passaremos por toda a API básica para o desenvolvimento de um driver de dispositivo de caractere. Ao fim do primeiro dia, finalizaremos o desenvolvimento de um driver para acionar um GPIO da placa.
Manteremos o mesmo ritmo no segundo dia. Estudaremos como o kernel lida com processos, os desafios da implementação de uma rotina de tratamento de interrupção e o uso de mecanismos de sincronização como mutexes e spinlocks. Neste segundo dia desenvolveremos um driver para leitura de um botão da placa e começaremos o desenvolvimento do driver da porta serial, que será bem mais desafiador. Ao fim do dia, ainda estudaremos diversas técnicas de debugging do kernel e de drivers.
O terceiro dia será focado no modelo de dispositivos do kernel. Estudaremos como um driver de dispositivo conversa com seu barramento (USB, I2C, PCI, etc), e como os mecanismos de acesso ao dispositivo são disponibilizados para o espaço de usuário através dos frameworks do kernel (TTY, framebuffer, input, etc). Finalizaremos o desenvolvimento do driver da porta serial baseado no modelo de dispositivos do kernel. Conseguiremos até usar o nosso driver para acessar o target via serial com uma aplicação de terminal. Se o tempo permitir, começaremos o desenvolvimento de outros drivers para acessar o RTC e o watchdog da placa. Finalizaremos o treinamento com várias dicas para continuar os estudos e contribuir com o desenvolvimento do kernel.
Enfim, será um treinamento denso, mas na medida certa para todos que querem começar a se aventurar no universo do desenvolvimento de drivers para Linux. Diversão não vai faltar, prometo! :)
A agenda completa do treinamento pode ser acessada aqui, e os slides do treinamento (mais de 450 slides!) estão disponíveis aqui.
Se você ainda não garantiu sua inscrição no treinamento, ainda tenho algumas vagas. Para fazer a inscrição, é só clicar aqui.
Um abraço,
Sergio Prado