Brochures">
Nothing Special   »   [go: up one dir, main page]

Introdução Ao Linux Embarcado

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 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

Você também pode gostar