Criando Sistemas Embarcados Com Linux

Embed Size (px)

Citation preview

  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    1/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    Criando sistemas

    embarcados com Linux

    - da teoria prtica -

    Eng. Dr. Marcelo Barros de [email protected]

    Smar Equipamentos Industriais LTDA

    http://www.smar.com.br/mailto:[email protected]:[email protected]://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    2/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    2

    Direitos de cpia

    Crditos - ShareAlike 2.0

    Voc livre para

    copiar, distribuir, apresentar e executar trabalhos

    fazer trabalhos derivados

    fazer uso comercial deste trabalho

    Sob as seguintes condies

    Crditos. Voc deve dar crdito ao autor original.Compartilhe do mesmo modo. Se voc alterar, mudar,ou realizar trabalhos usando este como base,voc deveredistribuir o trabalhos resultante sob uma licenaidntica a esta.

    Para qualquer reuso ou distribuio voc deve deixar claroos termos de licena deste trabalho.Qualquer uma destas condies podem ser abandonadas sevoc obtiver uma permisso do detentor dos direitosautorais.

    Faa uso justo e o direitos dos outros no sero afetados de

    forma alguma pelas restries acima.

    Texto da licena:http://creativecommons.org/licenses/by-sa/2.0/legalcode

    Copyright 2007

    Marcelo Barros

    [email protected]

    Documentos originais, atualizaes e

    tradues:

    http://linuxabordo.com.br/

    Correes, sugestes e tradues sobem vindas!

    http://www.smar.com.br/http://creativecommons.org/licenses/by-sa/2.0/legalcodehttp://creativecommons.org/licenses/by-sa/2.0/legalcodehttp://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    3/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    3

    Marcelo Barros ?

    Formao: Engenheiro eletrnico (EFEI, 1996)

    Mestre (UFMG, 1998)

    Doutor (UFMG, 2002)

    Atualmente:

    Engenheiro (Smar Equip. Industriais LTDA)

    Professor do Baro de mau

    Detalhes:

    http://linuxabordo.com.br/wiki/index.php?title=Marcelo_Barros

    smar

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    4/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    4

    Criando sistemas embarcados

    com Linux

    Introduo Definio de sistema embarcado

    Mercado

    Linux tradicional x Linux embarcado

    Vantagens e cuidados

    Pr-requisitos

    Criando sistemas embarcados

    Crditos, agradecimentos e links

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    5/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    5

    Definio de sistema embarcado

    O que exatamente significa sistema embarcado ?Definio da Wikipedia : um computador de propsito especial, que

    completamente encapsulado pelo dispositivo que controla.

    Definio muito abrangente. Algumas dicas:

    Propsito especfico

    Microprocessado/Microcontrolado

    Aplicao em ROM/Flash

    Restries de consumo ou tamanhoso freqentes

    ?

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    6/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    6

    Exemplos de sistemas embarcados

    com Linux

    PDA Sharp Zauro SL-C3100

    Multimdia Archos PMA400

    Telefone VoIP WiFi Accton VM1188T

    Telefones celulares

    Roteador Linksys WTR54G

    Thinclients

    RelgioTablets DVDs

    Robs

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    7/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    7

    Mercado de Linux embarcado

    Quais SOs tm sido usados pela sua empresa nos ltimos doisanos em projetos embarcados ?

    Slides de 11 a 17: pesquisa espontnea realizada por linuxdevices.com (http://linuxdevices.com/news/NS5319577519.html)

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    8/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    8

    Mercado de Linux embarcado

    Que fontes do Linux foram usados no seus projetos

    embarcados ?

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    9/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    9

    Mercado de Linux embarcado

    Voc pagaria por suporte ?

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    10/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    10

    Mercado de Linux embarcado

    Que ferramentas de desenvolvimento voc espera usar ?

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    11/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    11

    Mercado de Linux embarcado

    E a parte legal do projeto ?

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    12/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    12

    Mercado de Linux embarcado

    Quais foram as CPU usada nos projetos ?

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    13/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    13

    Linux tradicional x Linux Embarcado

    Kernel Linux

    Biblioteca GNU C

    libjpeg, libstdc++, libxml, libvorbis...

    ls, vi, wget, ssh, httpd, gcc...

    Navegador web, escritrio, multimdia...

    Utilitrios de

    linha de

    comando

    Kernel

    Biblioteca C

    Bibliotecas

    compartilhadas

    Interface

    com o usurio

    GNU Tradicional / Sistema Linux Sistema Linux embarcado

    uClibcMuito mais leve

    do que a

    biblioteca C GNU!

    libjpeg, libstdc++, libxml, libvorbis...

    busybox

    (ls, vi, wget, httpd...)

    dropbear (ssh)...

    Implementaes

    muito mais leves!

    Sem ferramentas dedesenvolvimento.

    Kernel Linux / uClinux (sem MMU)

    Interface personalizada

    Kernel leve, somente

    com as caractersticas

    necessrias e drivers

    Kernel completo com a

    maioria das caractersticas e com

    drivers para todo tipo de hardware

    de PC do planeta!!

    Grficos,

    navegador web,

    servidor de web.

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    14/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    14

    Vantagens de Linux embarcado

    Qualidade do cdigo

    Footprint relativamentepequeno:

    Kernel: 0,5 2MB de flash

    Sistema de arquivos: varivel

    Mesmo assim, pode ser grande para algumas aplicaes

    Portabilidade e escalabilidade

    Grande nmero de aplicativos disponveis

    Possibilidade de custos reduzidos

    Suporte

    Frum, listas, email, FAQs, exemplos, suporte comercialdisponvel.

    Use the sources you

    must, Luke

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    15/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    15

    Cuidados com Linux embarcado

    Linux um sistema de propsito geral ! Existem muitas opes de aplicativos, requer

    anlise refinada

    Sistema em evoluo constante

    Faa anlises imparciais, evite odeslumbramento

    O formato das licenas deve ser verificado

    sempre

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    16/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    16

    Licenas e Linux embarcado

    GPL2:You may copy and distribute the

    Program (or a work based on it ...) ...

    provided that you ... accompany it with

    the complete corresponding machine-

    readable source code ...

    Kernel Linux GPL2, mas ...

    This copyright does *not* cover user

    programs that use kernel services by

    normal system calls - this is merelyconsidered normal use of the kernel, and

    does *not* fall under the heading of

    "derived work" ... (Linus Torvalds)

    Lesser GPL (LGPL):

    We use this license for certain libraries

    in order to permit linking those libraries

    into non-free programs ... As an

    exception ... you may also combine or

    link a "work that uses the Library" withthe Library to produce a work containing

    portions of the Library, and distribute

    that work under terms of your choice,

    provided that the terms permit

    modification of the work for the

    customer's own use and reverseengineering for debugging such

    modifications ...

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    17/51

    Criando sistemas embarcados

  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    18/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    18

    Criando sistemas embarcados

    com Linux Introduo

    Pr-requisitos

    Conhecimentos necessrios

    Equipamento necessrios

    Criando sistemas embarcados

    Preview: criando sistemas embarcados

    Crditos, agradecimentos e links

    Conhecimentos necessrios:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    19/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    19

    Conhecimentos necessrios:Kernel Linux

    Linux

    Operao e funcionamento do sistema Linux

    Inicializao na plataforma desejada

    Conhecimento da estrutura do Kernel

    Compilao e instalao do Kernel

    Alguns detalhes do Linux*:

    Verso 2.6.12.5:

    ~ 189MB

    ~ 4,686 milhes de linhas

    ~ 468 desenvolvedores

    * A study of Linux kernel evolution, Oded Koren, ACM SIGOPS Operating Systems Review, Volume 40 , Issue 2, pag. 110-112

    Conhecimentos necessrios:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    20/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    20

    Conhecimentos necessrios:ferramentas

    Compiladores cruzados (toolchains)

    Portes do GCC para a plataforma desejada (binutils/glibc/GCC/GDB,...)

    Download de toolchains pr-compilados ou compilao (pode ser facilitadacom buildroot, CrossTool, OpenEmbedded, Scratchbox, T2 Project ...)

    Emuladores

    Qemu (x86/ARM/PPC/MIPS/Sparc)

    Especficos: Skyeye/Softgun/SWARM (ARM), Coldfire emulator

    Outros

    Conhecimentos de redes (Configurao, TFTP, NFS, ...) Uso de aplicativos como minicom (console serial), hexdump, conversores

    Controle de verso (CVS/Subversion/Git), patches, diffs, Makefiles, etc

    Conhecimentos necessrios:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    21/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    21

    Conhecimentos necessrios:programao

    Programar em C obrigatrio

    Assembly para a plataforma desejada pode ser necessrio

    Um pouco de shell script no faz mal a ningum

    Desenvolvimento de mdulos e device drivers

    Bnus track:

    HTML, servidores HTTP

    CGI e scripts (Python, PHP, Perl, etc)

    Java

    Conhecimentos necessrios:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    22/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    22

    Conhecimentos necessrios:eletrnica digital

    Microcontroladores/Microprocessadores

    Padres de memrias:

    SDRAM

    Flash

    EEPROM

    Padres de barramentos pode ajudar caso precisedesenvolver drivers

    Outros: Timers, PWM, SPI, I2C, interrupes, RTCs, MMUs, etc

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    23/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    23

    Equipamentos necessrios

    Estao de trabalho Linux

    Plataforma embarcada

    Equipamento para debug

    Cabos (serial e ethernet)

    Switches

    Imagem: nbpfaus.net/~pfau/pictures/MyWorkstation.jpg

    Equipamentos necessrios:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    24/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br

    24

    Equipamentos necessrios:plataforma embarcada

    Principais alternativas para a plataforma embarcada

    Emulao: Qemu ou outro emulador especfico

    PC (ATX, mini-ITX, nano-ITX)

    PC/104

    SBC (Single Board Computers)

    Hardware hackeado (PDAs, celulares, MP3 players, roteadores, set

    top boxes, vdeo games, relgios, etc)

    Hardware proprietrio

    Alguns form-factors para

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    25/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br25

    Alguns form factors para

    plataforma embarcada

    http://www.linuxdevices.com/articles/AT2614444132.html

    http://www.via.com.tw/en/products/mainboards/

    Exemplo de SBC:

    http://www.smar.com.br/http://www.linuxdevices.com/articles/AT2614444132.htmlhttp://www.linuxdevices.com/articles/AT2614444132.htmlhttp://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    26/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br26

    Exemplo de SBC:

    Atmel NGW100 Processador Atmel AVR32, 32AP7000, industrial,

    150Mhz mximo e 210DMIPS.

    Dois controladores ethernet (34Mbits/s de

    performance)

    32MB de SDRAM, 16MB de flash (8MB paralela e 8MB

    serial)

    Conector para cartes SD/MMC

    USB, JTAG, conectores para expanso

    Toolchain e kernel Linux com suporte a todos osperifricos

    Esquemas, gerber files

    Equipamentos necessrios:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    27/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br27

    Equipamentos necessrios:plataforma embarcada

    Hardware proprietrio pode ter custo elevado:

    Projeto do circuito eletrnico

    Layout da placa

    Confeco do PCB (Printed Circuit Board) e montagem

    Instrumentao (osciloscpios, analisadores lgicos, multmetros,estaes de soldagem)

    Integrao hardware x software

    Mecnica (caixas, fixao, conectores, etc)

    Certificao, quando necessrio Avaliar sempre o custo do investimento

    Equipamentos necessrios:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    28/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br28

    qu pa e tos ecess osdebug

    JTAG (Joint Test Action Group)

    Permite debug da plataforma atravs de uma interface simples, geralmentevia porta paralela, USB ou ethernet (ICE-In Circuit Emulation), desde que o

    chip tenha suporte ao JTAG

    Custo baixo, alguns podem ser feitos em casa

    Breakpoints, inspeo de memria, execuo passo a passo, acesso aregistros, etc

    BDM (Background Debug Mode)

    Funcionalidade ICE similar ao JTAG, empregado pela Motorola

    Emuladores (via hardware)

    Equipamentos que emulam o processador/microcontrolador. Bem mais caros.

    GDB remoto

    Criando sistemas embarcados

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    29/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br29

    com Linux Introduo

    Pr-requisitos

    Criando sistemas embarcados

    Fazendo escolhas

    Conceitos

    Criando dispositivos

    Crditos, agradecimentos e links

    Fazendo escolhas:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    30/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br30

    plataforma e suporte Vrias plataformas existentes:

    ARM (vrios fabricantes, longa busca...)

    Coldfire (Motorola)

    PPC (Motorola/IBM/Apple)

    x86 fanless (Geode/Alchemy da AMD, Celeron M da Intel, Eden daVIA)

    MIPS (MIPS)

    AVR/AVR32 (Atmel)

    Suporte

    Comercial x comunitrio

    Fazendo escolhas:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    31/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br31

    suporte a tempo real Suporte a tempo real:

    Comercial:

    RTLinuxPro (Antes FMSLabs, agora Wind River)

    MontaVista

    Open source: RTLinux Free (Wind River, licena dual)

    RTAI(Usando Adeos, livre de patentes agora)

    Fazendo escolhas:

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    32/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br32

    interfaces grficas Vrias sistemas grficos:

    Qtopia

    DirectFB

    Matchbox

    SDL

    FLTK

    MiniGUI

    Nano-X (Microwindows)

    Referncias: http://www.linuxdevices.com/articles/AT9202043619.htmlhttp://www.linuxjournal.com/article/9403

    Fazendo escolhas:

    http://www.smar.com.br/http://www.linuxdevices.com/articles/AT9202043619.htmlhttp://www.linuxdevices.com/articles/AT9202043619.htmlhttp://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    33/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de AlmeidaLicena Creative Commons Attribution-ShareAlike 2.0

    http://www.smar.com.br http://www.linuxabordo.com.br33

    interfaces grficas

    Qtopia

    Frame buffer

    Linux

    Qt/Embedded

    Frame buffer x Xlib:

    Criando sistemas embarcados

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    34/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    34

    Criando sistemas embarcados

    Com tudo definido, hora de aprender novas lies:

    Conceito 1: execuo em RAM

    Conceito 2: bootloader

    Conceito 3: rootfs

    Conceito 4: init

    Conceito 1: execuo em RAM

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    35/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    35

    Conceito 1: execuo em RAM

    O programa, armazenado em flash, em geral descompactado para a

    RAM. Depois, a execuo transferida para a RAM. O custo da memria flash por megabyte maior

    A velocidade da RAM bem superior

    O programa pode ser armazenado compactado em flash

    necessrio um bootloader (programa de carga) Ateno com processadores sem MMU:

    A memria compartilhada por aplicativos e pelo prprio kernel. A falha em umaplicativo pode comprometer o kernel em processadores sem unidade de

    gerenciamento de memria (MMU)

    Executando direto da flash com XIP (eXecution In Place):

    http://tree.celinuxforum.org/CelfPubWiki/KernelXIP

    Conceito 2: bootloader

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    36/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    36

    Conceito 2: bootloader

    Usado para inicializar o sistema operacional e tambm a

    configurao inicial da plataforma em uso Geralmente agrega outras tarefas, como descompactao,

    boot remoto via rede ou serial, operaes com a flash, etc

    Alguns exemplos:

    Das U-Boot: PPC, ARM, AVR32, MIPS, Coldfire, ...

    MicroMonitor: ARM, ColdFire, SH2, 68K, MIPS,

    PowerPC, XScale ...

    redBoot: ARM,x86,MIPS,PPC, SHx ....

    Grub/Lilo: x86, boot do Linux, Windows, etc.

    Outros: blob, SmartLoader, colilo, etc.

    Imagem: http://itpro.nikkeibp.co.jp/article/COLUMN/20060908/247572/zu1.jpg

    Conceito 3: rootfs

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    37/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    37

    Conceito 3: rootfs

    O kernel est pronto, mas e o restante das aplicaes ? De onde elas sero

    lidas ? Rootfs !

    O rootfs o sistema de arquivo inicial do Linux. Pode ser um arquivo cpio/etx2(comum em aplicaes embarcadas), uma partio (geralmente sistemas noembarcados) ou ainda via rede (NFS, por exemplo).

    No momento do boot, o parmetro root= passado para o Linux, indicando eleir encontrar o sistema de arquivo inicial. Exemplos:

    root=/dev/hda1

    root=/dev/ram0 rootfstype=ramfs

    root=/dev/mtdblock1 rootfstype=jffs2

    O busybox pode ser uma boa alternativa para popular o rootfs, emulando vriosaplicativos tradicionais do Linux. Pode usar a biblioteca uClibc, bem menor que a

    glibc.

    Conceito 4: init

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    38/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    38

    Conceito 4: init

    Aps montar o rootfs, o kernel executa o programainit (ou outro, caso seja usado o parmetro init=).Tambm procura por linuxrc.

    Este o primeiro programa executado e ir fazer ainicializao do sistema. O arquivo /etc/inittab d as

    diretrizes de como isto deve ser feito.

    Mquinas com verso completa do Linux podem teresquemas diferentes quando so usados mdulosexternos que precisam ser carregados antes do

    rootfs (esquema kernel initrd rootfs).

    Arquivo

    initrd

    Diretriorootfs

    mount

    Criando um sistema mnimo

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    39/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    39

    com sash e Linux O que necessrio num sistema mnimo com Linux ?

    O sistema operacional (kernel Linux)

    Sistema raiz (rootfs), com aplicativo(s) e

    bibliotecas

    Sistema mnimo com sash sash = static linked shell (sem libc!)

    /dev/console (necessrio para o kernel)

    /dev/hda (necessrio para o qemu/kernel)

    /bin/sash: processo a ser executado Qemu

    Kernel

    rootfs

    (sash,dev)

    init=/bin/sash

    Criando um sistema mnimo

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    40/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    40

    com sash e Linux Compile um kernel monoltico

    Crie um arquivo vazio e formate-o como ext2

    dd if=/dev/zero of=rootfs.img bz=1024k count=1

    /sbin/mkfs.ext2 -i 1024 -m 0 -F rootfs.img

    Monte este arquivo num diretrio temporrio

    mount -o loop rootfs.img rootfs

    Popule este diretrio:

    Dispositivo do terminal: /dev/console

    Prompt de comandos (shell) e suas dependncias Script de partida: /bin/sash

    Execute o qemu para iniciar a emulao

    Arquivo

    initrd

    Diretrio

    rootfs

    mount

    Criando um sistema mnimo

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    41/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    41

    com sash e Linux: melhorias uClibc:

    Sem restries de licena (LGPL 2)

    Footprint pequeno com quase a mesma funcionalidade da glibc

    http://www.uclibc.org

    Busybox Verses reduzidas de utilitrios Unix em um nico executvel, bastante

    modular e configurvel

    Aceita tambm uClibc

    Suporta outras plataformas via GCC cross compiler http://busybox.net/

    Deve-se ter um toolchain construdo com a uClibc

    Em teoria, no existe diferenai i

    http://www.smar.com.br/http://busybox.net/http://busybox.net/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    42/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    42

    entre teoria e prtica...

    I'm too young to die

    Target igual (x86), toolchain e kernel prontos para a CPU/placa

    Hey, not too rough

    Target diferente, toolchain e kernel prontos para a CPU/placa (kits)

    Hurt me please

    Target diferente, toolchain portado, porte do kernel para a

    CPU mas com novos perifricos na placa (drivers)

    Ultra-violence

    Target diferente, toolchain e porte do Linux quase prontos (CPU parecida)

    Nightmare

    Target diferente, sem toolchain portado nem Linux para a CPU/placa (de prefernciaSoPC/FPGA)

    Imagem: www.idsoftware.com/

    Criando um sistema LinuxNGW100 (AVR32)

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    43/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    43

    para a NGW100 (AVR32) Algumas facilidades:

    Toolchain fornecido pela Atmel, compilado com uClib

    Kernel totalmente portado e funcional

    Vrios aplicativos j portados

    Scripts para reconstruo do sistema raiz Problemas:

    Muitos patches para serem aplicados

    Dificuldade de personalizao

    Repetibilidade comprometida

    Suporte ainda inicial em ferramentas tradicionais (buildroot, T2, etc)

    Linux From Scratch e AVR32

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    44/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    44

    Linux From Scratch e AVR32

    Linux From Scratch (LFS):

    passo-a-passo da construo do sistema Linux. Mereceuma lida pelo menos uma vez.

    Automated Linux From Scratch (ALFS)

    Permite automatizar a construo do sistema

    nALFS: executa instrues de construo baseada em umarquivo xml

    avr32fs (AVR32 from scratch)

    Projeto para gerao do sistema da placa NGW100

    Facilita o processo e permite acompanhamento

    http://code.google.com/p/avr32fs/wiki/MainPage

    Linux From Scratch e AVR32

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    45/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    45

    O avr32fs dividido em trs estgios:

    stage 1: cria estrutura bsica do sistema e arquivos de configurao

    stage 2: compila e instala vrios pacotes de software (uClibc, kernel,iptables, etc)

    stage 3: cria a imagem do sistema, em jffs2, pronta para ser gravada

    na flash

    O bootloader (u-boot) usado para a gravao da novaimagem

    vrias opes: TFTP, serial, carto sd, NFS funes para apagamento e gravao na flash

    JFFS2 e o particionamento da flash

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    46/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    46

    p

    Journalling Flash File System verso 2

    Estratgia melhor para escrita na flash (vida til maior)

    Possibilidade de compresso, suporte a journaling

    Consome mais memria e aumenta o tempo de boot

    Exige modificaes no kernel para descrever a flash ecriar o particionamento

    Mudanas no Kernel:

    [path_do_kernel]/arch/avr32/boards/atngw100/flash.c

    os dispositivos de block so criados na partida

    /dev/mtdblock0 (128k)

    u-boot

    /dev/mtdblock2 (64k)

    parmetros do u-boot

    /dev/mtdblock1 (8000k)

    kernel+rootfs

    Flash (NOR) paralela

    da NGW100

    Gravando a nova imagem via U-Boot

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    47/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    47

    g

    Comandos:

    protect off 0x20000 0x7effff

    erase 0x20000 0x7effff

    setenv ipaddr 10.0.0.1

    setenv tftpip 10.0.0.100

    tftp 0x90000000 avr32-linux-image-basic.jffs2.img

    cp.b 0x90000000 0x20000 0x23e014

  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    48/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    48

    com Linux Introduo

    Pr-requisitos

    Criando sistemas embarcados

    Crditos, agradecimentos e links

    Agradecimentos

    http://www.smar.com.br/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    49/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    49

    g

    Ao Michael Opdnacker, por deixar pblico excelente material sobreLinux embarcado, algumas parte usadas aqui: http://free-electrons.com

    Ao projeto Open Cliparts: http://openclipart.org

    Ao projeto Open Office pelos excelente programas

    Projetos de construo do sistema

    http://www.smar.com.br/http://free-electrons.com/http://openclipart.org/http://openclipart.org/http://free-electrons.com/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    50/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    50

    buildroot: http://buildroot.uclibc.org/

    Scratchbox: http://www.scratchbox.org/

    Croostool: http://www.kegel.com/crosstool/

    T2 Project: http://www.t2-project.org

    Podem gerar do zero, usando a uClibc:

    Cross compiler

    Rootfs

    Linux kernel

    Vrias plataformas suportadas (x86, ARM, PPC, MIPS ...)

    Links

    http://www.smar.com.br/http://buildroot.uclibc.org/http://www.scratchbox.org/http://www.kegel.com/crosstool/http://www.t2-project.org/http://www.t2-project.org/http://www.kegel.com/crosstool/http://www.scratchbox.org/http://buildroot.uclibc.org/http://www.smar.com.br/
  • 7/31/2019 Criando Sistemas Embarcados Com Linux

    51/51

    Criando Sistemas Embarcados com Linux da teoria prtica

    Copyright 2007, Marcelo Barros de Almeida

    Licena Creative Commons Attribution-ShareAlike 2.0http://www.smar.com.br http://www.linuxabordo.com.br

    51

    Linux a Bordo: http://linuxabordo.com.br

    Linux Devices: http://linuxdevices.com

    Free Electrons: http://free-electrons.com

    ucdot: http://ucdot.org

    Qemu: http://fabrice.bellard.free.fr/qemu/ Busybox: http://www.busybox.net/

    Code sourcery: http://www.codesourcery.com/

    avr32fs: http://code.google.com/p/avr32fs/wiki/MainPage

    Das U-Boot: http://www.denx.de/wiki/UBoot

    http://www.smar.com.br/http://linuxabordo.com.br/http://linuxdevices.com/http://free-electrons.com/http://ucdot.org/http://fabrice.bellard.free.fr/qemu/http://www.busybox.net/http://www.codesourcery.com/http://code.google.com/p/avr32fs/wiki/MainPagehttp://www.denx.de/wiki/UBoothttp://www.denx.de/wiki/UBoothttp://code.google.com/p/avr32fs/wiki/MainPagehttp://www.codesourcery.com/http://www.busybox.net/http://fabrice.bellard.free.fr/qemu/http://ucdot.org/http://free-electrons.com/http://linuxdevices.com/http://linuxabordo.com.br/http://www.smar.com.br/