Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Desenvolvendo	
  Sistemas	
  de	
  
    Linux	
  Embarcado	
  
       Marcelo	
  Veiga	
  Neves	
  
            marcelo.ve...
Roteiro	
  
•    Introdução	
  
•    Projeto	
  de	
  Linux	
  Embarcado	
  
•    Demonstração	
  
•    Referências	
  


...
Roteiro	
  
•  Introdução	
  
    –  Sistemas	
  Embarcados	
  
    –  Linux	
  Embarcado	
  
    –  Exemplo	
  de	
  Hard...
Introdução	
  
•  ObjeRvos:	
  
    –  Compreender	
  o	
  funcionamento	
  de	
  um	
  Sistema	
  de	
  Linux	
  
       ...
Sistemas	
  Embarcados	
  
•  Definição	
  de	
  Sistema	
  Embarcado:	
  
     “Um	
  sistema	
  embarcado	
  é	
  um	
  c...
Linux	
  Embarcado	
  
•  Não	
  é	
  apenas	
  o	
  Kernel	
  
•  SoVware	
  necessário	
  para	
  o	
  Linux	
  funciona...
Exemplo	
  de	
  Hardware	
  para	
  Sistema	
  Embarcado	
  


•  Kit	
  de	
  desenvolvimento:	
  Freescale	
  
   MPC83...
7	
  
Inicialização	
  do	
  Linux	
  




                                   8	
  
O	
  que	
  precisa	
  ser	
  preparado?	
  




                                               9	
  
O	
  que	
  precisa	
  ser	
  preparado?	
  




                                               10	
  
O	
  que	
  precisa	
  ser	
  preparado?	
  




                                               11	
  
O	
  que	
  precisa	
  ser	
  preparado?	
  




                                               12	
  
O	
  que	
  precisa	
  ser	
  preparado?	
  




                                               13	
  
O	
  que	
  precisa	
  ser	
  preparado?	
  




                                               14	
  
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    – ...
Toolchain	
  
•  Conjunto	
  de	
  ferramentas	
  necessárias	
  para	
  compilar	
  (ou	
  cross-­‐
   compilar)	
  um	
 ...
Exemplo:	
  Buildroot	
  
•  Exemplo	
  de	
  geração:	
  

        $	
  git	
  clone	
  git://git.buildroot.net/buildroot...
Exemplo:	
  Buildroot	
  



                 Demo!	
  
(Geração	
  de	
  toolchain	
  com	
  o	
  Buildroot)	
  




    ...
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    – ...
Bootloader	
  
•  Primeiro	
  soVware	
  que	
  executa	
  
   quando	
  o	
  hardware	
  é	
  ligado	
  

•  Responsável	...
Bootloaders	
  




Fonte:	
  h~p://www.elinux.org/Bootloader,	
  13/11/09	
  	
     21	
  
Bootloaders	
  




Fonte:	
  h~p://www.elinux.org/Bootloader,	
  13/11/09	
  	
     22	
  
Exemplo:	
  U-­‐Boot	
  
•  Exemplo	
  de	
  compilação:	
  
                  $	
  git	
  clone	
  git://git.denx.de/u-­‐...
Exemplo:	
  U-­‐Boot	
  



             Demo!	
  
(Compilação	
  e	
  uRlização	
  do	
  u-­‐boot)	
  




              ...
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    – ...
Kernel	
  do	
  Linux	
  




                            26	
  
Exemplo:	
  Linux	
  para	
  PowerPC	
  
•  Exemplo	
  de	
  compilação:	
  
    $	
  git	
  clone	
  git://git.kernel.org...
Exemplo:	
  Linux	
  para	
  PowerPC	
  
•  Porte	
  para	
  uma	
  nova	
  plataforma	
  
•  PowerPC:	
  
    – Device	
 ...
Exemplo:	
  Linux	
  para	
  PowerPC	
  



                         Demo!	
  
  (Compilação	
  do	
  Linux	
  e	
  arquiv...
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    – ...
Root	
  Filesystem	
  
•  Árvore	
  de	
  diretórios	
  contendo	
  bibliotecas,	
  scripts,	
  
   aplicações,	
  etc.	
 ...
Root	
  Filesystem	
  
Ferramentas	
  para	
  
     geração	
  




                  Fonte:	
  Embedded	
  building	
  to...
Root	
  Filesystem	
  
Ferramentas	
  para	
  
     geração	
  




                  Fonte:	
  Embedded	
  building	
  to...
Exemplo:	
  Buildroot	
  
•  Exemplo	
  de	
  compilação:	
  
          $	
  git	
  clone	
  git://git.buildroot.net/build...
Exemplo:	
  Buildroot	
  



                Demo!	
  
(Geração	
  de	
  roo•s	
  com	
  o	
  Buildroot)	
  




         ...
Roteiro	
  
•    Introdução	
  
•    Projeto	
  de	
  Linux	
  Embarcado	
  
•    Demonstração	
  
•    Referências	
  


...
Demonstração	
  na	
  Placa	
  
•  Boot	
  dos	
  binários	
  gerados	
  na	
  apresentação	
  (via	
  TFTP)	
  
•  Configu...
Referências	
  
•  Embedded	
  Linux	
  Conference	
  
   – h~p://www.embeddedlinuxconference.com/	
  
   – Apresentações	...
Referências	
  
•  Livros:	
  
    – Building	
  Embedded	
  Linux	
  Systems,	
  
      Karim	
  Yaghmour	
  

    – Embe...
Referências	
  
•  Embedded	
  Linux	
  Wiki	
  
   – h~p://www.elinux.org	
  
•  Free	
  Electrons	
  
   – h~p://free-­‐...
Desenvolvendo	
  Sistemas	
  de	
  
    Linux	
  Embarcado	
  
       Marcelo	
  Veiga	
  Neves	
  
            marcelo.ve...
Upcoming SlideShare
Loading in …5
×

Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009

1,514 views

Published on

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.

Published in: Technology, News & Politics
  • Be the first to comment

Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009

  1. 1. Desenvolvendo  Sistemas  de   Linux  Embarcado   Marcelo  Veiga  Neves   marcelo.veiga@gmail.com   Tchelinux  2009   Porto  Alegre,  14  de  novembro  de  2009  
  2. 2. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   •  Demonstração   •  Referências   1  
  3. 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. 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. 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. 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. 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. 8. 7  
  9. 9. Inicialização  do  Linux   8  
  10. 10. O  que  precisa  ser  preparado?   9  
  11. 11. O  que  precisa  ser  preparado?   10  
  12. 12. O  que  precisa  ser  preparado?   11  
  13. 13. O  que  precisa  ser  preparado?   12  
  14. 14. O  que  precisa  ser  preparado?   13  
  15. 15. O  que  precisa  ser  preparado?   14  
  16. 16. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Considerações  Finais   15  
  17. 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. 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. 19. Exemplo:  Buildroot   Demo!   (Geração  de  toolchain  com  o  Buildroot)   18  
  20. 20. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   19  
  21. 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. 22. Bootloaders   Fonte:  h~p://www.elinux.org/Bootloader,  13/11/09     21  
  23. 23. Bootloaders   Fonte:  h~p://www.elinux.org/Bootloader,  13/11/09     22  
  24. 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. 25. Exemplo:  U-­‐Boot   Demo!   (Compilação  e  uRlização  do  u-­‐boot)   24  
  26. 26. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   25  
  27. 27. Kernel  do  Linux   26  
  28. 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. 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. 30. Exemplo:  Linux  para  PowerPC   Demo!   (Compilação  do  Linux  e  arquivo  de  device  tree)   29  
  31. 31. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   30  
  32. 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. 33. Root  Filesystem   Ferramentas  para   geração   Fonte:  Embedded  building  tools  BOF,  Thomas  Petazzoni  (ELC  2009)  32  
  34. 34. Root  Filesystem   Ferramentas  para   geração   Fonte:  Embedded  building  tools  BOF,  Thomas  Petazzoni  (ELC  2009)  33  
  35. 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. 36. Exemplo:  Buildroot   Demo!   (Geração  de  roo•s  com  o  Buildroot)   35  
  37. 37. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   •  Demonstração   •  Referências   36  
  38. 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. 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. 40. Referências   •  Livros:   – Building  Embedded  Linux  Systems,   Karim  Yaghmour   – Embedded  Linux  Primer:  A   PracRcal  Real-­‐World  Approach,   Christopher  Hallinan   39  
  41. 41. Referências   •  Embedded  Linux  Wiki   – h~p://www.elinux.org   •  Free  Electrons   – h~p://free-­‐electrons.com/docs/   40  
  42. 42. Desenvolvendo  Sistemas  de   Linux  Embarcado   Marcelo  Veiga  Neves   marcelo.veiga@gmail.com   Tchelinux  2009   Porto  Alegre,  14  de  novembro  de  2009  

×