0
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 - Marcelo Veiga Neves

2,308

Published on

Published in: Technology, News & Politics
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,308
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
37
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Desenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga Neves"

  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  
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×