Você está na página 1de 51

Criando Sistemas Embarcados com Linux da teoria prtica

Copyright 2007, Marcelo Barros de Almeida


Licena 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 Almeida
marcelobarrosalmeida@gmail.com
Smar Equipamentos Industriais LTDA
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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 deve
redistribuir o trabalhos resultante sob uma licena
idntica a esta.
Para qualquer reuso ou distribuio voc deve deixar claro
os termos de licena deste trabalho.
Qualquer uma destas condies podem ser abandonadas se
voc obtiver uma permisso do detentor dos direitos
autorais.
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 so
bem vindas!
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://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 tamanho
so freqentes
?
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://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
Relgio
Tablets
DVDs
Robs
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
7
Mercado de Linux embarcado
Quais SOs tm sido usados pela sua empresa nos ltimos dois
anos em projetos embarcados ?
Slides de 11 a 17: pesquisa espontnea realizada por linuxdevices.com (http://linuxdevices.com/news/NS5319577519.html)
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
8
Mercado de Linux embarcado
Que fontes do Linux foram usados no seus projetos
embarcados ?
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
9
Mercado de Linux embarcado
Voc pagaria por suporte ?
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
10
Mercado de Linux embarcado
Que ferramentas de desenvolvimento voc espera usar ?
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
11
Mercado de Linux embarcado
E a parte legal do projeto ?
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
12
Mercado de Linux embarcado
Quais foram as CPU usada nos projetos ?
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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, escritrio, multimdia...
Utilitrios de
linha de
comando
Kernel
Biblioteca C
Bibliotecas
compartilhadas
Interface
com o usurio
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)...
Implementaes
muito mais leves!
Sem ferramentas de
desenvolvimento.
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.
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
14
Vantagens de Linux embarcado

Qualidade do cdigo

Footprint relativamente pequeno:

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 comercial


disponvel.
Use the sources you
must, Luke
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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 propsito geral !

Existem muitas opes de aplicativos, requer


anlise refinada

Sistema em evoluo constante

Faa anlises imparciais, evite o


deslumbramento

O formato das licenas deve ser verificado


sempre
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://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 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 ...
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
17
Licenas e Linux embarcado

GPL3

Fortemente contra o DRM (Digital Rights


Management)

Inibe o uso de patentes

At o momento, o Linux GPLv2

Alternativas:

Uma lista interessante em:


http://debianlinux.net/os.html

NetBSD
St. IGNUcius
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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 facilitada


com 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


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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 precise


desenvolver drivers

Outros:

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


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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/
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena 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 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 os


perifricos

Esquemas, gerber files


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
27
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


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
28
Equipamentos necessrios:
debug

JTAG (Joint Test Action Group)

Permite debug da plataforma atravs 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, inspeo de memria, execuo 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. Bem mais caros.

GDB remoto
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
29
Criando sistemas embarcados
com Linux

Introduo

Pr-requisitos

Criando sistemas embarcados

Fazendo escolhas

Conceitos

Criando dispositivos

Crditos, agradecimentos e links


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
30
Fazendo escolhas:
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 da


VIA)

MIPS (MIPS)

AVR/AVR32 (Atmel)

Suporte

Comercial x comunitrio
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
31
Fazendo escolhas:
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)


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
32
Fazendo escolhas:
interfaces grficas

Vrias sistemas grficos:

Qtopia

DirectFB

Matchbox

SDL

FLTK

MiniGUI

Nano-X (Microwindows)
Referncias: http://www.linuxdevices.com/articles/AT9202043619.html
http://www.linuxjournal.com/article/9403
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
33
Fazendo escolhas:
interfaces grficas
Qtopia
Frame buffer
Linux
Qt/Embedded
Frame buffer x Xlib:
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://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 um


aplicativo 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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://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 no
embarcados) ou ainda via rede (NFS, por exemplo).

No momento do boot, o parmetro 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 vrios
aplicativos tradicionais do Linux. Pode usar a biblioteca uClibc, bem menor que a
glibc.
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
38
Conceito 4: init

Aps montar o rootfs, o kernel executa o programa


init (ou outro, caso seja usado o parmetro init=).
Tambm procura por linuxrc.

Este o primeiro programa executado e ir fazer a


inicializao do sistema. O arquivo /etc/inittab d as
diretrizes de como isto deve ser feito.

Mquinas com verso completa do Linux podem ter


esquemas diferentes quando so usados mdulos
externos que precisam ser carregados antes do
rootfs (esquema kernel initrd rootfs).
Arquivo
initrd
Diretrio
rootfs
mount
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
39
Criando um sistema mnimo
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 Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
40
Criando um sistema mnimo
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 Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
41
Criando um sistema mnimo
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


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
42
Em teoria, no existe diferena
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 preferncia
SoPC/FPGA)
Imagem: www.idsoftware.com/
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
43
Criando um sistema Linux
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)


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://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. Merece


uma lida pelo menos uma vez.

Automated Linux From Scratch (ALFS)

Permite automatizar a construo do sistema

nALFS: executa instrues de construo baseada em um


arquivo 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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
45
Linux From Scratch e AVR32

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 nova


imagem

vrias opes: TFTP, serial, carto sd, NFS

funes para apagamento e gravao na flash


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
46
JFFS2 e o particionamento da flash

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 e


criar 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
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
47
Gravando a nova imagem via U-Boot
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 <<<<==== tamanho !!
protect on all
set bootargs 'console=ttyS0 root=/dev/mtdblock1
rootfstype=jffs2';fsload;bootm
boot
Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
48
Criando sistemas embarcados
com Linux

Introduo

Pr-requisitos

Criando sistemas embarcados

Crditos, agradecimentos e links


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
49
Agradecimentos

Ao Michael Opdnacker, por deixar pblico 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


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
50
Projetos de construo 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

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


Criando Sistemas Embarcados com Linux da teoria prtica
Copyright 2007, Marcelo Barros de Almeida
Licena Creative Commons Attribution-ShareAlike 2.0
http://www.smar.com.br http://www.linuxabordo.com.br
51
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

Você também pode gostar