Vous êtes sur la page 1sur 31

Introduo ao Linux Embarcado

Embarcados Experience:

Seminrio Linux Embarcado 2015

25 de Julho So Paulo
Sobre o Palestrante

Igor Tavares desenvolvedor na Philips Healthcare em So Paulo


e formado em Engenharia Eltrica pela Universidade Federal de
Uberlndia (UFU).

apaixonado pelo desenvolvimento de aplicaes Linux e


entusiasta do movimento open-source.

Articulista no portal Embarcados.


Sobre o que vamos falar?
Origem

Em 1991 Linus Torvalds inicia o projeto do Kernel Linux


1970s

Proliferao de dispositivos digitais como relgios, microondas,


fornos, aparelhos de videocassete, etc.

Microcontroladores de 8 e/ou 16 bits.

Bare metal com mquinas de estado e outros tipos primitivos de


topologia de software (firmware) desenvolvidos de acordo com as
exigncias dos projetos.
1980s

Chegada dos primeiros sistemas operacionais de propsito geral


comerciais projetados especialmente para sistemas embarcados.

RTOSes "off-the-shelf".

Versatile Real-Time Executive (VRTX) da Hunter & Ready em 1980


foi o pioneiro.

VxWorks da Wind River surgiu em 1987 como um do lderes de


mercado no seguimento.
Qual foi o grande avano?

Time-to-market
1999

Lanamento das primeiras distribuies off-the-shelf de Linux


embarcado destinado a dispositivos e aplicaes embarcadas.

MontaVista com o Red Hat-based Hard Hat Linux foi a pioneira.


Quais outras vantagens?

Muitos olhos para verificar:


given enough eyeballs, all bugs are shallow. - Eric S. Raymond

Ciclo vicioso:
Quantos menos bugs o software tiver mais o software ser usado, testado,
corrigido e menos bugs ele vai ter.

Compatvel com MMU ( memory management units) e memria virtal:


Mais resistente a crashes na aplicao.

Royalty-free e escalabilidade.

Voc tem acesso aos cdigos fontes.


Quais outras vantagens?

Comunidade:
Componentes open-source so desenvolvidos por uma
comunidade de desenvolvedores e usurios.
As comunidades podem te fornecer suporte de alta qualidade.
Voc tem contato inclusive com os principais desenvolvedores
dos projetos.
Em muitos casos o suporte melhor comparado ao suporte
prestado por empresas comerciais, mas voc precisa saber
como usar corretamente e dar retorno ao suporte da
comunidade.
Arquitetura
Arquitetura
Hardware

CPU:
Suporta mais de 28 arquiteturas diferentes (x86, ia64, ARM, PPC,
MIPS, SuperH, Blackfin, Coldfire, etc).
32/64 bits.
Originalmente projetado para CPUs com MMU (Memory
Management Unit).

Memria RAM:
Um sistema Linux bem bsico pode funcionar com 8MB de RAM, mas
o ideal para comear em torno de 32MB.

Armazenamento:
Suporta armazenamento em memria flash NAND e NOR,
disco rgido, carto SD/MMC, etc.
Toolchain

Conjunto de ferramentas de programao usado para gerar um


software ou mesmo um sistema completo.

Quando a plataforma de desenvolvimento (host) diferente da


plataforma alvo (target), chamamos o toolchain de cross-
compiling toolchain.
Componentes do Toolchain

Compilador.

Debugger.

Assembler e Linker (binutils).

Standard C Library (glibc, uclibc, dietlibc, etc).

Headers do kernel.
Bootloader

Inicializar o hardware.

Carrega e executa o sistema operacional.


Bootloader

Outras Funcionalidades:
Passagem de parmetros para o kernel.
Ler e escrever em dispositivos de armazenamento.
Boot pela rede.
Rotinas de diagnstico de hardware
Principais Bootloaders

LILO
Grub
Syslinux
U-Boot
Barebox
Redboot
Kernel

Gerenciar a execuo dos processos e controlar o acesso


memria e I/O.

Interface de user space com kernel space via chamadas do


sistema (system calls).

Acesso ao hardware via arquivos de dispositivo.

Gerenciamento dinmico de mdulos do kernel.


Chamadas de sistema

O Linux possui aproximadamente 300 chamadas de sistema.

Operaes em arquivos, operaes de rede, comunicao entre


processos, gerenciamento de processos, mapeamento de memria,
timers, threads, mecanismos de sincronizao, etc.

As chamadas de sistema so abstradas pela biblioteca C padro. As


aplicaes normalmente no precisam fazer uma chamada direta.
Tudo feito atravs da biblioteca C padro.

A interface de chamadas de sistema bem estvel. Durante novas


verses do kernel, apenas novas chamadas de sistema so
adicionadas.
Sistemas de arquivo

Sistemas de arquivo so usados para organizar dados, de forma


hierrquica, em diretrios e arquivos disponveis em dispositivos
de armazenamento (locais ou remotos).

Em sistemas Unix, aplicaes e usurios enxergam apenas uma


hierarquia nica e global de arquivos e diretrios, que podem ser
compostos por diferentes sistemas de arquivo.

Exemplos de sistemas de arquivo: FAT, NTFS, EXT2, EXT3, JFFS2.


Rootfs

montado na raiz principal da hierarquia, identificado por /.

O rootfs pode ser montado de diferentes localidades:


Da partio de um HD.
Da partio de um pendrive.
Da partio de um carto SD.
Da partio de uma memria flash NAND.
Pela rede, atravs do protocolo NFS.
Da memria, pr-carregado pelo bootloader.
Build System

Gera o toolchain.

Compila e gera a imagem do bootloader.

Configura, compila e gera a imagem do kernel.

Compila bibliotecas e aplicaes, e gera a imagem final do


rootfs.
Exemplos de Build Systems

Proprietrios:
Monta Vista.
Wind River.
TimeSys.

Open source:
Buildroot.
LTIB.
Yocto Project.
OpenEmbedded.
Bibliotecas, ferramentas, aplicaes...
Placas de desenvolvimento
O desenvolvedor
O desenvolvedor

Conhecimento em administrao de sistemas Linux.

Conhecimento em desenvolvimento de software, principalmente atravs


de ferramentas de cdigo aberto.

Conhecimento em desenvolvimento de firmware. Em especial,


microcontroladores.

Conhecimentos em redes de computadores.

Conhecimentos em projetos de hardware.


Agradecimentos

Embarcados, pela oportunidade.

Embedded Labworks, pelo material de estudos no qual esta


apresentao foi fortemente baseada.
Obrigado!

igorborgest@gmail.com

https://github.com/igorTavares

http://www.embarcados.com.br/author/igor-tavares/

Vous aimerez peut-être aussi