Vous êtes sur la page 1sur 80

Seminrio Linux Embarcado 2011

Introduo ao Linux Embarcado


Sergio Prado Agosto/2011
Quem sou eu?

Mais de 14 anos de exeri!ncia em desen"o#"imento de


so$t%are ara sistemas embarcados& em di"ersas ar'uiteturas
de (P) *A+M& PP(& MIPS& x,-& -,./& atuando em ro0etos
com Linux embarcado e sistemas de temo rea#1

S2cio da Embedded Lab%or3s& onde atuo com consu#toria e


desen"o#"imento de sistemas embarcados1

4#og essoa# sobre Linux e Sistemas Embarcados em


%%%1sergiorado1org1
Introduo
Seria uma boa idia usar
pinguins em chips de silcio?
Sistema Embarcado
5 'ue 6 um Sistema Embarcado7
8)m sistema embarcado 6 um sistema
comutaciona# de uso esecia# ro0etado ara
executar uma ou mais $un9es esec:$icas18
Sistemas Embarcados
Exem#os
Linux
Linux 6 o 3erne#;
%%%13erne#1org
8As distribui9es Linux *)buntu& <edora& =ebian&
S#ac3%are/ integram 3erne#& bib#iotecas e
a#ica9es8
Em 1991...
8I>m doing a *$ree/ oerating
s?stem *0ust a @obb?& %on>t be
big and ro$essiona# #i3e gnu/
$or A,-*4,-/ AB c#ones1 B@is
@as been bre%ing since ari#&
and is starting to get read?1 I>d
#i3e an? $eedbac3 on t@ings
eo#e #i3e/dis#i3e in minix& as
m? 5S resemb#es it some%@at
*same @?sica# #a?out o$ t@e
$i#eCs?stem *due to ractica#
reasons/ among ot@er t@ings/18
Linux
20 anos deois111
Linux
Princiais caracter:sticasD

Portabi#idade ara mais de 20 ar'uiteturas;

Suorte E @ard%are1 ExD $oi o rimeiro sistema


oeraciona# a suortar o adro )S4 A101

Esca#abi#idadeD o mesmo 3erne# roda em re#2gios&


em ce#u#ares& e em ser"idores da bo#sa de "a#ores;

Li"re de ro?a#ties1

+oda em disositi"os com ou'u:ssimos recursos1


Linux
Princiais caracter:sticasD

Suorte tota# E adr9es e rotoco#os de rede1

Estabi#idadeD caaF de rodar or mais de 1 ano sem


recisar de um Gnico reboot1

Modu#aridadeD caaF de rodar aenas o 'ue 6


necessHrio ara seu ro0eto *at6 em temo de
execuo/1

Mu#ticoreD suorta mG#ti#as (P)1

+ecursos 8in$initos8 dison:"eis na internet1


Linux
Io0e o Linux 6 Po;

(ada "eF mais desen"o#"edores111


e cada "eF mais #ata$ormas suortadas111
com cada "eF mais a#ica9es1

Jue #e"a a cada "eF mais desen"o#"edores111


com cada "eF mais #ata$ormas111
e cada "eF mais a#ica9es111

Ad in$initum;
Mitos
1o1 MitoD 8Linux is <ree8
8Linux no 6 grHtis& Linux 6 #i"re;8
2o1 arHgra$o da KPLD
8L@en %e sea3 o$ $ree so$t%are& %e are re$ering to
$reedom& not rice8
Mitos
(2digoC$onte aberto e #i"re de ro?a#t?;
@ttD//%%%13erne#1org

Incenti"a ino"ao1

<oco no seu roduto1

=iminui timeCtoCmar3et1

Indeend!ncia de $ornecedor1
Mitos
2o1 MitoD 8Mo consigo roteger a roriedade
inte#ectua# do meu roduto18
8(onsegue sim& basta tomar a#guns
cuidados com #icenas de so$t%are;8
Mitos
As 4 #iberdades do so$t%are #i"reD

Liberdade de usar

Liberdade de estudar

Liberdade de coiar

Liberdade de modi$icar e distribuir as c2ias


Mitos
As duas categorias de #icenas de so$t%are #i"reD

(o?#e$tD "oc! recisa distribuir as a#tera9es sob a


mesma #icena1 ExD KPL

MonCco?#e$tD "ers9es modi$icadas odem ser


mantidas rorietHrias& mas de"eCse manter os
cr6ditos ao Autor1 ExD Aac@e& 4S=& MIB
Mitos
Entendendo a KPLD

)sada em mais de N0O dos ro0etos de so$t%are


#i"re& inc#uindo o 3erne# do Linux1

Poc! recisa redistribuir os $ontes seD

Seu traba#@o $or deri"ado de um so$t%are KPL

Seu traba#@o $or #in3ado com um so$t%are KPL

Mas s2 recisa distribuir 'uando seu roduto esti"er


no mercado1
Mitos
Entendendo a LKPL *Lesser KPL/

Em Q10O dos ro0etos de so$t%are #i"re1

Poc! recisa redistribuir os $ontes seD

Seu traba#@o $or deri"ado de um so$t%are LKPL1

Seu traba#@o $or #in3ado ESTATICAMENTE com outro


so$t%are sob #icena LKPL1

Mas "oc! no recisa redistribuir seu traba#@o se


este $or #in3ado dinamicamente;
Mitos
Portanto& estude as #icenas das
a#ica9es 'ue retende usar no seu
ro0eto;
Linux Embarcado
(@ega de b#Hb#Hb#H;
Aruitetura bsica
!ard"are
(P)

Suorta mais de 20 ar'uiteturas1

A2/-4 bits Mo $oi $eito ara microcontro#adores;

MM) *sem MM) odeCse usar o ucLinux/

N0M@F m:nimo7
!ard"are
Armazenamento

Morma#mente usaCse mem2rias $#as@1

M:nimo de 2M4& 4M4 ara $aFer a#go Gti#1


RAM

M:nimo de ,M4& 1-M4 ara $aFer a#go Gti#1


Para comearD 4M4 de $#as@ e 1-M4 de +AM;
!ard"are
<riend#?A+M mini2440

A+MR20B 400MIF

-4M4 +AM

At6 1K de <#as@ MAM=

)S4& Et@ernet& L(=

Seria#& E2P+5M& etc


!ard"are
4eag#eboardCxM

A+M (ortexCA, 1KIF

N12M4 +AM

)S4& Et@ernet& L(=

SCPideo& I=MI
#oo$c%ain
#oo$c%ain
8(on0unto de $erramentas de rogramao usadas
ara gerar determinado roduto& se0a um so$t%are ou
mesmo um sistema com#eto18
Juando a ar'uitetura da mH'uina de
desen"o#"imento *@ost/ 6 di$erente da ar'uitetura da
mH'uinaCa#"o *target/& c@amamos deD
(rossC(omi#ing Boo#c@ain
#oo$c%ain
#oo$c%ain
Princiais comonentesD

(omi#ador *gcc/

Assemb#er e Lin3er *binuti#s/

Standard ( Librar? *g#ibc& uc#ibc& diet#ibc& etc/


#oo$c%ain
Boo#c@ain rontas

A+M C (ode Sourcer?D


@ttD//%%%1codesourcer?1com/gnuStoo#c@ains/arm/

MIPS
@ttD//%%%1#inuxCmis1org/%i3i/Boo#c@ains

Linaro
@ttsD//%i3i1#inaro1org/Lor3ingKrous/Boo#(@ain
#oo$c%ain
<erramentas oen source

(rosstoo#
@ttD//%%%13ege#1com/crosstoo#/

4ui#drootD
@ttD//bui#droot1uc#ibc1org/
#oo$c%ain
Boo#c@ain na rHtica
#oo$c%ain na &rtica
#oo$c%ain na &rtica
#oo$c%ain na &rtica
(omi#ando uma a#icao
$ gcc /tmp/teste.c -o teste
$ file teste
teste: ELF 32-bit LSB executable, Intel
80386, version 1 (SYSV), dynamically linked
(uses shared libs), for GNU/Linux 2.6.15,
not stripped
#oo$c%ain na &rtica
(rossCcomi#ando uma a#icao
$ arm-linux-gcc /tmp/teste.c -o teste
$ file teste
teste: ELF 32-bit LSB executable, ARM,
version 1 (SYSV), dynamically linked (uses
shared libs), not stripped
Sistema Linux Embarcado
Linux Embarcado 'na ($as%)
*oot$oader
*oot$oader
5 'ue 67 (omo $unciona7

Bodo @ard%are ossui um mecanismo de


inicia#iFao& 'ue 6 resonsH"e# or carregar e
executar o boot#oader1

5 boot#oader 6 resonsH"e# or carregar e executar o


sistema oeraciona# *no nosso caso& o Linux/1
*oot$oader
Por 'ue recisamos do boot#oader7

Inicia#iFar o @ard%are antes de executar o 3erne#1


ExD (on$igurar a contro#adora de S=+AM1

Passar arTmetros ara o 3erne#1

Pro"er mecanismos ara carregar e gra"ar o 3erne# e


o sistema de ar'ui"os na mem2ria $#as@1

Inicia#iFar "ia rede ou e#o carto S=1

+otinas de diagn2stico de mem2ria1


*oot$oader
Princiais boot#oaders

x,-

LIL5

Krub

5utras ar'uiteturas

)C4oot

4areboot

+edboot
*oot$oader
)C4oot na rHtica
+,*oot na &rtica
+,*oot na &rtica
+,*oot na &rtica
+,*oot na &rtica
+,*oot na &rtica
(on$igurando a rede
MINI2440 # dynenv set 40000
MINI2440 # setenv ipaddr 10.0.0.2
MINI2440 # setenv serverip 10.0.0.1
MINI2440 # saveenv
Kra"ando o 3erne# na $#as@ "ia B<BP
MINI2440 # tftp 0x31000000 uImage
MINI2440 # nand erase kernel
MINI2440 # nand write.e 0x31000000 kernel 0x205f58
-erne$
-erne$

Kerencia execuo de rocessos e contro#a acesso E


mem2ria e I/5 *@ard%are/1

.erne# Sace x )ser Sace1

Inter$ace de )ser Sace com .erne# Sace "ia


c@amadas do sistema *S?stem (a##/1

Acesso ao @ard%are "ia ar'ui"os de disositi"o1

Kerenciamento dinTmico dos m2du#os do 3erne#1


-erne$
-erne$
.erne# Linux na rHtica
-erne$ na &rtica
-erne$ na &rtica
-erne$ na &rtica
-erne$ na &rtica
Fonte: free-electrons.com
-erne$ na &rtica

(on$igurar o 3erne#D
$ make menuconfig

(on$igurar ara crossCcomi#arD


$ make menuconfig ARCH=arm
-erne$ na &rtica
Fonte: free-electrons.com
-erne$ na &rtica

(omi#ar o 3erne#D
$ make

(rossCcomi#ar o 3erne#D
$ make ARCH=arm CROSS_COMPILE=arm-linux-
Sistema de arui.os , /oot(s
Sistema de arui.os , /oot(s
(omonentes bHsicos

4ib#ioteca do sistema *u(#ibc& g#ibc& diet#ibc& etc/

Scrits de inicia#iFao

4ib#iotecas e a#ica9es
Sistema de arui.os , /oot(s
8=esen"o#"er um sistema Linux embarcado
6 como brincar de Lego;8
Sistema de arui.os , /oot(s
4us?box

5 cani"ete su:o de sistemas embarcados com Linux;

(ombina "ers9es mais #e"es de $erramentas )MIU


em um Gnico binHrio1

5timiFado or taman@o1

Kera#mente as $erramentas so mais #imitadas


comaradas Es originais1
*us0box 1 #udo isso em 21M*3
Sistema de arui.os , /oot(s
5utras a#ica9es

=robearD c#iente e ser"idor SSI *Q110./

B@ttdD ser"idor %eb *Q,,./

=irect<4D bib#ioteca grH$ica *Q1&4M4/

SJLiteD 4anco de dados *Q2N0.4/


Sistema de arui.os , /oot(s
+oot$s na rHtica
/oot(s na &rtica
*ui$d s0stem
Integrando tudo111

Kera o too#c@ain1

(omi#a e gera a imagem do boot#oader1

(on$igura& comi#a e gera a imagem do 3erne#1

(on$igura e comi#a bib#iotecas e a#ica9es1

Kera a imagem $ina# do root$s& inc#uindo os scrits


de inicia#iFao1
*ui$d s0stem
Princiais sistemas de bui#d

ProrietHriosD Monta Pista& Lind +i"er& BimeS?s

5en sourceD 4ui#droot& PBUdist& 5enEmbedded&


Vocto
E a4ora?
Juero arender; Por onde comear7
E a4ora?
As 4 $asesD

)suHrio Linux

=esen"o#"edor Linux

Integrador Linux embarcado

.erne# @ac3er
E a4ora?
Passo 0D +esire Linux;
E a4ora?
Jue distribuio usar7
E a4ora?
Passo 1D =esen"o#"a ara Linux;
E a4ora?
Passo 2D Arenda Linux embarcado;
E a4ora?
Preciso de um @ard%are7 Mo necessariamente;

JemuD @ttD//'emu1org

S3?E?eD @ttD//s3?e?e1source$orge1net

So$tgunD @ttD//so$tgun1source$orge1net
E a4ora?
Passo AD Brans$ormeCse em um @ac3er Linux;
E a4ora?
(onteGdos on#ine

@ttD//#inuxde"ices1com

@ttD//$reeCe#ectrons1com

@ttsD//#%n1net/

@ttD//%%%1#inux0ourna#1com/

@ttD//%%%1sergiorado1org
56.idas?
Seminrio Linux Embarcado
5brigado;
Sergio Prado
B%itter Wsergiorado
sergio1radoWembedded#ab%or3s1com
@ttD//%%%1sergiorado1org

Vous aimerez peut-être aussi