SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Linux	
  em	
  Sistemas	
  Embarcados	
  

          Marcelo	
  Veiga	
  Neves	
  
            marcelo.veiga@gmail.com	
  



                      SACTA	
  2010	
  
             Alegrete,	
  25	
  de	
  junho	
  de	
  2010	
  
Roteiro	
  
•    Introdução	
  
•    Projeto	
  de	
  Linux	
  Embarcado	
  
•    Demonstração	
  
•    Referências	
  




                                                  1	
  
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	
  
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	
  
Sistemas	
  Embarcados	
  
•  Definição	
  de	
  Sistema	
  Embarcado:	
  
     “Um	
  sistema	
  embarcado	
  é	
  um	
  computador	
  que	
  é	
  
     completamente	
  encapsulado	
  ou	
  dedicado	
  ao	
  
     disposiPvo	
  ou	
  sistema	
  que	
  ele	
  controla.”	
  (Wikipedia)	
  


•  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	
  
5	
  
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	
  
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	
  
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:	
  
     –  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	
  
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    –  Kernel	
  
    –  Root	
  Filesystem	
  
•  Demonstração	
  
•  Referências	
  




                                                17	
  
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	
  
Bootloaders	
  




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




Fonte:	
  hzp://www.elinux.org/Bootloader,	
  13/11/09	
  	
     20	
  
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    –  Kernel	
  
    –  Root	
  Filesystem	
  
•  Demonstração	
  
•  Referências	
  




                                                21	
  
Kernel	
  do	
  Linux	
  




                            22	
  
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	
  
Roteiro	
  
•  Introdução	
  
•  Projeto	
  de	
  Linux	
  Embarcado	
  
    –  Toolchain	
  
    –  Bootloader	
  
    –  Kernel	
  
    –  Root	
  Filesystem	
  
•  Demonstração	
  
•  Referências	
  




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




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




                  Fonte:	
  Embedded	
  building	
  tools	
  BOF,	
  Thomas	
  Petazzoni	
  (ELC	
  2009)	
  27	
  
Roteiro	
  
•    Introdução	
  
•    Projeto	
  de	
  Linux	
  Embarcado	
  
•    Demonstração	
  
•    Referências	
  




                                                  28	
  
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	
  




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

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



                                                      31	
  
Referências	
  
•  Embedded	
  Linux	
  Wiki	
  
   – hzp://www.elinux.org	
  
•  Free	
  Electrons	
  
   – hzp://free-­‐electrons.com/docs/	
  




                                            32	
  
Linux	
  em	
  Sistemas	
  Embarcados	
  

          Marcelo	
  Veiga	
  Neves	
  
            marcelo.veiga@gmail.com	
  



                      SACTA	
  2010	
  
             Alegrete,	
  25	
  de	
  junho	
  de	
  2010	
  

Mais conteúdo relacionado

Mais procurados

Sistemas operativos - Arch Linux
Sistemas operativos  - Arch LinuxSistemas operativos  - Arch Linux
Sistemas operativos - Arch LinuxDanielAraujo224
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...Tchelinux
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanElton Minetto
 
Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?
Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?
Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?Paulo Vital
 
Implatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxImplatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxAlvaro Gomes
 
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
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores LinuxAlessandro Silva
 

Mais procurados (19)

Sistemas operativos - Arch Linux
Sistemas operativos  - Arch LinuxSistemas operativos  - Arch Linux
Sistemas operativos - Arch Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Kernel do Linux
Kernel do LinuxKernel do Linux
Kernel do Linux
 
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
 
Unix - Sistema Operacional
Unix - Sistema OperacionalUnix - Sistema Operacional
Unix - Sistema Operacional
 
S.o iuras
S.o iurasS.o iuras
S.o iuras
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
So trabalho
So trabalhoSo trabalho
So trabalho
 
Usuário LInux
Usuário LInuxUsuário LInux
Usuário LInux
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e Gearman
 
Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?
Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?
Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?
 
Exercicios linux
Exercicios linuxExercicios linux
Exercicios linux
 
Implatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxImplatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com Linux
 
Solaris
SolarisSolaris
Solaris
 
Segurança Linux
Segurança LinuxSegurança Linux
Segurança Linux
 
Minicurso linux
Minicurso linuxMinicurso linux
Minicurso linux
 
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...
 
Distribuição Linux fedora
Distribuição Linux fedoraDistribuição Linux fedora
Distribuição Linux fedora
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores Linux
 

Semelhante a Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009Marcelo Veiga Neves
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxFrederico Madeira
 
Sistemas operacionais1
Sistemas operacionais1Sistemas operacionais1
Sistemas operacionais1Nauber Gois
 
Aula 04 informática aplicada - comando básicos
Aula 04  informática aplicada - comando básicosAula 04  informática aplicada - comando básicos
Aula 04 informática aplicada - comando básicosRobson Ferreira
 
Arch linux Guilherme Macedo
Arch linux   Guilherme MacedoArch linux   Guilherme Macedo
Arch linux Guilherme Macedoscaryface131
 
Desmistificando o Pinguim
Desmistificando o PinguimDesmistificando o Pinguim
Desmistificando o PinguimDiego Rubin
 
(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhsAnderson Lago
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosRodrigo Almeida
 
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
 
Arch Linux – Simplesmente Linux
Arch Linux – Simplesmente LinuxArch Linux – Simplesmente Linux
Arch Linux – Simplesmente LinuxLuiz Thiago
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Leo Amorim
 
Linux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way NetworksLinux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way Networks3Way Networks
 
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
 

Semelhante a Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA (20)

Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao Linux
 
Arch Linux
Arch LinuxArch Linux
Arch Linux
 
Sistemas operacionais1
Sistemas operacionais1Sistemas operacionais1
Sistemas operacionais1
 
Aula 04 informática aplicada - comando básicos
Aula 04  informática aplicada - comando básicosAula 04  informática aplicada - comando básicos
Aula 04 informática aplicada - comando básicos
 
Arch linux Guilherme Macedo
Arch linux   Guilherme MacedoArch linux   Guilherme Macedo
Arch linux Guilherme Macedo
 
Desmistificando o Pinguim
Desmistificando o PinguimDesmistificando o Pinguim
Desmistificando o Pinguim
 
(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcados
 
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
 
Lab so-abertos-unidade8
Lab so-abertos-unidade8Lab so-abertos-unidade8
Lab so-abertos-unidade8
 
Redes2 aula02
Redes2 aula02Redes2 aula02
Redes2 aula02
 
Conceitos de Software Livre
Conceitos de Software LivreConceitos de Software Livre
Conceitos de Software Livre
 
Linux
LinuxLinux
Linux
 
Arch Linux – Simplesmente Linux
Arch Linux – Simplesmente LinuxArch Linux – Simplesmente Linux
Arch Linux – Simplesmente Linux
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
Linux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way NetworksLinux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way Networks
 
Kernel Linux
Kernel LinuxKernel Linux
Kernel 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
 

Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA

  • 1. Linux  em  Sistemas  Embarcados   Marcelo  Veiga  Neves   marcelo.veiga@gmail.com   SACTA  2010   Alegrete,  25  de  junho  de  2010  
  • 2. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   •  Demonstração   •  Referências   1  
  • 3. 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  
  • 4. 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  
  • 5. Sistemas  Embarcados   •  Definição  de  Sistema  Embarcado:   “Um  sistema  embarcado  é  um  computador  que  é   completamente  encapsulado  ou  dedicado  ao   disposiPvo  ou  sistema  que  ele  controla.”  (Wikipedia)   •  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  
  • 7. 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  
  • 8. 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  
  • 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:   –  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  
  • 18. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   17  
  • 19. 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  
  • 22. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   21  
  • 24. 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  
  • 25. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   –  Toolchain   –  Bootloader   –  Kernel   –  Root  Filesystem   •  Demonstração   •  Referências   24  
  • 26. 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  
  • 27. Root  Filesystem   Ferramentas  para   geração   Fonte:  Embedded  building  tools  BOF,  Thomas  Petazzoni  (ELC  2009)  26  
  • 28. Root  Filesystem   Ferramentas  para   geração   Fonte:  Embedded  building  tools  BOF,  Thomas  Petazzoni  (ELC  2009)  27  
  • 29. Roteiro   •  Introdução   •  Projeto  de  Linux  Embarcado   •  Demonstração   •  Referências   28  
  • 30. 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   •  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.   29  
  • 31. 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  
  • 32. Referências   •  Livros:   – Building  Embedded  Linux  Systems,   Karim  Yaghmour   – Embedded  Linux  Primer:  A   PracPcal  Real-­‐World  Approach,   Christopher  Hallinan   31  
  • 33. Referências   •  Embedded  Linux  Wiki   – hzp://www.elinux.org   •  Free  Electrons   – hzp://free-­‐electrons.com/docs/   32  
  • 34. Linux  em  Sistemas  Embarcados   Marcelo  Veiga  Neves   marcelo.veiga@gmail.com   SACTA  2010   Alegrete,  25  de  junho  de  2010