Treinamento de Linux Device Drivers

- por Sergio Prado

Categorias: Treinamentos Tags: , ,

O treinamento “Desenvolvendo Linux Device Drivers” da Embedded Labworks esta saindo do forno!

Este treinamento é um pedido recorrente nas turmas que formei até agora em Linux embarcado. Para quem esta envolvido com sistemas embarcados, é mesmo um caminho natural.

Você usa um hardware específico como referência para seu projeto, seja a Raspberry Pi, a Beagleboard, o i.MX53 QSB ou a FriendlyARM mini2440. Você começa a desenvolver o produto, customizar a distribuição Linux e desenvolver sua aplicação. Mas em determinado momento (ou em paralelo) você precisa customizar o hardware. Aumentar ou diminuir a capacidade de memória (RAM, flash, etc). Remover dispositivos não usados. Adicionar um dispositivo no barramento I2C. E por aí vai.

Este trabalho exige conhecimentos do kernel e do desenvolvimento de drivers de dispositivos para o Linux. É aí que entra o treinamento “Desenvolvendo Linux Device Drivers”.

O treinamento esta em fase final de desenvolvimento. Assim que finalizar os slides, eles são publicados aqui, como sempre.

O mais difícil esta sendo condensar todo o conteúdo que quero passar em 3 dias (24 horas). Este é o conteúdo que defini até agora:

  • Introdução à arquitetura geral do kernel Linux. Estudo detalhado do código-fonte. Configuração, compilação e testes do kernel no kit de desenvolvimento.
  • Desenvolvimento de módulos do kernel. Compilando, instalando, carregando e testando o módulo no kit de desenvolvimento. Integrando o módulo nos fontes do kernel.
  • Arquitetura básica de um driver de dispositivo. Como funciona o acesso ao hardware no Linux. Desenvolvendo um driver de dispositivo de caractere.
  • Gerenciamento de memória no kernel Linux. Entendendo memória virtual e MMU. As API de alocação de memória do kernel, incluindo page allocator, SLAB allocator, vmalloc e kmalloc.
  • Arquitetura de acesso à I/O no Linux. As funções de acesso à memory-mapped I/O e port I/O. Implementando o acesso à uma região de I/O mapeado em memória em um device driver.
  • Gerenciamento de processos no kernel Linux. Os estados de um processo. Implementando uma thread do kernel. Usando wait queues para bloquear uma tarefa aguardando por um recurso ou evento.
  • Gerenciamento de interrupções. Registrando e implementando uma rotina de tratamento de interrupção em um device driver. Compartilhando interrupções entre drivers. Dividindo o tratamento de uma interrupção em top half e bottom half. Implementando bottom halves através de softirqs, tasklets e work queues.
  • Mecanismos de sincronização. Restrições em um ambiente multithread e os problemas de concorrência. Usando as funções de operações atômicas e protegendo o acesso concorrente com semáforos, mutexes, spinlocks e outros mecanismos de sincronização.
  • Debugging e tracing. Debugging com mensagens. Usando a API do debugfs e os comandos sysrq. Entendendo kernel oops e as mensagens de erro do kernel. Configurando debugging com kgdb. Instrumentando o kernel com kernel probes, SystemTap, tracepoints e LTTng.
  • Framework de drivers do kernel e o modelo de dispositivos (device model). Desenvolvendo um driver de dispositivo compatível com o framework de device model do kernel.
  • Estudando e entendendo os drivers de dispositivo para barramentos comuns como USB e I2C.
  • Entendendo as camadas TTY, input e vídeo no Linux.
  • Entendendo melhor o kernel Linux. O boot do kernel em detalhes. Portando o kernel para uma nova plataforma.
  • Dicas e recursos para trabalhar com o kernel. Como reportar problemas e conseguir ajuda. Como enviar patches e contribuir.

A página oficial do treinamento é esta aqui. Abrirei turmas a partir de março/2013. Devo definir o local do treinamento, as datas e o valor do investimento em breve.

Para receber um e-mail assim que abrir as turmas, você pode se cadastrar na newsletter da Labworks clicando aqui.

Se você quiser levar este treinamento para a sua empresa ou instituição de ensino, envie um e-mail com o assunto “Treinamento in-loco”.

Mais novidades em breve!

Um abraço,

Sergio Prado

Faça um Comentário

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.