Compartilhe:
Início > Linux device drivers

Linux device drivers

Este treina­mento visa capac­i­tar o par­tic­i­pante no desen­volvimento de drivers de dispositivo para Linux embarcado.

Durante o treinamento, os seguintes tópicos serão abordados:

  • 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 APIs 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 a uma região de I/O mapeado em memória em um device driver.
  • Frameworks do kernel. Estudando em detalhes alguns frameworks, incluindo framebuffer, leds e input. Implementando um driver integrado ao framework de leds do kernel.
  • API de gerenciamento de GPIO (gpiolib) do kernel. Adaptando o driver de led para acessar a camada de GPIO do kernel.
  • Arquitetura do driver model e da infraestrutura de barramento do kernel. Acesso ao barramento I2C e implementação de drivers de dispositivo I2C. Trabalhando com platform devices.
  • Introdução ao device tree. Analisando um device tree. Adaptando um driver para trabalhar com o device tree. Gerando e passando o dtb para o kernel.
  • 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 através de um driver de botão.
  • 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 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. Analisando o uso de locking por um driver de expansora de GPIO conectada ao barramento SPI.
  • 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.
  • Dicas e recursos para trabalhar com o kernel. Como reportar problemas e conseguir ajuda. Como enviar patches e contribuir.

Para mais detal­hes sobre o con­teúdo, você pode consultar a agenda e os slides do treina­mento.

Os slides deste treinamento são liberados sob a licença Creative Commons BY-SA 3.0, e os fontes podem ser baixados aqui.

Algumas fotos dos treinamentos já realizados podem ser visualizadas aqui.

Público-alvo

Estu­dantes, engen­heiros, desen­volve­dores e líderes de equipes de desen­volvi­mento de soft­ware para sis­temas embar­ca­dos.

Pré-requisitos

Os participantes devem estar familiarizados com a interface de linha de comandos de sistemas Linux e ter conhecimentos intermediários em linguagem C. Para um melhor aproveitamento, é aconselhável ter conhecimentos em desenvolvimento de sistemas com Linux embarcado. Se o participante não tiver este conhecimento, pode realizar antes o treinamento de Linux embarcado ou estudar a bibliografia indicada no fim dos slides do treinamento de Linux embarcado.

Equipa­men­tos

Todos os equipa­men­tos necessários são forneci­dos pela Embedded Lab­works.

Mate­r­ial de estudo

O mate­r­ial de estudo é com­posto pelos slides das apre­sen­tações, o livro de ativi­dades e exer­cí­cios, os guias de refer­ên­cia e doc­u­men­tos de estudo adi­cionais. Todo o mate­r­ial será fornecido de forma eletrônica no iní­cio do treina­mento.

Kit de desenvolvimento

Os exercícios do treinamento são realizados no módulo Colibri i.MX6 da Toradex (ARM Cortex-A9), com a placa-base Viola e uma placa de expansão com diversos periféricos, incluindo leds, botões, trimpot, buzzer, UART, sensor de luminosidade, expansor de GPIO, display de 7 segmentos e acelerômetro.

Turmas abertas

Os treinamentos em turmas abertas são realizados em um ambiente agradável, com um laboratório devidamente equipado e acesso à Internet. As aulas são normalmente ministradas em período integral, com uma parada para o almoço e um coffee-break pela manhã.

Caso esteja interessado em participar do treinamento e não exista uma turma aberta, faça a pré-inscrição clicando aqui. Entraremos em contato assim que uma nova turma for aberta.

Treinamentos in-company

Se você planeja capacitar a sua equipe, considere um treinamento na sua empresa.

Turmas fechadas para treinamento in-company possuem as mesmas características de uma turma aberta. Neste modelo, a empresa é responsável por fornecer os recursos necessários para a realização do treinamento, incluindo sala, datashow e as máquinas de desenvolvimento. Esse modelo também traz grande economia para a empresa, já que o custo do transporte e estadia de vários funcionários é reduzido apenas ao do instrutor.

Se sua empresa tem uma necessidade especial, podemos estudar um programa que atenda sua necessidade de forma direcionada, como preparar o treinamento para uma plataforma de hardware específica ou desenvolver um conteúdo adicional. Não hesite em entrar em contato por e-mail ou pela página de contato.

Treinamentos na sua cidade

Você pode levar os treina­mentos para sua comu­nidade, em qual­quer cidade do Brasil.

Você não tem condições de realizar o curso em São Paulo? Você tem um grupo de estu­dos e quer aprender mais sobre determinada tecnologia? Você coor­dena ou par­tic­ipa da coor­de­nação de algum curso na sua uni­ver­si­dade e gostaria de treinar seus alunos? Você tem um espaço, quer reunir os ami­gos e pas­sar agradáveis horas apren­dendo sobre sistemas embar­cados?

Mande um e-mail ou uma mensagem para nós. Informe seu curso de interesse e também a sua cidade. Se conseguirmos formar uma turma, poderemos levar o treinamento para a sua cidade!

Clientes que já fizeram o treinamento
Ainda tem dúvidas?

Em caso de dúvidas, críticas ou sugestões, envie um e-mail ou deixe uma mensagem na página de contato.

Entre em contato