criando sistemas embarcados com linux
Post on 05-Apr-2018
230 Views
Preview:
TRANSCRIPT
-
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 Almeidamarcelobarrosalmeida@gmail.com
Smar Equipamentos Industriais LTDA
http://www.smar.com.br/mailto:marcelobarrosalmeida@gmail.commailto:marcelobarrosalmeida@gmail.comhttp://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
marcelobarrosalmeida@gmail.com
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/
top related