SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Desenvolvendo	
  Sistemas	
  de	
  
    Linux	
  Embarcado	
  
       Marcelo	
  Veiga	
  Neves	
  
            marcelo.veiga@gmail.com	
  



                    Tchelinux	
  2009	
  
        Porto	
  Alegre,	
  14	
  de	
  novembro	
  de	
  2009	
  
Roteiro	
  
•    Introdução	
  
•    Projeto	
  de	
  Linux	
  Embarcado	
  
•    Demonstração	
  
•    Referências	
  




                                                  1	
  
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	
  
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	
  
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	
  
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	
  
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	
  
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	
  
    –  Kernel	
  
    –  Root	
  Filesystem	
  
•  Demonstração	
  
•  Considerações	
  Finais	
  




                                                15	
  
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	
  
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	
  
Exemplo:	
  Buildroot	
  



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




                                                            18	
  
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    –  Kernel	
  
    –  Root	
  Filesystem	
  
•  Demonstração	
  
•  Referências	
  




                                                19	
  
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	
  
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-­‐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	
  
Exemplo:	
  U-­‐Boot	
  



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




                                                       24	
  
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    –  Kernel	
  
    –  Root	
  Filesystem	
  
•  Demonstração	
  
•  Referências	
  




                                                25	
  
Kernel	
  do	
  Linux	
  




                            26	
  
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	
  
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	
  
Exemplo:	
  Linux	
  para	
  PowerPC	
  



                         Demo!	
  
  (Compilação	
  do	
  Linux	
  e	
  arquivo	
  de	
  device	
  tree)	
  




                                                                            29	
  
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    –  Kernel	
  
    –  Root	
  Filesystem	
  
•  Demonstração	
  
•  Referências	
  




                                                30	
  
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	
  
Root	
  Filesystem	
  
Ferramentas	
  para	
  
     geração	
  




                  Fonte:	
  Embedded	
  building	
  tools	
  BOF,	
  Thomas	
  Petazzoni	
  (ELC	
  2009)	
  32	
  
Root	
  Filesystem	
  
Ferramentas	
  para	
  
     geração	
  




                  Fonte:	
  Embedded	
  building	
  tools	
  BOF,	
  Thomas	
  Petazzoni	
  (ELC	
  2009)	
  33	
  
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	
  
Exemplo:	
  Buildroot	
  



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




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




                                                  36	
  
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	
  
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	
  
Referências	
  
•  Livros:	
  
    – Building	
  Embedded	
  Linux	
  Systems,	
  
      Karim	
  Yaghmour	
  

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



                                                      39	
  
Referências	
  
•  Embedded	
  Linux	
  Wiki	
  
   – h~p://www.elinux.org	
  
•  Free	
  Electrons	
  
   – h~p://free-­‐electrons.com/docs/	
  




                                            40	
  
Desenvolvendo	
  Sistemas	
  de	
  
    Linux	
  Embarcado	
  
       Marcelo	
  Veiga	
  Neves	
  
            marcelo.veiga@gmail.com	
  



                    Tchelinux	
  2009	
  
        Porto	
  Alegre,	
  14	
  de	
  novembro	
  de	
  2009	
  

Mais conteúdo relacionado

Mais procurados

Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerWellington Silva
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asteriskVicente Nobre
 
Poco Bibliotecas C++
Poco Bibliotecas C++Poco Bibliotecas C++
Poco Bibliotecas C++Uilian Ries
 
Padrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhoresPadrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhoresCarlos Andre Fernandes
 
LuaRocks - palestra Hack'n'Rio 2011
LuaRocks - palestra Hack'n'Rio 2011LuaRocks - palestra Hack'n'Rio 2011
LuaRocks - palestra Hack'n'Rio 2011Hisham Muhammad
 
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...Tchelinux
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux DayFábio Albuquerque
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à ShellscriptVinícius Hax
 
Gabarito simulado lpi-1
Gabarito simulado lpi-1Gabarito simulado lpi-1
Gabarito simulado lpi-1paradamonstro
 
Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Diego Damasceno
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebIsrael Messias
 
Sistemas operativos - Arch Linux
Sistemas operativos  - Arch LinuxSistemas operativos  - Arch Linux
Sistemas operativos - Arch LinuxDanielAraujo224
 
Funtoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremoFuntoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremoDaniel
 
Funtoo escla
Funtoo esclaFuntoo escla
Funtoo esclaDaniel
 
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaFelipe Silveira
 

Mais procurados (20)

Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
 
Spacewalk - Solisc
Spacewalk - Solisc Spacewalk - Solisc
Spacewalk - Solisc
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asterisk
 
Poco Bibliotecas C++
Poco Bibliotecas C++Poco Bibliotecas C++
Poco Bibliotecas C++
 
Padrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhoresPadrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhores
 
LuaRocks - palestra Hack'n'Rio 2011
LuaRocks - palestra Hack'n'Rio 2011LuaRocks - palestra Hack'n'Rio 2011
LuaRocks - palestra Hack'n'Rio 2011
 
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux Day
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
 
Gabarito simulado lpi-1
Gabarito simulado lpi-1Gabarito simulado lpi-1
Gabarito simulado lpi-1
 
Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
Sistemas operativos - Arch Linux
Sistemas operativos  - Arch LinuxSistemas operativos  - Arch Linux
Sistemas operativos - Arch Linux
 
Tutorial beagleboard
Tutorial beagleboardTutorial beagleboard
Tutorial beagleboard
 
Funtoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremoFuntoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremo
 
Funtoo escla
Funtoo esclaFuntoo escla
Funtoo escla
 
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
 

Semelhante a Linux Embarcado Sistemas

Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Leo Amorim
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteComo ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteTchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafTchelinux
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteTchelinux
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Embarcados
 
Palestra 2º Café com Software Livre - David Jourdain - Receita: Aprenda a coz...
Palestra 2º Café com Software Livre - David Jourdain - Receita: Aprenda a coz...Palestra 2º Café com Software Livre - David Jourdain - Receita: Aprenda a coz...
Palestra 2º Café com Software Livre - David Jourdain - Receita: Aprenda a coz...blusolsl
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Wellington Silva
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!Evandro Couto
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017Fabio Janiszevski
 

Semelhante a Linux Embarcado Sistemas (20)

Apresentação sobre o kernel Linux v2.0
Apresentação sobre o kernel Linux v2.0Apresentação sobre o kernel Linux v2.0
Apresentação sobre o kernel Linux v2.0
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteComo ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
 
Meetup-Churrops
Meetup-ChurropsMeetup-Churrops
Meetup-Churrops
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Arch Linux
Arch LinuxArch Linux
Arch Linux
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
 
Docker
DockerDocker
Docker
 
Gentoo
GentooGentoo
Gentoo
 
Palestra 2º Café com Software Livre - David Jourdain - Receita: Aprenda a coz...
Palestra 2º Café com Software Livre - David Jourdain - Receita: Aprenda a coz...Palestra 2º Café com Software Livre - David Jourdain - Receita: Aprenda a coz...
Palestra 2º Café com Software Livre - David Jourdain - Receita: Aprenda a coz...
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017
 

Mais de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Tchelinux
 

Mais de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.
 

Linux Embarcado Sistemas

  • 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  
  • 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  
  • 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  
  • 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