SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
Sistemas
embarcados com Linux
- primeiros passos -
Eng. Dr. Marcelo Barros de Almeida
marcelobarrosalmeida@gmail.com
Smar Equipamentos Industriais LTDA
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
2
Direitos de cópia
Créditos - ShareAlike 2.0
Você é livre para
copiar, distribuir, apresentar e executar trabalhos
fazer trabalhos derivados
fazer uso comercial deste trabalho
Sob as seguintes condições
Créditos. Você deve dar crédito ao autor original.
Compartilhe do mesmo modo. Se você alterar, mudar,
ou realizar trabalhos usando este como base,você deve
redistribuir o trabalhos resultante sob uma licença
idêntica a esta.
Para qualquer reuso ou distribuição você deve deixar claro
os termos de licença deste trabalho.
Qualquer uma destas condições podem ser abandonadas
se você obtiver uma permissão do detentor dos direitos
autorais.
Faça uso justo e o direitos dos outros não serão afetados de
forma alguma pelas restrições acima.
Texto da licença:
http://creativecommons.org/licenses/by-sa/2.0/legalcode
© Copyright 2008 - Marcelo Barros
marcelobarrosalmeida@gmail.com
Documentos originais, atualizações e
traduções:
http://linuxabordo.com.br/
Correções, sugestões e traduções são
bem vindas!
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
3
Marcelo Barros ?
● Formação:
● Engenheiro eletrônico (EFEI, 1996)
● Mestre (UFMG, 1998)
● Doutor (UFMG, 2002)
● Atualmente:
● Engenheiro (Smar Equip. Industriais LTDA)
● Professor do Barão de mauá
● Detalhes, currículo, blogs:
http://linuxabordo.com.br/wiki/index.php?title=Marcelo_Barros
http://jedizone.wordpress.com
http://twitter.com/marcelobarros
smar
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
4
Sistemas embarcados
com Linux
● Introdução
– Definição e exemplos de sistemas embarcados
– Mercado
– Linux tradicional x Linux embarcado
– Vantagens e cuidados
● Pré-requisitos
● Criando sistemas embarcados
● Créditos, agradecimentos e links
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
5
Definição de sistema embarcado
?
● O que exatamente significa “sistema embarcado” ?
– Definição da Wikipedia: “um computador de propósito especial, que é
completamente encapsulado pelo dispositivo que controla”.
● Definição muito abrangente. Algumas dicas:
– Propósito específico
– Microprocessado/Microcontrolado
– Aplicação em ROM/Flash
– Restrições de consumo ou tamanho são freqüentes
– Requisitos de tempo real também
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
6
Exemplos de sistemas embarcados
● Estamos rodeados de sistemas embarcados:
– Alarmes automotivos, sistemas de airbag e ABS, computadores de
bordo, injeção eletrônica, GPS
– Máquinas de lavar, microondas, DVD/Media players, TV Digital
– Calculadoras, videogames, PDAs
– Semáforos, câmeras de vigilância, radares
– Equipamentos para rede (roteadores, switches, modems)
– Telefones celulares, centrais telefônicas
– Equipamentos de controle industriais
● Existem muito mais processadores sendo usado em sistemas
embarcados do que em PCs
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
7
Exemplos de sistemas embarcados
– pequenos: com apenas alguns kb de RAM e
poucas dezenas de kb de memória não volátil
(programa).
● Ex: processadores MSP430 (Texas Instruments),
com 1 kb de RAM e 60Kb de flash.
– médios: algumas centenas de kb de memória
para programa, dezenas de kb de RAM.
● Ex: inúmeros processadores, como a linha
Coldfire (Freescale) ou mesmo AVR (Atmel).
– grandes: memória não volátil já em megabytes e
RAM na casa das centenas.
– extra-large: dezenas de MB de flash e de RAM.
● Vários fabricantes, principalmente baseados em
processadores ARM, PowerPC e x86.
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
8
Exemplos de sistemas embarcados
com Linux
PDA Sharp Zauro SL-C3100
Multimídia Archos PMA400
Telefone VoIP WiFi Accton VM1188T
Telefones celulares
Roteador Linksys WTR54G
GPS
Relógio
Tablets DVDs
Robôs
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
9
Linux embarcado na telefonia celular
● Mercado aquecido, com
grandes empresas apostando
em Linux
– Google/HTC (Android)
– Motorola
– Nokia (Maemo/Trolltech)
– NEC
– Panasonic
● Fundações privadas (LiMo) e
abertas (Open Moko) gerando
especificações e SDKs
57,1%
17,4%
12,0%
7,3%
2,8%2,3%1,1%
Mercado de Smartphones
Symbian RIM Windows Mobile Linux
Mac OS X Palm OS Others
fonte: http://www.linuxdevices.com/news/NS8289089946.html
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
10
Nem tudo é x86 no mundo de sistemas
embarcados ...
Quais foram as CPU usada nos seus projetos recentes ?
Fonte: pesquisa espontânea realizada por linuxdevices.com (http://linuxdevices.com/news/NS5319577519.html)
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
11
Nem tudo é fechado no mundo de
sistemas embarcados ...
Fonte: http://www.linuxdevices.com/news/NS4920597981.html
- Linux:18%
- eCos, BSD, FreeRTOS, and TinyOS: 5%
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
12
Mas ser aberto não significa
ser sempre de graça ...
fonte: http://www.embedded.com/products/softwaretools/210200580
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://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, escritório, multimídia...
Utilitários de 
linha de 
comando
Kernel
Biblioteca C
Bibliotecas 
compartilhadas
Interface
com o usuário
GNU Tradicional / Sistema Linux Sistema Linux embarcado
uClibc
Muito mais leve
do que a 
biblioteca C GNU!
libjpeg, libstdc++, libxml, libvorbis...
busybox
(ls, vi, wget, httpd...)
dropbear (ssh)...
Implementações 
muito mais leves!
Sem ferramentas de 
desenvolvimento.
Kernel Linux / uClinux (sem MMU)
Interface personalizada
Kernel leve, somente 
com as características
necessárias e drivers
Kernel completo com a 
maioria das características e com 
drivers para todo tipo de hardware
de PC do planeta!!
Gráficos,
navegador web,
servidor de web.
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
14
Vantagens de Linux embarcado
● Qualidade do código
● Footprint relativamente pequeno:
– Kernel: 0,5 – 2MB de flash
– Sistema de arquivos: variável
– Mesmo assim, pode ser grande para algumas
aplicações
● Portabilidade e escalabilidade
● Grande número de aplicativos disponíveis
● Possibilidade de custos reduzidos
● Suporte
– Fórum, listas, email, FAQs, exemplos, suporte comercial
disponível.
Use the sources you
must, Luke
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
15
Cuidados com Linux embarcado
● Linux é um sistema de propósito geral !
● Existem muitas opções de aplicativos, requer
análise refinada
● Sistema em evolução constante
● Faça análises imparciais, evite o
deslumbramento
● O formato das licenças deve ser verificado
sempre
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
16
Licenças 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 merely
considered 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" with
the 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 reverse
engineering for debugging such
modifications ...
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
17
Licenças e Linux embarcado
● GPL3
– Fortemente contra o DRM (Digital Rights
Management)
– Inibe o uso de patentes
– Contra a “Tivoization”
– Até o momento, o Linux é GPLv2
● Alternativas:
– Uma lista interessante em:
http://debianlinux.net/os.html
– NetBSD
– eCos (médio)
– freeRTOS (pequeno)
St. IGNUcius
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
18
Sistemas embarcados com Linux
● Introdução
● Pré-requisitos
– Conhecimentos necessários
– Equipamento necessários
– Fazendo escolhas
● Criando sistemas embarcados
● Créditos, agradecimentos e links
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
19
Conhecimentos necessários:
Kernel Linux
● Linux
– Operação e funcionamento do sistema Linux
– Inicialização na plataforma desejada
– Conhecimento da estrutura do Kernel
– Compilação e instalação do Kernel
● Alguns detalhes do Linux*:
– Versão 2.6.12.5:
● ~ 189MB
● ~ 4,686 milhões de linhas
● ~ 468 desenvolvedores
* A study of Linux kernel evolution, Oded Koren, ACM SIGOPS Operating Systems Review, Volume 40 , Issue 2, pag. 110-112
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
20
Conhecimentos necessários:
ferramentas
● Compiladores cruzados (toolchains)
– Portes do GCC para a plataforma desejada (binutils/glibc/GCC/GDB,...)
– Download de toolchains pré-compilados ou compilação (pode ser facilitada
com buildroot, CrossTool, OpenEmbedded, Scratchbox, T2 Project ...)
● Emuladores
– Qemu (x86/ARM/PPC/MIPS/Sparc)
– Específicos: Skyeye/Softgun/SWARM (ARM), Coldfire emulator
● Outros
– Conhecimentos de redes (Configuração, TFTP, NFS, ...)
– Uso de aplicativos como minicom (console serial), hexdump, conversores
– Controle de versão (CVS/Subversion/Git), patches, diffs, Makefiles, etc
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
21
Conhecimentos necessários:
programação
● Programar em C é obrigatório
● Assembly para a plataforma desejada pode ser necessário
● Um pouco de shell script não faz mal a ninguém
● Desenvolvimento de módulos e device drivers pode ser
necessário
● Bônus track:
– HTML, servidores HTTP
– CGI e scripts (Python, PHP, Perl, etc)
– Java
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
22
Equipamentos necessários
● Estação de trabalho Linux
● Plataforma embarcada
● Equipamento para debug
● Cabos (serial e ethernet)
● Switches
Imagem: nbpfaus.net/~pfau/pictures/MyWorkstation.jpg
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
23
Configuração típica
Cabo ethernet
(crossover)
Cabo serial
Software: NFS, TFTP, compiladores,
editores, consoles seriais, etc.
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
24
Equipamentos necessários:
plataforma embarcada
● Principais alternativas para a plataforma embarcada
– Desenvolver tudo antes no desktop e recompilar depois para o
sistema desejado
– Emulação: Qemu ou outro emulador específico
– PC (ATX, mini-ITX, nano-ITX)
– PC/104
– SBC (Single Board Computers)
– Hardware hackeado (PDAs, celulares, MP3 players, roteadores, set
top boxes, vídeo games, relógios, etc)
– Hardware proprietário
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
25
Alguns form-factors para
plataforma embarcada
http://www.linuxdevices.com/articles/AT2614444132.html
http://www.via.com.tw/en/products/mainboards/
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
26
Exemplo de SBC:
Atmel NGW100
● Processador Atmel AVR32, 32AP7000, industrial,
150Mhz máximo e 210DMIPS.
● Dois controladores ethernet (34Mbits/s de
performance)
● 32MB de SDRAM, 16MB de flash (8MB paralela e
8MB serial)
● Conector para cartões SD/MMC
● USB, JTAG, conectores para expansão
● Toolchain e kernel Linux com suporte a todos os
periféricos
● Esquemáticos, gerber files
● Aproximadamente 80 dólares
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
27
Exemplo de SBC:
Beagleboard
● Core ARM Cortex-A8 (1200 DMIPS) e cache L2
256KB com acelerador gráfico 2D/3D, da Texas
Instruments
● DSP TMS320C64x+ (HD video e
processamento de sinais até 430MHz)
● 128MB Ram e 256MB Flash
● I2C, I2S, SPI, MMC/SD (via conector de
expansão)
● DVI-D, JTAG, S-Video, SD/MMC+
● Stereo Out, Stereo In
● USB 2.0 HS OTG, Serial RS-232
● Aproximadamente 150 dólares
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
28
Equipamentos necessários:
plataforma embarcada
● Hardware proprietário pode ter custo elevado:
– Projeto do circuito eletrônico
– Layout da placa
– Confecção do PCB (Printed Circuit Board) e montagem
– Instrumentação (osciloscópios, analisadores lógicos, multímetros,
estações de soldagem)
– Integração hardware x software
– Mecânica (caixas, fixação, conectores, etc)
– Certificação, quando necessário
● Avaliar sempre o custo do investimento
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
29
Equipamentos necessários:
debug
● Se o seu kernel roda sem problemas, o GDB remoto resolve a
depuração dos aplicativos. Caso contrário ...
● JTAG (Joint Test Action Group)
– Permite debug da plataforma através de uma interface simples, geralmente
via 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, inspeção de memória, execução passo a passo, acesso a
registros, etc
● BDM (Background Debug Mode)
– Funcionalidade ICE similar ao JTAG, empregado pela Motorola
● Emuladores (via hardware)
– Equipamentos que emulam o processador/microcontrolador. Caros.
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
30
Fazendo escolhas:
plataforma e suporte
● Várias plataformas existentes:
– ARM (vários fabricantes, longa busca...)
– Coldfire (Freescale)
– PowerPC (Freescale/IBM/Apple)
– x86 fanless (Geode/Alchemy da AMD, Celeron M da Intel, Eden da
VIA)
– MIPS (MIPS)
– AVR/AVR32 (Atmel)
● Suporte
– Comercial x comunitário
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
31
Fazendo escolhas:
distribuições
● Distribuições comerciais
– Montavista
– TimeSys
– LinuxWorks
– WindRiver
– SnapGear
– SysGo
– Koan
– ...
● Distribuições livres
– uClinux
– Emdebian
– Embedded Gentoo
– Embedded/Mobile Ubuntu
– OpenEmbedded
– Familiar
– LTIB (Freescale)
– T2 SDE
– Intel Moblin
– <Ponha seu nome aqui>
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
32
Fazendo escolhas:
suporte a tempo real
● Suporte a tempo real:
– Comercial:
● RTLinuxPro (Antes FMSLabs, agora Wind River)
● MontaVista
– Open source:
● RTLinux Free (Wind River, licença dual)
● RTAI (Usando Adeos, livre de patentes agora)
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
33
Fazendo escolhas:
interfaces gráficas
● Várias sistemas gráficos:
– Qtopia
– DirectFB
– Matchbox
– SDL
– FLTK
– MiniGUI
– Nano-X (Microwindows)
Referências: http://www.linuxdevices.com/articles/AT9202043619.html
http://www.linuxjournal.com/article/9403
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
34
Fazendo escolhas:
interfaces gráficas
Qtopia
Frame buffer
Linux
Qt/Embedded
Frame buffer x Xlib:
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
35
Em teoria, não existe diferença
entre teoria e prática...
● 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 periféricos 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 preferência
SoPC/FPGA)
Imagem: www.idsoftware.com/
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
36
Sistemas embarcados com Linux
● Introdução
● Pré-requisitos
● Criando sistemas embarcados
● Créditos, agradecimentos e links
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
37
Criando sistemas embarcados
Com tudo definido, é hora de aprender novas lições:
● Conceito 1: execução em RAM
● Conceito 2: bootloader
● Conceito 3: rootfs
● Conceito 4: init
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
38
Conceito 1: execução em RAM
● O programa, armazenado em flash, em geral é descompactado para a
RAM. Depois, a execução é transferida para a RAM.
– O custo da memória flash por megabyte é maior
– A velocidade da RAM é bem superior
– O programa pode ser armazenado compactado em flash
– É necessário um bootloader (programa de carga)
● Atenção com processadores sem MMU:
– A memória é compartilhada por aplicativos e pelo próprio kernel. A falha em um
aplicativo pode comprometer o kernel em processadores sem unidade de
gerenciamento de memória (MMU)
● Executando direto da flash com XIP (eXecution In Place):
– http://elinux.org/Kernel_XIP
– http://axfs.sourceforge.net/
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
39
Conceito 2: bootloader
● Usado para inicializar o sistema operacional e também a
configuração inicial da plataforma em uso
● Geralmente agrega outras tarefas, como descompactação,
boot remoto via rede ou serial, operações 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
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
40
Conceito 3: rootfs
● O kernel está pronto, mas e o restante das aplicações ? De onde elas serão
lidas ? Rootfs !
● O rootfs é o sistema de arquivo inicial do Linux. Pode ser um arquivo cpio/etx2
(comum em aplicações embarcadas), uma partição (geralmente sistemas não
embarcados) ou ainda via rede (NFS, por exemplo).
● No momento do boot, o parâmetro “root=” é passado para o Linux, indicando ele
irá 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 vários
aplicativos tradicionais do Linux. Pode usar a biblioteca uClibc, bem menor que
a glibc.
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
41
Conceito 4: init
● Após montar o rootfs, o kernel executa o programa
init (ou outro, caso seja usado o parâmetro “init=”).
Também procura por linuxrc.
● Este é o primeiro programa executado e irá fazer a
inicialização do sistema. O arquivo /etc/inittab dá as
diretrizes de como isto deve ser feito.
● Máquinas com versão completa do Linux podem ter
esquemas diferentes quando são usados módulos
externos que precisam ser carregados antes do
rootfs (esquema kernel  initrd  rootfs).
Arquivo
initrd
Diretório
rootfs
mount
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
42
Criando um sistema mínimo
com sash e Linux
● O que é necessário num sistema mínimo com Linux ?
– O sistema operacional (kernel Linux)
– Sistema raiz (rootfs), com aplicativo(s) e
bibliotecas
● Sistema mínimo com sash
– sash = static linked shell (sem libc!)
– /dev/console (necessário para o kernel)
– /dev/hda (necessário para o qemu/kernel)
– /bin/sash: processo a ser executado
Qemu
Kernel
rootfs
(sash,dev)
init=/bin/sash
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
43
Criando um sistema mínimo
com sash e Linux
● Compile um kernel monolítico
● 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 diretório temporário
– mount -o loop rootfs.img rootfs
● “Popule” este diretório:
– Dispositivo do terminal: /dev/console
– Prompt de comandos (shell) e suas dependências
– Script de partida: /bin/sash
● Execute o qemu para iniciar a emulação
Arquivo
initrd
Diretório
rootfs
mount
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
44
Criando um sistema mínimo
com sash e Linux: melhorias
● uClibc:
– Restrições menores de licença (LGPL 2)
– Footprint pequeno com quase a mesma funcionalidade da glibc
– http://www.uclibc.org
● Busybox
– Versões reduzidas de utilitários Unix em um único executável, bastante
modular e configurável
– Aceita também uClibc
– Suporta outras plataformas via GCC cross compiler
– http://busybox.net/
● Deve-se ter um toolchain construído com a uClibc
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
45
Sistemas embarcados com Linux
● Introdução
● Pré-requisitos
● Criando sistemas embarcados
● Créditos, agradecimentos e links
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
46
Projetos de construção do sistema
● 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
● Várias plataformas suportadas (x86, ARM, PPC, MIPS ...)
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
47
Links
● 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
Sistemas Embarcados com Linux – primeiros passos
© Copyright 2008, Marcelo Barros de Almeida
Licença Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
48
Agradecimentos
● Ao Michael Opdnacker, por deixar público excelente material sobre
Linux embarcado, algumas parte usadas aqui: http://free-electrons.com
● Ao projeto Open Cliparts: http://openclipart.org
● Ao projeto Open Office pelos excelente programas

Mais conteúdo relacionado

Mais procurados

Mdulo 1 Parte 4
Mdulo 1 Parte 4Mdulo 1 Parte 4
Mdulo 1 Parte 4
M1984
 
Histórico do software livre e introdução ao Ubuntu - Tchelinux Rio Grande 2010
Histórico do software livre e introdução ao Ubuntu - Tchelinux Rio Grande 2010Histórico do software livre e introdução ao Ubuntu - Tchelinux Rio Grande 2010
Histórico do software livre e introdução ao Ubuntu - Tchelinux Rio Grande 2010
Jerônimo Medina Madruga
 
Sistema Operacional - Inferno OS
Sistema Operacional - Inferno OSSistema Operacional - Inferno OS
Sistema Operacional - Inferno OS
Fábio Luciano
 
Desvendando o Software Livre - Evidosol 2011
Desvendando o Software Livre - Evidosol 2011Desvendando o Software Livre - Evidosol 2011
Desvendando o Software Livre - Evidosol 2011
Jerônimo Medina Madruga
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
Adriano Melo
 

Mais procurados (19)

Mdulo 1 Parte 4
Mdulo 1 Parte 4Mdulo 1 Parte 4
Mdulo 1 Parte 4
 
Kernel do Linux
Kernel do LinuxKernel do Linux
Kernel do Linux
 
Linux valter 1
Linux valter 1Linux valter 1
Linux valter 1
 
Serie X
Serie XSerie X
Serie X
 
Histórico do software livre e introdução ao Ubuntu - Tchelinux Rio Grande 2010
Histórico do software livre e introdução ao Ubuntu - Tchelinux Rio Grande 2010Histórico do software livre e introdução ao Ubuntu - Tchelinux Rio Grande 2010
Histórico do software livre e introdução ao Ubuntu - Tchelinux Rio Grande 2010
 
Sistema Operacional - Inferno OS
Sistema Operacional - Inferno OSSistema Operacional - Inferno OS
Sistema Operacional - Inferno OS
 
Montagem de computadores aula 1
Montagem de computadores   aula 1Montagem de computadores   aula 1
Montagem de computadores aula 1
 
Sebenta
SebentaSebenta
Sebenta
 
Soa cap1 introducao a linux
Soa cap1 introducao a linuxSoa cap1 introducao a linux
Soa cap1 introducao a linux
 
Aula 15 processadores
Aula 15 processadoresAula 15 processadores
Aula 15 processadores
 
Vale a pena usar o Linux!?
Vale a pena usar o Linux!?Vale a pena usar o Linux!?
Vale a pena usar o Linux!?
 
Desvendando o Software Livre - Evidosol 2011
Desvendando o Software Livre - Evidosol 2011Desvendando o Software Livre - Evidosol 2011
Desvendando o Software Livre - Evidosol 2011
 
Seminários G3 - Sistemas operacionais
Seminários G3 - Sistemas operacionaisSeminários G3 - Sistemas operacionais
Seminários G3 - Sistemas operacionais
 
O que são Softwares embarcados?
O que são Softwares embarcados?O que são Softwares embarcados?
O que são Softwares embarcados?
 
Linux
LinuxLinux
Linux
 
Processadores
Processadores Processadores
Processadores
 
Montagem e configuração de computadores
Montagem e configuração de computadores Montagem e configuração de computadores
Montagem e configuração de computadores
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
 
Montagem e configuração de computadores
Montagem e configuração de computadoresMontagem e configuração de computadores
Montagem e configuração de computadores
 

Semelhante a Embarcado

Programando symbian aula_1
Programando symbian aula_1Programando symbian aula_1
Programando symbian aula_1
Talita Carvalho
 
Prova sistemaso redes1-06092012
Prova sistemaso redes1-06092012Prova sistemaso redes1-06092012
Prova sistemaso redes1-06092012
Carlos Melo
 
Prova sistemaso redes1-17092012
Prova sistemaso redes1-17092012Prova sistemaso redes1-17092012
Prova sistemaso redes1-17092012
Carlos Melo
 
Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...
Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...
Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...
Alcyon Ferreira de Souza Junior, MSc
 
Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012
Carlos Melo
 
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
Blog mais biblio apresentação
Blog mais biblio apresentaçãoBlog mais biblio apresentação
Blog mais biblio apresentação
Lucikelly Oliveira
 

Semelhante a Embarcado (20)

Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto Project
 
Unidade 3.2 instalação do sistemas operacionais livres
Unidade 3.2   instalação do sistemas operacionais livresUnidade 3.2   instalação do sistemas operacionais livres
Unidade 3.2 instalação do sistemas operacionais livres
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to hero
 
Programando microcontroladores pic março
Programando microcontroladores pic marçoProgramando microcontroladores pic março
Programando microcontroladores pic março
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no Linux
 
Desenvolvimento de sistemas embarcados
Desenvolvimento de sistemas embarcadosDesenvolvimento de sistemas embarcados
Desenvolvimento de sistemas embarcados
 
Programando symbian aula_1
Programando symbian aula_1Programando symbian aula_1
Programando symbian aula_1
 
Prova sistemaso redes1-06092012
Prova sistemaso redes1-06092012Prova sistemaso redes1-06092012
Prova sistemaso redes1-06092012
 
Prova sistemaso redes1-17092012
Prova sistemaso redes1-17092012Prova sistemaso redes1-17092012
Prova sistemaso redes1-17092012
 
Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...
Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...
Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...
 
Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012
 
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
 
1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux Embarcado1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux Embarcado
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamente
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Aula 02
Aula 02Aula 02
Aula 02
 
Unidade 1.1 Introdução ao Software
Unidade 1.1 Introdução ao SoftwareUnidade 1.1 Introdução ao Software
Unidade 1.1 Introdução ao Software
 
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
Blog mais biblio apresentação
Blog mais biblio apresentaçãoBlog mais biblio apresentação
Blog mais biblio apresentação
 

Mais de JADSON SANTOS (16)

Aula4 reguladores
Aula4 reguladoresAula4 reguladores
Aula4 reguladores
 
Capitulo 3 -_circuitos_con_diodos_diodos_zener
Capitulo 3 -_circuitos_con_diodos_diodos_zenerCapitulo 3 -_circuitos_con_diodos_diodos_zener
Capitulo 3 -_circuitos_con_diodos_diodos_zener
 
Lista05
Lista05Lista05
Lista05
 
Capítulo 5
Capítulo 5Capítulo 5
Capítulo 5
 
Elepot2006 proj (1)
Elepot2006 proj (1)Elepot2006 proj (1)
Elepot2006 proj (1)
 
Indutores e transformadores
Indutores e transformadoresIndutores e transformadores
Indutores e transformadores
 
16 resolvidas
16 resolvidas16 resolvidas
16 resolvidas
 
Juroscompostos
JuroscompostosJuroscompostos
Juroscompostos
 
Doc matematica _744794884
Doc matematica _744794884Doc matematica _744794884
Doc matematica _744794884
 
Resolvidas
ResolvidasResolvidas
Resolvidas
 
Segundaultduaslinha
SegundaultduaslinhaSegundaultduaslinha
Segundaultduaslinha
 
Capítulo4 interpolação
Capítulo4 interpolaçãoCapítulo4 interpolação
Capítulo4 interpolação
 
Mn aula06-interpolacao
Mn aula06-interpolacaoMn aula06-interpolacao
Mn aula06-interpolacao
 
3b5d17 748a8b99e224a1bf91f42123e5388634
3b5d17 748a8b99e224a1bf91f42123e53886343b5d17 748a8b99e224a1bf91f42123e5388634
3b5d17 748a8b99e224a1bf91f42123e5388634
 
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...
 
Inter pol
Inter polInter pol
Inter pol
 

Embarcado

  • 1. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br Sistemas embarcados com Linux - primeiros passos - Eng. Dr. Marcelo Barros de Almeida marcelobarrosalmeida@gmail.com Smar Equipamentos Industriais LTDA
  • 2. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 2 Direitos de cópia Créditos - ShareAlike 2.0 Você é livre para copiar, distribuir, apresentar e executar trabalhos fazer trabalhos derivados fazer uso comercial deste trabalho Sob as seguintes condições Créditos. Você deve dar crédito ao autor original. Compartilhe do mesmo modo. Se você alterar, mudar, ou realizar trabalhos usando este como base,você deve redistribuir o trabalhos resultante sob uma licença idêntica a esta. Para qualquer reuso ou distribuição você deve deixar claro os termos de licença deste trabalho. Qualquer uma destas condições podem ser abandonadas se você obtiver uma permissão do detentor dos direitos autorais. Faça uso justo e o direitos dos outros não serão afetados de forma alguma pelas restrições acima. Texto da licença: http://creativecommons.org/licenses/by-sa/2.0/legalcode © Copyright 2008 - Marcelo Barros marcelobarrosalmeida@gmail.com Documentos originais, atualizações e traduções: http://linuxabordo.com.br/ Correções, sugestões e traduções são bem vindas!
  • 3. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 3 Marcelo Barros ? ● Formação: ● Engenheiro eletrônico (EFEI, 1996) ● Mestre (UFMG, 1998) ● Doutor (UFMG, 2002) ● Atualmente: ● Engenheiro (Smar Equip. Industriais LTDA) ● Professor do Barão de mauá ● Detalhes, currículo, blogs: http://linuxabordo.com.br/wiki/index.php?title=Marcelo_Barros http://jedizone.wordpress.com http://twitter.com/marcelobarros smar
  • 4. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 4 Sistemas embarcados com Linux ● Introdução – Definição e exemplos de sistemas embarcados – Mercado – Linux tradicional x Linux embarcado – Vantagens e cuidados ● Pré-requisitos ● Criando sistemas embarcados ● Créditos, agradecimentos e links
  • 5. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 5 Definição de sistema embarcado ? ● O que exatamente significa “sistema embarcado” ? – Definição da Wikipedia: “um computador de propósito especial, que é completamente encapsulado pelo dispositivo que controla”. ● Definição muito abrangente. Algumas dicas: – Propósito específico – Microprocessado/Microcontrolado – Aplicação em ROM/Flash – Restrições de consumo ou tamanho são freqüentes – Requisitos de tempo real também
  • 6. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 6 Exemplos de sistemas embarcados ● Estamos rodeados de sistemas embarcados: – Alarmes automotivos, sistemas de airbag e ABS, computadores de bordo, injeção eletrônica, GPS – Máquinas de lavar, microondas, DVD/Media players, TV Digital – Calculadoras, videogames, PDAs – Semáforos, câmeras de vigilância, radares – Equipamentos para rede (roteadores, switches, modems) – Telefones celulares, centrais telefônicas – Equipamentos de controle industriais ● Existem muito mais processadores sendo usado em sistemas embarcados do que em PCs
  • 7. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 7 Exemplos de sistemas embarcados – pequenos: com apenas alguns kb de RAM e poucas dezenas de kb de memória não volátil (programa). ● Ex: processadores MSP430 (Texas Instruments), com 1 kb de RAM e 60Kb de flash. – médios: algumas centenas de kb de memória para programa, dezenas de kb de RAM. ● Ex: inúmeros processadores, como a linha Coldfire (Freescale) ou mesmo AVR (Atmel). – grandes: memória não volátil já em megabytes e RAM na casa das centenas. – extra-large: dezenas de MB de flash e de RAM. ● Vários fabricantes, principalmente baseados em processadores ARM, PowerPC e x86.
  • 8. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 8 Exemplos de sistemas embarcados com Linux PDA Sharp Zauro SL-C3100 Multimídia Archos PMA400 Telefone VoIP WiFi Accton VM1188T Telefones celulares Roteador Linksys WTR54G GPS Relógio Tablets DVDs Robôs
  • 9. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 9 Linux embarcado na telefonia celular ● Mercado aquecido, com grandes empresas apostando em Linux – Google/HTC (Android) – Motorola – Nokia (Maemo/Trolltech) – NEC – Panasonic ● Fundações privadas (LiMo) e abertas (Open Moko) gerando especificações e SDKs 57,1% 17,4% 12,0% 7,3% 2,8%2,3%1,1% Mercado de Smartphones Symbian RIM Windows Mobile Linux Mac OS X Palm OS Others fonte: http://www.linuxdevices.com/news/NS8289089946.html
  • 10. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 10 Nem tudo é x86 no mundo de sistemas embarcados ... Quais foram as CPU usada nos seus projetos recentes ? Fonte: pesquisa espontânea realizada por linuxdevices.com (http://linuxdevices.com/news/NS5319577519.html)
  • 11. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 11 Nem tudo é fechado no mundo de sistemas embarcados ... Fonte: http://www.linuxdevices.com/news/NS4920597981.html - Linux:18% - eCos, BSD, FreeRTOS, and TinyOS: 5%
  • 12. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 12 Mas ser aberto não significa ser sempre de graça ... fonte: http://www.embedded.com/products/softwaretools/210200580
  • 13. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://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, escritório, multimídia... Utilitários de  linha de  comando Kernel Biblioteca C Bibliotecas  compartilhadas Interface com o usuário GNU Tradicional / Sistema Linux Sistema Linux embarcado uClibc Muito mais leve do que a  biblioteca C GNU! libjpeg, libstdc++, libxml, libvorbis... busybox (ls, vi, wget, httpd...) dropbear (ssh)... Implementações  muito mais leves! Sem ferramentas de  desenvolvimento. Kernel Linux / uClinux (sem MMU) Interface personalizada Kernel leve, somente  com as características necessárias e drivers Kernel completo com a  maioria das características e com  drivers para todo tipo de hardware de PC do planeta!! Gráficos, navegador web, servidor de web.
  • 14. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 14 Vantagens de Linux embarcado ● Qualidade do código ● Footprint relativamente pequeno: – Kernel: 0,5 – 2MB de flash – Sistema de arquivos: variável – Mesmo assim, pode ser grande para algumas aplicações ● Portabilidade e escalabilidade ● Grande número de aplicativos disponíveis ● Possibilidade de custos reduzidos ● Suporte – Fórum, listas, email, FAQs, exemplos, suporte comercial disponível. Use the sources you must, Luke
  • 15. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 15 Cuidados com Linux embarcado ● Linux é um sistema de propósito geral ! ● Existem muitas opções de aplicativos, requer análise refinada ● Sistema em evolução constante ● Faça análises imparciais, evite o deslumbramento ● O formato das licenças deve ser verificado sempre
  • 16. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 16 Licenças 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 merely considered 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" with the 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 reverse engineering for debugging such modifications ...
  • 17. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 17 Licenças e Linux embarcado ● GPL3 – Fortemente contra o DRM (Digital Rights Management) – Inibe o uso de patentes – Contra a “Tivoization” – Até o momento, o Linux é GPLv2 ● Alternativas: – Uma lista interessante em: http://debianlinux.net/os.html – NetBSD – eCos (médio) – freeRTOS (pequeno) St. IGNUcius
  • 18. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 18 Sistemas embarcados com Linux ● Introdução ● Pré-requisitos – Conhecimentos necessários – Equipamento necessários – Fazendo escolhas ● Criando sistemas embarcados ● Créditos, agradecimentos e links
  • 19. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 19 Conhecimentos necessários: Kernel Linux ● Linux – Operação e funcionamento do sistema Linux – Inicialização na plataforma desejada – Conhecimento da estrutura do Kernel – Compilação e instalação do Kernel ● Alguns detalhes do Linux*: – Versão 2.6.12.5: ● ~ 189MB ● ~ 4,686 milhões de linhas ● ~ 468 desenvolvedores * A study of Linux kernel evolution, Oded Koren, ACM SIGOPS Operating Systems Review, Volume 40 , Issue 2, pag. 110-112
  • 20. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 20 Conhecimentos necessários: ferramentas ● Compiladores cruzados (toolchains) – Portes do GCC para a plataforma desejada (binutils/glibc/GCC/GDB,...) – Download de toolchains pré-compilados ou compilação (pode ser facilitada com buildroot, CrossTool, OpenEmbedded, Scratchbox, T2 Project ...) ● Emuladores – Qemu (x86/ARM/PPC/MIPS/Sparc) – Específicos: Skyeye/Softgun/SWARM (ARM), Coldfire emulator ● Outros – Conhecimentos de redes (Configuração, TFTP, NFS, ...) – Uso de aplicativos como minicom (console serial), hexdump, conversores – Controle de versão (CVS/Subversion/Git), patches, diffs, Makefiles, etc
  • 21. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 21 Conhecimentos necessários: programação ● Programar em C é obrigatório ● Assembly para a plataforma desejada pode ser necessário ● Um pouco de shell script não faz mal a ninguém ● Desenvolvimento de módulos e device drivers pode ser necessário ● Bônus track: – HTML, servidores HTTP – CGI e scripts (Python, PHP, Perl, etc) – Java
  • 22. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 22 Equipamentos necessários ● Estação de trabalho Linux ● Plataforma embarcada ● Equipamento para debug ● Cabos (serial e ethernet) ● Switches Imagem: nbpfaus.net/~pfau/pictures/MyWorkstation.jpg
  • 23. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 23 Configuração típica Cabo ethernet (crossover) Cabo serial Software: NFS, TFTP, compiladores, editores, consoles seriais, etc.
  • 24. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 24 Equipamentos necessários: plataforma embarcada ● Principais alternativas para a plataforma embarcada – Desenvolver tudo antes no desktop e recompilar depois para o sistema desejado – Emulação: Qemu ou outro emulador específico – PC (ATX, mini-ITX, nano-ITX) – PC/104 – SBC (Single Board Computers) – Hardware hackeado (PDAs, celulares, MP3 players, roteadores, set top boxes, vídeo games, relógios, etc) – Hardware proprietário
  • 25. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 25 Alguns form-factors para plataforma embarcada http://www.linuxdevices.com/articles/AT2614444132.html http://www.via.com.tw/en/products/mainboards/
  • 26. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 26 Exemplo de SBC: Atmel NGW100 ● Processador Atmel AVR32, 32AP7000, industrial, 150Mhz máximo e 210DMIPS. ● Dois controladores ethernet (34Mbits/s de performance) ● 32MB de SDRAM, 16MB de flash (8MB paralela e 8MB serial) ● Conector para cartões SD/MMC ● USB, JTAG, conectores para expansão ● Toolchain e kernel Linux com suporte a todos os periféricos ● Esquemáticos, gerber files ● Aproximadamente 80 dólares
  • 27. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 27 Exemplo de SBC: Beagleboard ● Core ARM Cortex-A8 (1200 DMIPS) e cache L2 256KB com acelerador gráfico 2D/3D, da Texas Instruments ● DSP TMS320C64x+ (HD video e processamento de sinais até 430MHz) ● 128MB Ram e 256MB Flash ● I2C, I2S, SPI, MMC/SD (via conector de expansão) ● DVI-D, JTAG, S-Video, SD/MMC+ ● Stereo Out, Stereo In ● USB 2.0 HS OTG, Serial RS-232 ● Aproximadamente 150 dólares
  • 28. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 28 Equipamentos necessários: plataforma embarcada ● Hardware proprietário pode ter custo elevado: – Projeto do circuito eletrônico – Layout da placa – Confecção do PCB (Printed Circuit Board) e montagem – Instrumentação (osciloscópios, analisadores lógicos, multímetros, estações de soldagem) – Integração hardware x software – Mecânica (caixas, fixação, conectores, etc) – Certificação, quando necessário ● Avaliar sempre o custo do investimento
  • 29. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 29 Equipamentos necessários: debug ● Se o seu kernel roda sem problemas, o GDB remoto resolve a depuração dos aplicativos. Caso contrário ... ● JTAG (Joint Test Action Group) – Permite debug da plataforma através de uma interface simples, geralmente via 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, inspeção de memória, execução passo a passo, acesso a registros, etc ● BDM (Background Debug Mode) – Funcionalidade ICE similar ao JTAG, empregado pela Motorola ● Emuladores (via hardware) – Equipamentos que emulam o processador/microcontrolador. Caros.
  • 30. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 30 Fazendo escolhas: plataforma e suporte ● Várias plataformas existentes: – ARM (vários fabricantes, longa busca...) – Coldfire (Freescale) – PowerPC (Freescale/IBM/Apple) – x86 fanless (Geode/Alchemy da AMD, Celeron M da Intel, Eden da VIA) – MIPS (MIPS) – AVR/AVR32 (Atmel) ● Suporte – Comercial x comunitário
  • 31. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 31 Fazendo escolhas: distribuições ● Distribuições comerciais – Montavista – TimeSys – LinuxWorks – WindRiver – SnapGear – SysGo – Koan – ... ● Distribuições livres – uClinux – Emdebian – Embedded Gentoo – Embedded/Mobile Ubuntu – OpenEmbedded – Familiar – LTIB (Freescale) – T2 SDE – Intel Moblin – <Ponha seu nome aqui>
  • 32. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 32 Fazendo escolhas: suporte a tempo real ● Suporte a tempo real: – Comercial: ● RTLinuxPro (Antes FMSLabs, agora Wind River) ● MontaVista – Open source: ● RTLinux Free (Wind River, licença dual) ● RTAI (Usando Adeos, livre de patentes agora)
  • 33. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 33 Fazendo escolhas: interfaces gráficas ● Várias sistemas gráficos: – Qtopia – DirectFB – Matchbox – SDL – FLTK – MiniGUI – Nano-X (Microwindows) Referências: http://www.linuxdevices.com/articles/AT9202043619.html http://www.linuxjournal.com/article/9403
  • 34. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 34 Fazendo escolhas: interfaces gráficas Qtopia Frame buffer Linux Qt/Embedded Frame buffer x Xlib:
  • 35. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 35 Em teoria, não existe diferença entre teoria e prática... ● 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 periféricos 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 preferência SoPC/FPGA) Imagem: www.idsoftware.com/
  • 36. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 36 Sistemas embarcados com Linux ● Introdução ● Pré-requisitos ● Criando sistemas embarcados ● Créditos, agradecimentos e links
  • 37. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 37 Criando sistemas embarcados Com tudo definido, é hora de aprender novas lições: ● Conceito 1: execução em RAM ● Conceito 2: bootloader ● Conceito 3: rootfs ● Conceito 4: init
  • 38. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 38 Conceito 1: execução em RAM ● O programa, armazenado em flash, em geral é descompactado para a RAM. Depois, a execução é transferida para a RAM. – O custo da memória flash por megabyte é maior – A velocidade da RAM é bem superior – O programa pode ser armazenado compactado em flash – É necessário um bootloader (programa de carga) ● Atenção com processadores sem MMU: – A memória é compartilhada por aplicativos e pelo próprio kernel. A falha em um aplicativo pode comprometer o kernel em processadores sem unidade de gerenciamento de memória (MMU) ● Executando direto da flash com XIP (eXecution In Place): – http://elinux.org/Kernel_XIP – http://axfs.sourceforge.net/
  • 39. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 39 Conceito 2: bootloader ● Usado para inicializar o sistema operacional e também a configuração inicial da plataforma em uso ● Geralmente agrega outras tarefas, como descompactação, boot remoto via rede ou serial, operações 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
  • 40. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 40 Conceito 3: rootfs ● O kernel está pronto, mas e o restante das aplicações ? De onde elas serão lidas ? Rootfs ! ● O rootfs é o sistema de arquivo inicial do Linux. Pode ser um arquivo cpio/etx2 (comum em aplicações embarcadas), uma partição (geralmente sistemas não embarcados) ou ainda via rede (NFS, por exemplo). ● No momento do boot, o parâmetro “root=” é passado para o Linux, indicando ele irá 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 vários aplicativos tradicionais do Linux. Pode usar a biblioteca uClibc, bem menor que a glibc.
  • 41. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 41 Conceito 4: init ● Após montar o rootfs, o kernel executa o programa init (ou outro, caso seja usado o parâmetro “init=”). Também procura por linuxrc. ● Este é o primeiro programa executado e irá fazer a inicialização do sistema. O arquivo /etc/inittab dá as diretrizes de como isto deve ser feito. ● Máquinas com versão completa do Linux podem ter esquemas diferentes quando são usados módulos externos que precisam ser carregados antes do rootfs (esquema kernel  initrd  rootfs). Arquivo initrd Diretório rootfs mount
  • 42. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 42 Criando um sistema mínimo com sash e Linux ● O que é necessário num sistema mínimo com Linux ? – O sistema operacional (kernel Linux) – Sistema raiz (rootfs), com aplicativo(s) e bibliotecas ● Sistema mínimo com sash – sash = static linked shell (sem libc!) – /dev/console (necessário para o kernel) – /dev/hda (necessário para o qemu/kernel) – /bin/sash: processo a ser executado Qemu Kernel rootfs (sash,dev) init=/bin/sash
  • 43. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 43 Criando um sistema mínimo com sash e Linux ● Compile um kernel monolítico ● 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 diretório temporário – mount -o loop rootfs.img rootfs ● “Popule” este diretório: – Dispositivo do terminal: /dev/console – Prompt de comandos (shell) e suas dependências – Script de partida: /bin/sash ● Execute o qemu para iniciar a emulação Arquivo initrd Diretório rootfs mount
  • 44. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 44 Criando um sistema mínimo com sash e Linux: melhorias ● uClibc: – Restrições menores de licença (LGPL 2) – Footprint pequeno com quase a mesma funcionalidade da glibc – http://www.uclibc.org ● Busybox – Versões reduzidas de utilitários Unix em um único executável, bastante modular e configurável – Aceita também uClibc – Suporta outras plataformas via GCC cross compiler – http://busybox.net/ ● Deve-se ter um toolchain construído com a uClibc
  • 45. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 45 Sistemas embarcados com Linux ● Introdução ● Pré-requisitos ● Criando sistemas embarcados ● Créditos, agradecimentos e links
  • 46. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 46 Projetos de construção do sistema ● 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 ● Várias plataformas suportadas (x86, ARM, PPC, MIPS ...)
  • 47. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 47 Links ● 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
  • 48. Sistemas Embarcados com Linux – primeiros passos © Copyright 2008, Marcelo Barros de Almeida Licença Creative Commons Attribution-ShareAlike 2.0 http://www.smar.com.br http://www.linuxabordo.com.br 48 Agradecimentos ● Ao Michael Opdnacker, por deixar público excelente material sobre Linux embarcado, algumas parte usadas aqui: http://free-electrons.com ● Ao projeto Open Cliparts: http://openclipart.org ● Ao projeto Open Office pelos excelente programas