Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009

on

  • 1,557 views

Palestra apresentada no evento Tchelinux 2009 em Porto Alegre. ...

Palestra apresentada no evento Tchelinux 2009 em Porto Alegre.

Resumo da Palestra:
Esta palestra abordará os itens necessários para construir um sistema de Linux embarcado. Serão abordados os problemas típicos envolvendo Linux em sistemas embarcados, 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 de desenvolvimento baseada em PowerPC.

Statistics

Views

Total Views
1,557
Views on SlideShare
1,557
Embed Views
0

Actions

Likes
1
Downloads
43
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009 Presentation Transcript

  • 1. Desenvolvendo  Sistemas  de   Linux  Embarcado   Marcelo  Veiga  Neves   marcelo.veiga@gmail.com   Tchelinux  2009   Porto  Alegre,  14  de  novembro  de  2009  
  • 2. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   •  Demonstração   •  Referências   1  
  • 3. Roteiro   •  Introdução   –  Sistemas  Embarcados   –  Linux  Embarcado   –  Exemplo  de  Hardware  para  Sistemas  Embarcados   –  Inicialização  do  Linux  em  Sistemas  Embarcados   •  Projeto  de  Linux  Embarcado   •  Demonstração   •  Referências   2  
  • 4. Introdução   •  ObjeRvos:   –  Compreender  o  funcionamento  de  um  Sistema  de  Linux   Embarcado   –  Quais  os  componentes  de  soVware  precisam  ser   preparados   –  Como  criar  um  Linux  Embarcado  completo   •  Pré-­‐requisitos:   –  Compreensão  do  papel  e  funcionamento  do  Kernel  do   Linux   –  Familiaridade  com  ambiente  de  desenvolvimento  Linux   3  
  • 5. Sistemas  Embarcados   •  Definição  de  Sistema  Embarcado:   “Um  sistema  embarcado  é  um  computador  que  é   completamente  encapsulado  ou  dedicado  ao   disposiRvo  ou  sistema  que  ele  controla.”  (Wikipedia)   •  Requisitos/CaracterísRcas  de  Sistemas  Embarcados   –  Recursos  reduzidos  (CPU,  memória,  energia,  etc.)   –  Armazenamento  de  estado  sólido  (flash)   –  Operação  “Head  less”  (sem  display)   –  Etc.   4  
  • 6. Linux  Embarcado   •  Não  é  apenas  o  Kernel   •  SoVware  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   5  
  • 7. Exemplo  de  Hardware  para  Sistema  Embarcado   •  Kit  de  desenvolvimento:  Freescale   MPC8313E-­‐RDB   •  PowerPC  PowerQUICC  II  PRO   MPC8313E  (a  333/133  MHz)   •  128  MByte  DDR2   •  32  MByte  NAND  Flash   6  
  • 8. 7  
  • 9. Inicialização  do  Linux   8  
  • 10. O  que  precisa  ser  preparado?   9  
  • 11. O  que  precisa  ser  preparado?   10  
  • 12. O  que  precisa  ser  preparado?   11  
  • 13. O  que  precisa  ser  preparado?   12  
  • 14. O  que  precisa  ser  preparado?   13  
  • 15. O  que  precisa  ser  preparado?   14  
  • 16. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Considerações  Finais   15  
  • 17. Toolchain   •  Conjunto  de  ferramentas  necessárias  para  compilar  (ou  cross-­‐ compilar)  um  sistema  Linux   •  Componentes:   –  BinuRls  (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   –  URlizar  uma  ferramenta  de  geração  (crosstool-­‐ng,  buildroot,  PTXdist,   OpenEmbedded,  etc.)   16  
  • 18. Exemplo:  Buildroot   •  Exemplo  de  geração:   $  git  clone  git://git.buildroot.net/buildroot   $  cd  buildroot   $  make  menuconfig  #  Configurar  geração  do  toolchain   $  make   $  ls  output/stagging/*  #  Conteúdo  do  toolchain   •  Configurar  ambiente:   $  export  PATH:/path/to/buildroot/output/stagging/usr/bin:$PATH   $  export  CROSS_COMPILE=powerpc-­‐linux-­‐uclibc-­‐   #  Teste  de  compilação   $  powerpc-­‐linux-­‐uclibc-­‐gcc  –o  hello  helloworld.c   17  
  • 19. Exemplo:  Buildroot   Demo!   (Geração  de  toolchain  com  o  Buildroot)   18  
  • 20. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   19  
  • 21. Bootloader   •  Primeiro  soVware  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ósRco   20  
  • 22. Bootloaders   Fonte:  h~p://www.elinux.org/Bootloader,  13/11/09     21  
  • 23. Bootloaders   Fonte:  h~p://www.elinux.org/Bootloader,  13/11/09     22  
  • 24. Exemplo:  U-­‐Boot   •  Exemplo  de  compilação:   $  git  clone  git://git.denx.de/u-­‐boot   $  cd  u-­‐boot   $  export  CROSS_COMPILE=powerpc-­‐linux-­‐uclibc-­‐   $  make  clobber   $  make  MPC8313ERDB_33_config  #  Configuração  para  a  placa   $  make   ...   $  ls  u-­‐boot.bin   •  Porte  para  uma  nova  plataforma:   –  u-­‐boot/Makefile   –  u-­‐boot/board/<boardname>/*   –  u-­‐boot/include/configs/<boardname>.h   23  
  • 25. Exemplo:  U-­‐Boot   Demo!   (Compilação  e  uRlização  do  u-­‐boot)   24  
  • 26. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   25  
  • 27. Kernel  do  Linux   26  
  • 28. Exemplo:  Linux  para  PowerPC   •  Exemplo  de  compilação:   $  git  clone  git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-­‐2.6.git   $  cd  linux-­‐2.6   $  export  CROSS_COMPILE=powerpc-­‐linux-­‐uclibc-­‐   $  export  ARCH=powerpc   $  make  mrproper     $  make  83xx/mpc8313_rdb_defconfig  #  Configuração  para  a  placa   $  make  menuconfig  #  Refinar  configuração     $  make   ...   $  ls  arch/powerpc/boot/uImage  #  Imagem  para  ser  usada  com  o  u-­‐boot   •  Módulos:   $  make  modules   $  make  modules_install  INSTALL_MOD_PATH=/path/to/roo•s   27  
  • 29. Exemplo:  Linux  para  PowerPC   •  Porte  para  uma  nova  plataforma   •  PowerPC:   – Device  Tree  Blob  (DTB)     •  Arquivo  que  descreve  o  hardware   •  Também  uRlizado  pelo  bootloader   •  Outras  arquiteturas:   – Modificar  o  código  fonte   – Ex:  ARM   •  Modificar/criar  arch/arm/mach-­‐[plataforma]/   28  
  • 30. Exemplo:  Linux  para  PowerPC   Demo!   (Compilação  do  Linux  e  arquivo  de  device  tree)   29  
  • 31. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   30  
  • 32. 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)   –  URlizando  um  sistema  de  build   •  Tipos  de  sistemas  de  arquivos:   –  Ext2/3   –  Em  flash:   •  SquashFS  (read-­‐only,  rápido)   •  JFFS2  (mais  uRlizado  atualmente)   •  UBIFS  (sucessor  do  JFFS2,  rápido)   –  cramfs,initramfs,  etc.   31  
  • 33. Root  Filesystem   Ferramentas  para   geração   Fonte:  Embedded  building  tools  BOF,  Thomas  Petazzoni  (ELC  2009)  32  
  • 34. Root  Filesystem   Ferramentas  para   geração   Fonte:  Embedded  building  tools  BOF,  Thomas  Petazzoni  (ELC  2009)  33  
  • 35. Exemplo:  Buildroot   •  Exemplo  de  compilação:   $  git  clone  git://git.buildroot.net/buildroot   $  cd  buildroot   $  make  menuconfig  #  Configurar  roo•s  para  a  placa,  seleção  de  pacotes   $  make   $  ls  output/target/*  #  Conteúdo  do  roo•s   $  ls  output/images/roo•s.powerpc.ext2.gz  #  Imagem  gerada       •  Geração  da  imagem  de  roo•s  para  o  u-­‐boot   $  make  menuconfig  #  Configurar  buildroot  para  compilar  o  u-­‐boot   $  make  BOARD_NAME=MPC8313ERDB_33   #  Comando  de  geração  de  imagens  do  u-­‐boot   $  mkimage  -­‐n  'uboot  ext2  ramdisk  roo•s'       -­‐A  ppc  -­‐O  linux  -­‐T  ramdisk  -­‐C  gzip       -­‐d  ./output/images/roo•s.powerpc.ext2.gz       ./output/images/roo•s.powerpc.ext2.gz.uboot     34  
  • 36. Exemplo:  Buildroot   Demo!   (Geração  de  roo•s  com  o  Buildroot)   35  
  • 37. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   •  Demonstração   •  Referências   36  
  • 38. Demonstração  na  Placa   •  Boot  dos  binários  gerados  na  apresentação  (via  TFTP)   •  Configuração  da  rede  e  dos  parâmetros  de  boot  do  Kernel:   =>  setenv  ethact  TSEC1   ⇒ setenv  ipaddr  10.1.1.2     ⇒ setenv  serverip  10.1.1.1     =>  setenv  bootargs  root=/dev/ram  console=~yS0,115200   =>  saveenv   •  Configuração  dos  parâmetros  de  boot  do  Kernel:   ⇒ •tp  200000  uImage     ⇒ •tp  1000000  roo•s.powerpc.ext2.gz.uboot     ⇒ ‡tp  400000  mpc8313erdb.dtb     ⇒ bootm  200000  1000000  400000     37  
  • 39. Referências   •  Embedded  Linux  Conference   – h~p://www.embeddedlinuxconference.com/   – Apresentações  (ELC  2009):   •  It's  Alive!  -­‐  Linux  on  Embedded  PowerPC  porRng  guide,   Grant  Likely   •  Update  on  filesystems  for  flash  storage,  Michael   Opdenacker     •  Embedded  Linux  and  Mainline  Kernel,  David   Woodhouse   38  
  • 40. Referências   •  Livros:   – Building  Embedded  Linux  Systems,   Karim  Yaghmour   – Embedded  Linux  Primer:  A   PracRcal  Real-­‐World  Approach,   Christopher  Hallinan   39  
  • 41. Referências   •  Embedded  Linux  Wiki   – h~p://www.elinux.org   •  Free  Electrons   – h~p://free-­‐electrons.com/docs/   40  
  • 42. Desenvolvendo  Sistemas  de   Linux  Embarcado   Marcelo  Veiga  Neves   marcelo.veiga@gmail.com   Tchelinux  2009   Porto  Alegre,  14  de  novembro  de  2009