(61) 3223-3000

Fale conosco

 

alt

Curso realizado de forma presencial em laboratório.

Apresentação

Este curso tem o objetivo de apresentar o uso do kernel Linux em sistemas embarcados, sua preparação e instalação em uma plataforma. Nele o aluno aprenderá sobre o Linux, processo de desenvolvimento de sistemas embarcados, ferramentas de desenvolvimento, boas práticas de projeto e programação.

O Linux é um kernel (núcleo de um sistema operacional) livre para utilização, estudo e modificação, licenciado como GPL, com uma comunidade de desenvolvedores bem atuante. Seu código é bastante portável, e já está disponível para várias plataformas de hardware existentes.
O mercado de semicondutores e dispositivos está adotando o Linux cada vez mais, através de suporte aos seus produtos. Desenvolvedores de software de base, software embutido e fabricantes de dispositivos e equipamentos devem considerar adotar o Linux como kernel para seus sistemas e contribuir com melhorias para ele, com o benefício de grande economia em tempo de desenvolvimento e custos.
Este curso instrui o aluno a participar disso. O Linux é um software livre, e quando utilizado em um produto, sua licença, bem como as dos demais softwares que acompanham o produto final, devem ser respeitadas.

 

Público alvo
Profissionais e entusiastas interessados no desenvolvimento de sistemas embarcados com o kernel Linux.

 

Vantagens do curso

  • Melhor conhecimento sobre o funcionamento do Kernel Linux
  • Processo de projeto e construção de sistemas completos e funcionais para plataformas embarcadas com o Linux
  • Conhecimento de critérios e boas práticas para a construção de sistemas

 

Carga horária

60 horas

 

Pré-requisitos

  • Inglês técnico (leitura)
  • Conhecimentos em programação em C e shell
  • Conteúdo programático

 

Instrutor
Bacharel em Ciência da Computação pela UFMG. Desenvolvedor de Software desde 1996, com experiência em linguagem C desde 1999. Prestador de serviços a diversas empresas desenvolvendo software de base, incluindo controladores de dispositivos em sistemas operacionais modernos e consultor no desenvolvimento de sistemas operacionais para dispositivos portáteis. Desenvolvedor de software livre atuante.

 

Ementa

1. Introdução

  • Apresentação
  • Arquitetura de um sistema embarcado
  • Hardware
  • Kernel space
  • User space
  • Distribuições
  • Sistemas de construção
  • Controle de versão

2. Ambiente de Desenvolvimento

  • Usando gcc
  • Usando make
  • Usando gdb
  • Sistemas de tracing
  • Usando binutils
  • DHCP/TFTP/NFS

3. Toolchain/Cross-toolchain

  • Compilando e instalando binutils
  • Compilando e instalando gcc
  • Biblioteca padrão
  • Bibliotecas compartilhadas

4. Biblioteca padrão

  • Função e operação
  • Alternativas: glibc, eglibc, klibc, uclibc, dietlibc, newlib, bionic
  • Compilando uclibc

5. Linux

  • Estrutura
  • Obtenção
  • Construção
  • Módulos
  • Criando módulos externos
  • Criando módulos internos

6. Boot do Linux

  • Papel do bootloader
  • Parâmetros do kernel
  • initrd/initramfs

7. Userspace

  • Sistema de arquivos raiz
  • init e scripts de inicialização

8. Bootloaders

  • Redboot
  • U-boot

9. Device Drivers

  • Modelos de drivers
  • Construção de um driver simples

10. Manipulando e criando dispositivos

  • ioctl
  • /dev
  • /sys
  • mknod
  • makedev
  • udev/mdev

11. Sistemas de arquivos

  • Conceitos
  • Dispositivos de bloco e MTD
  • Sistemas somente-leitura
  • JFFS2, cramfs, squashfs, etc
 

12. Busybox

  • Configuração
  • Compilação

13. Sistemas de build

  • Conceitos
  • Alternativas: buildroot, openembedded, scratchbox, em debian e outros
  • Configurando e gerando uma imagem de sistema de arquivos
  • Adicionando aplicações ao sistema de build

 

alt