34
Linux em Sistemas Embarcados Marcelo Veiga Neves [email protected] SACTA 2010 Alegrete, 25 de junho de 2010

Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Embed Size (px)

DESCRIPTION

Palestra apresentada durante a Semana Acadêmica do Centro de Tecnologia de Alegrete - SACTA 2010 - da Universidade Federal do Pampa - UNIPAMPA, em Alegrete - RS. Resumo: Esta palestra tem como tema o desenvolvimento de Linux para sistemas embarcados. Primeiramente, será apresentada uma visão geral da área. Na sequência, serão abordados os problemas típicos envolvendo o porte do Linux para novas plataformas, a preparação de toolchains para cross-compilação, bootloaders, escolha de sistemas de arquivos, preparação do kernel para trabalhar com os barramentos e dispositivos típicos em sistemas embarcados, depuração do hardware embarcado, entre outros. A palestra terá também uma seção de demonstração utilizando uma placa baseada em PowerPC.

Citation preview

Page 1: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Linux  em  Sistemas  Embarcados  

Marcelo  Veiga  Neves  [email protected]  

SACTA  2010  Alegrete,  25  de  junho  de  2010  

Page 2: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Roteiro  

•  Introdução  •  Projeto  de  Linux  Embarcado  •  Demonstração  

•  Referências  

1  

Page 3: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Roteiro  

•  Introdução  –  Sistemas  Embarcados  

–  Linux  Embarcado  –  Exemplos  de  Sistemas  Embarcados  com  Linux  

–  Inicialização  do  Linux  em  Sistemas  Embarcados  

•  Projeto  de  Linux  Embarcado  

•  Demonstração  •  Referências  

2  

Page 4: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Introdução  

•  ObjePvos:  – Conhecer  a  área  de  Linux  para  Sistemas  Embarcados  – Compreender  o  funcionamento  de  um  Sistema  de  Linux  Embarcado  

– Quais  os  componentes  de  soTware  precisam  ser  preparados  para  criar  um  Linux  Embarcado  completo  

•  Pré-­‐requisitos:  – Compreensão  do  papel  e  funcionamento  do  Kernel  do  Linux  

– Familiaridade  com  ambiente  de  desenvolvimento  Linux  

3  

Page 5: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Sistemas  Embarcados  

•  Definição  de  Sistema  Embarcado:  

•  Requisitos/CaracterísPcas  de  Sistemas  Embarcados  – Recursos  reduzidos  (CPU,  memória,  energia,  etc.)  – Armazenamento  de  estado  sólido  (flash)  – Operação  “Head  less”  (sem  display)  – Etc.  

4  

“Um  sistema  embarcado  é  um  computador  que  é  completamente  encapsulado  ou  dedicado  ao  disposiPvo  ou  sistema  que  ele  controla.”  (Wikipedia)  

Page 6: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

5  

Page 7: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Oportunidades  em  Linux  Embarcado  

•  Oportunidade  para:  – Nerds  que  gostam  de  Linux  e  SoTware  Livre  – Quem  quer  desenvolver  em  nível  de  Kernel  

•  Porte  do  Linux  para  novas  plataformas  •  Criação  e  adaptação  de  drivers  de  disposiPvos  •  Implementação  de  protocolos  de  rede  

– Quem  prefere  programar  em  C  em  ambiente  Linux  (também  tem  lugar  para  quem  gosta  de  Java,  C++,  Python,  etc.)  

•  Mercado  está  aquecido  e  não  existe  profissionais  •  Oportunidades  também  para  empreendedores  

6  

Page 8: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Linux  Embarcado  

•  Todo  o  soTware  necessário  para  o  Linux  funcionar  em  um  Sistema  Embarcado  – Aplicações  para  prover  funcionalidades  específicas  do  sistema  

– Kernel  com  configuração  específica  – Bootloader  para  configurar  o  hardware  e  iniciar  o  sistema  operacional  

7  

Page 9: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Inicialização  do  Linux  

8  

Page 10: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

O  que  precisa  ser  preparado?  

9  

Page 11: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

O  que  precisa  ser  preparado?  

10  

Page 12: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

O  que  precisa  ser  preparado?  

11  

Page 13: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

O  que  precisa  ser  preparado?  

12  

Page 14: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

O  que  precisa  ser  preparado?  

13  

Page 15: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

O  que  precisa  ser  preparado?  

14  

Page 16: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Roteiro  

•  Introdução  •  Projeto  de  Linux  Embarcado  

–  Toolchain  – Bootloader  – Kernel  – Root  Filesystem  

•  Demonstração  •  Considerações  Finais  

15  

Page 17: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Toolchain  

•  Conjunto  de  ferramentas  necessárias  para  compilar  (ou  cross-­‐compilar)  um  sistema  Linux  

•  Componentes:  –  BinuPls  (as,  ld,  ar,  ramlib,  strip,  etc.)  –  Kernel  headers  (#include  <linux/*>,  <asm/*>,  etc.)  –  Compilador  C  (GCC)  –  Biblioteca  C  (glibc,  uClibc,  dietlibc,  etc.)  

•  Opções  para  geração  de  toolchain:  –  Gerar  manualmente  (compilando  cada  pacote)  –  Obter  uma  cópia  pré-­‐compilada  –  UPlizar  uma  ferramenta  de  geração  (crosstool-­‐ng,  buildroot,  PTXdist,  

OpenEmbedded,  etc.)  

16  

Page 18: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Roteiro  

•  Introdução  •  Projeto  de  Linux  Embarcado  

–  Toolchain  –  Bootloader  – Kernel  – Root  Filesystem  

•  Demonstração  

•  Referências  

17  

Page 19: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Bootloader  

•  Primeiro  soTware  que  executa  quando  o  hardware  é  ligado  

•  Responsável  por  carregar  e  transferir  o  controle  para  o  Kernel  

•  Para  isso:  –  Configura  o  hardware  – Oferece  comandos  para  

configuração  e  diagnósPco  

18  

Page 20: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Bootloaders  

19  Fonte:  hzp://www.elinux.org/Bootloader,  13/11/09    

Page 21: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Bootloaders  

20  Fonte:  hzp://www.elinux.org/Bootloader,  13/11/09    

Page 22: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Roteiro  

•  Introdução  •  Projeto  de  Linux  Embarcado  – Toolchain  – Bootloader  – Kernel  – Root  Filesystem  

•  Demonstração  •  Referências  

21  

Page 23: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Kernel  do  Linux  

22  

Page 24: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Exemplo:  Linux  para  PowerPC  

•  Porte  para  uma  nova  plataforma  •  PowerPC:  – Device  Tree  Blob  (DTB)    

•  Arquivo  que  descreve  o  hardware  •  Também  uPlizado  pelo  bootloader  

•  Outras  arquiteturas:  – Modificar  o  código  fonte  – Ex:  ARM  

• Modificar/criar  arch/arm/mach-­‐[plataforma]/  

23  

Page 25: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Roteiro  

•  Introdução  •  Projeto  de  Linux  Embarcado  – Toolchain  – Bootloader  – Kernel  – Root  Filesystem  

•  Demonstração  •  Referências  

24  

Page 26: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Root  Filesystem  

•  Árvore  de  diretórios  contendo  bibliotecas,  scripts,  aplicações,  etc.  

•  Opções  para  geração  de  roofs:  –  Manual  (compilando  e  instalando  cada  pacote)  –  UPlizando  um  sistema  de  build  

•  Tipos  de  sistemas  de  arquivos:  –  Ext2/3  –  Em  flash:  

•  SquashFS  (read-­‐only,  rápido)  •  JFFS2  (mais  uPlizado  atualmente)  •  UBIFS  (sucessor  do  JFFS2,  rápido)  

–  cramfs,initramfs,  etc.  

25  

Page 27: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Root  Filesystem  

26  Fonte:  Embedded  building  tools  BOF,  Thomas  Petazzoni  (ELC  2009)  

Ferramentas  para  geração  

Page 28: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Root  Filesystem  

27  Fonte:  Embedded  building  tools  BOF,  Thomas  Petazzoni  (ELC  2009)  

Ferramentas  para  geração  

Page 29: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Roteiro  

•  Introdução  •  Projeto  de  Linux  Embarcado  •  Demonstração  

•  Referências  

28  

Page 30: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Demonstração  na  Placa  

•  Roteador  3G  da  Digitel  –  NRX  5100  

•  Processador  PowerPC  de  333  MHz  

•  64  MB  de  memória  RAM  e  32  MB  de  Flash  

29  

•  Demonstração:  •  Boot  do  Linux  Embarcado  via  rede  (protocolo  TFTP)  •  Configuração  da  rede  e  dos  parâmetros  de  boot  do  Kernel:  •  Acesso  ao  equipamento,  servidor  Web,  sistemas  de  

arquivos,  etc.  

Page 31: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Referências  

•  Embedded  Linux  Conference  – hzp://www.embeddedlinuxconference.com/  

– Apresentações  (ELC  2009):  •  It's  Alive!  -­‐  Linux  on  Embedded  PowerPC  porPng  guide,  Grant  Likely  • Update  on  filesystems  for  flash  storage,  Michael  Opdenacker    

• Embedded  Linux  and  Mainline  Kernel,  David  Woodhouse  

30  

Page 32: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Referências  

•  Livros:  – Building  Embedded  Linux  Systems,  Karim  Yaghmour  

– Embedded  Linux  Primer:  A  PracPcal  Real-­‐World  Approach,  Christopher  Hallinan  

31  

Page 33: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Referências  

•  Embedded  Linux  Wiki  – hzp://www.elinux.org  

•  Free  Electrons  – hzp://free-­‐electrons.com/docs/  

32  

Page 34: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Linux  em  Sistemas  Embarcados  

Marcelo  Veiga  Neves  [email protected]  

SACTA  2010  Alegrete,  25  de  junho  de  2010