Você está na página 1de 48

!

istemas embarcados com Linu' primeiros passos


(ng# )r# Marcelo Barros de Almeida
marcelobarrosalmeida*gmail#com

!mar (+uipamentos ,ndustriais L-)A


Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

)ireitos de c.pia
Crditos - ShareAlike 2.0 Voc li!re para copiar, distribuir, apresentar e e'ecutar trabalhos /a0er trabalhos derivados /a0er uso comercial deste trabalho Sob as se"uintes condi#$es Cr1ditos# 2oc3 deve dar cr1dito ao autor original# Compartilhe do mesmo modo# !e voc3 alterar, mudar, ou reali0ar trabalhos usando este como base,voc3 deve redistribuir o trabalhos resultante sob uma licena id3ntica a esta# 4ara +ual+uer reuso ou distribui5o voc3 deve dei'ar claro os termos de licena deste trabalho# 6ual+uer uma destas condi7es podem ser abandonadas se voc3 obtiver uma permiss5o do detentor dos direitos autorais# %a#a uso &usto e o direitos dos outros n'o ser'o a(etados de (orma al"uma pelas restri#$es acima. -e'to da licena$ http$%%creativecommons#org%licenses%by sa%2#0%legalcode

Copyright 2008 Marcelo Barros marcelobarrosalmeida*gmail#com )ocumentos originais, atuali0a7es e tradu7es$ http$%%linu'abordo#com#br% Corre7es, sugest7es e tradu7es s5o bem vindas8

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

Marcelo Barros :

;orma5o$

(ngenheiro eletr<nico =(;(,, >??@A Mestre =B;MC, >??8A )outor =B;MC, 2002A (ngenheiro =!mar (+uip# ,ndustriais L-)AA 4ro/essor do Bar5o de mauD

Atualmente$

smar

)etalhes, currEculo, blogs$


http$%%linu'abordo#com#br%&i"i%inde'#php:titleFMarceloGBarros http$%%Hedi0one#&ordpress#com http$%%t&itter#com%marcelobarros
Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

!istemas embarcados com Linu'

)ntrodu#'o

*e(ini#'o e exemplos de sistemas embarcados +ercado Linux tradicional x Linux embarcado Vanta"ens e cuidados

4r1 re+uisitos Criando sistemas embarcados Cr1ditos, agradecimentos e lin"s

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

)e/ini5o de sistema embarcado

K +ue e'atamente signi/ica Lsistema embarcadoM :

)e/ini5o da Ni"ipedia$ Lum computador de propsito especial, que completamente encapsulado pelo dispositivo que controlaM# 4rop.sito especE/ico Microprocessado%Microcontrolado Aplica5o em OKM%;lash Oestri7es de consumo ou tamanho s5o /re+Pentes Oe+uisitos de tempo real tamb1m

)e/ini5o muito abrangente# Algumas dicas$


?
J

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

('emplos de sistemas embarcados

(stamos rodeados de sistemas embarcados$

Alarmes automotivos, sistemas de airbag e AB!, computadores de bordo, inHe5o eletr<nica, C4! MD+uinas de lavar, microondas, )2)%Media players, -2 )igital Calculadoras, videogames, 4)As !emD/oros, cQmeras de vigilQncia, radares (+uipamentos para rede =roteadores, s&itches, modemsA -ele/ones celulares, centrais tele/<nicas (+uipamentos de controle industriais

('istem muito mais processadores sendo usado em sistemas embarcados do +ue em 4Cs
Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

('emplos de sistemas embarcados

pe+uenos$ com apenas alguns "b de OAM e poucas de0enas de "b de mem.ria n5o volDtil =programaA#

('$ processadores M!4I90 =-e'as ,nstrumentsA, com > "b de OAM e @0Sb de /lash#

m1dios$ algumas centenas de "b de mem.ria para programa, de0enas de "b de OAM#

('$ inTmeros processadores, como a linha Cold/ire =;reescaleA ou mesmo A2O =AtmelA#

grandes$ mem.ria n5o volDtil HD em megabytes e OAM na casa das centenas# e'tra large$ de0enas de MB de /lash e de OAM#

2Drios /abricantes, principalmente baseados em processadores AOM, 4o&er4C e '8@#


Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

('emplos de sistemas embarcados com Linu'


-ele/ones celulares 4)A !harp Uauro !L C9>00

MultimEdia Archos 4MAI00 Ooteador Lin"sys N-OJIC

-ele/one 2o,4 Ni;i Accton 2M>>88C4!

Oel.gio -ablets

Oob<s )2)s

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

Linu' embarcado na tele/onia celular

Mercado a+uecido, com grandes empresas apostando em Linu'


Coogle%V-C =AndroidA Motorola Wo"ia =Maemo%-rolltechA W(C 4anasonic


JR,>X >R,IX

Mercado de !martphones
>,>X 2,9X 2,8X R,9X

>2,0X

;unda7es privadas =LiMoA e abertas =Kpen Mo"oA gerando especi/ica7es e !)Ss

!ymbian Mac K! Y

O,M 4alm K!

Nindo&s Mobile Kthers

Linu'

/onte$ http$%%&&&#linu'devices#com%ne&s%W!828?08??I@#html

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

Wem tudo 1 '8@ no mundo de sistemas embarcados ###


6uais /oram as C4B usada nos seus proHetos recentes :

;onte$ pes+uisa espontQnea reali0ada por linu'devices#com =http$%%linu'devices#com%ne&s%W!J9>?JRRJ>?#htmlA Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>0

Wem tudo 1 /echado no mundo de sistemas embarcados ###

Linu'$>8X eCos, B!), ;reeO-K!, and -inyK!$ JX


;onte$ http$%%&&&#linu'devices#com%ne&s%W!I?20J?R?8>#html Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>>

Mas ser aberto n5o signi/ica ser sempre de graa ###

/onte$ http$%%&&&#embedded#com%products%so/t&aretools%2>0200J80

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>2

Linu' tradicional ' Linu' (mbarcado


GNU Tradicional / Sistema Linux Sistema Linux embarcado
Grficos, navegador web, servidor de web. Implementaes muito mais leves! Sem ferramentas de desenvolvimento.

Navegador web, escritrio, multimdia... Interface personalizada busybox (ls, vi, wget, httpd...) dropbear (ssh)...

Interface com o usurio Utilitrios de linha de comando Bibliotecas compartilhadas Biblioteca C Kernel

ls, vi, wget, ssh, httpd, gcc...

libjpeg, libstdc++, libxml, libvorbis...

libjpeg, libstdc++, libxml, libvorbis...

uClibc
Biblioteca GNU C
Kernel completo com a maioria das caractersticas e com Kernel Linux drivers para todo tipo de hardware de PC do planeta!!

Kernel Linux / uClinux (sem MMU)

Muito mais leve do que a biblioteca C GNU! Kernel leve, somente com as caractersticas necessrias e drivers

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>9

2antagens de Linu' embarcado

6ualidade do c.digo ;ootprint relativamente pe+ueno$


Sernel$ 0,J Z 2MB de /lash !istema de ar+uivos$ variDvel Mesmo assim, pode ser grande para algumas aplica7es

4ortabilidade e escalabilidade Crande nTmero de aplicativos disponEveis 4ossibilidade de custos redu0idos !uporte

Use the sources you must, Luke

;.rum, listas, email, ;A6s, e'emplos, suporte comercial disponEvel#


Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>I

Cuidados com Linu' embarcado

Linu' 1 um sistema de prop.sito geral 8 ('istem muitas op7es de aplicativos, re+uer anDlise re/inada !istema em evolu5o constante ;aa anDlises imparciais, evite o deslumbramento K /ormato das licenas deve ser veri/icado sempre

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>J

Licenas e Linu' embarcado


C4L2$
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

Lesser C4L =LC4LA$


'e use this license %or certain libraries in order to permit linking those libraries into non"%ree programs (s an e)ception you may also combine or link a &work that uses the Library& with the Library to produce a work containing portions o% the Library, and distribute that work under terms o% your choice, provided that the terms permit modi%ication o% the work %or the customer*s own use and reverse engineering %or debugging such modi%ications

Sernel Linu' 1 C4L2, mas ###


#his copyright does $not$ cover user programs that use kernel services by normal system calls " this is merely considered normal use o% the kernel, and does $not$ %all under the heading o% &derived work& (Linus #orvalds!

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>@

Licenas e Linu' embarcado

C4L9

;ortemente contra o )OM =)igital Oights ManagementA ,nibe o uso de patentes Contra a L-ivoi0ationM At1 o momento, o Linu' 1 C4Lv2 Bma lista interessante em$ http$%%debianlinu'#net%os#html WetB!) eCos =m1dioA /reeO-K! =pe+uenoA
Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

Alternativas$

!t# ,CWBcius

>R

!istemas embarcados com Linu'

,ntrodu5o ,r-re-uisitos

Conhecimentos necessDrios (+uipamento necessDrios ;a0endo escolhas

Criando sistemas embarcados Cr1ditos, agradecimentos e lin"s

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>8

Conhecimentos necessDrios$ Sernel Linu'

Linu'

Kpera5o e /uncionamento do sistema Linu' ,niciali0a5o na plata/orma deseHada Conhecimento da estrutura do Sernel Compila5o e instala5o do Sernel 2ers5o 2#@#>2#J$

Alguns detalhes do Linu'[$

\ >8?MB \ I,@8@ milh7es de linhas \ I@8 desenvolvedores

[ A study o/ Linu' "ernel evolution, Kded Soren, ACM !,CK4! Kperating !ystems Oevie&, 2olume I0 , ,ssue 2, pag# >>0 >>2 Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

>?

Conhecimentos necessDrios$ /erramentas

Compiladores cru.ados /toolchains0


4ortes do CCC para a plata/orma deseHada =binutils%glibc%CCC%C)B,###A )o&nload de toolchains pr1 compilados ou compila5o =pode ser /acilitada com buildroot, Cross-ool, Kpen(mbedded, !cratchbo', -2 4roHect ###A

Emuladores

6emu ='8@%AOM%44C%M,4!%!parcA (specE/icos$ !"yeye%!o/tgun%!NAOM =AOMA, Cold/ire emulator

1utros

Conhecimentos de redes =Con/igura5o, -;-4, W;!, ###A Bso de aplicativos como minicom =console serialA, he'dump, conversores Controle de vers5o =C2!%!ubversion%CitA, patches, di//s, Ma"e/iles, etc

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

20

Conhecimentos necessDrios$ programa5o

4rogramar em C 1 obrigat.rio Assembly para a plata/orma deseHada pode ser necessDrio Bm pouco de shell script n5o /a0 mal a ningu1m )esenvolvimento de m.dulos e device drivers pode ser necessDrio B<nus trac"$

V-ML, servidores V--4 CC, e scripts =4ython, 4V4, 4erl, etcA ]ava

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

2>

(+uipamentos necessDrios

(sta5o de trabalho Linu' 4lata/orma embarcada (+uipamento para debug Cabos =serial e ethernetA !&itches

,magem$ nbp/aus#net%\p/au%pictures%MyNor"station#Hpg

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

22

Con/igura5o tEpica
Cabo serial

Cabo ethernet =crossoverA !o/t&are$ W;!, -;-4, compiladores, editores, consoles seriais, etc#

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

29

(+uipamentos necessDrios$ plata/orma embarcada

4rincipais alternativas para a plata/orma embarcada

)esenvolver tudo antes no des"top e recompilar depois para o sistema deseHado (mula5o$ 6emu ou outro emulador especE/ico 4C =A-Y, mini ,-Y, nano ,-YA 4C%>0I !BC =!ingle Board ComputersA Vard&are hac"eado =4)As, celulares, M49 players, roteadores, set top bo'es, vEdeo games, rel.gios, etcA Vard&are proprietDrio

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

2I

Alguns /orm /actors para plata/orma embarcada

http$%%&&&#linu'devices#com%articles%A-2@>IIII>92#html http$%%&&&#via#com#t&%en%products%mainboards%
Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

2J

('emplo de !BC$ Atmel WCN>00

4rocessador Atmel A2O92, 92A4R000, industrial, >J0Mh0 mD'imo e 2>0)M,4!# )ois controladores ethernet =9IMbits%s de per/ormanceA 92MB de !)OAM, >@MB de /lash =8MB paralela e 8MB serialA Conector para cart7es !)%MMC B!B, ]-AC, conectores para e'pans5o -oolchain e "ernel Linu' com suporte a todos os peri/1ricos (s+uemDticos, gerber /iles Apro'imadamente 80 d.lares
Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

2@

('emplo de !BC$ Beagleboard

Core AOM Corte' A8 =>200 )M,4!A e cache L2 2J@SB com acelerador grD/ico 2)%9), da -e'as ,nstruments )!4 -M!920C@I'^ =V) video e processamento de sinais at1 I90MV0A >28MB Oam e 2J@MB ;lash ,2C, ,2!, !4,, MMC%!) =via conector de e'pans5oA )2, ), ]-AC, ! 2ideo, !)%MMC^ !tereo Kut, !tereo ,n B!B 2#0 V! K-C, !erial O! 292 Apro'imadamente >J0 d.lares
Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

2R

(+uipamentos necessDrios$ plata/orma embarcada

Vard&are proprietDrio pode ter custo elevado$


4roHeto do circuito eletr<nico Layout da placa Con/ec5o do 4CB =4rinted Circuit BoardA e montagem ,nstrumenta5o =oscilosc.pios, analisadores l.gicos, multEmetros, esta7es de soldagemA ,ntegra5o hard&are ' so/t&are MecQnica =cai'as, /i'a5o, conectores, etcA Certi/ica5o, +uando necessDrio

Avaliar sempre o custo do investimento

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

28

(+uipamentos necessDrios$ debug

!e o seu "ernel roda sem problemas, o C)B remoto resolve a depura5o dos aplicativos# Caso contrDrio ### ]-AC =]oint -est Action CroupA

4ermite debug da plata/orma atrav1s de uma inter/ace simples, geralmente via porta paralela, B!B ou ethernet =,C( +n ,ircuit -mulationA, desde +ue o chip tenha suporte ao ]-AC Custo bai'o, alguns podem ser /eitos em casa Brea"points, inspe5o de mem.ria, e'ecu5o passo a passo, acesso a registros, etc

B)M =Bac"ground )ebug ModeA

;uncionalidade ,C( similar ao ]-AC, empregado pela Motorola

(muladores =via hard&areA

(+uipamentos +ue emulam o processador%microcontrolador# Caros#


Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

2?

;a0endo escolhas$ plata/orma e suporte

2Drias plata/ormas e'istentes$


AOM =vDrios /abricantes, longa busca###A Cold/ire =;reescaleA 4o&er4C =;reescale%,BM%AppleA '8@ /anless =Ceode%Alchemy da AM), Celeron M da ,ntel, (den da 2,AA M,4! =M,4!A A2O%A2O92 =AtmelA Comercial ' comunitDrio

!uporte

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

90

;a0endo escolhas$ distribui7es

)istribui7es comerciais

)istribui7es livres

Montavista -ime!ys Linu'Nor"s NindOiver !napCear !ysCo Soan ###

uClinu' (mdebian (mbedded Centoo (mbedded%Mobile Bbuntu Kpen(mbedded ;amiliar L-,B =;reescaleA -2 !)( ,ntel Moblin _4onha seu nome a+ui`
9>

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

;a0endo escolhas$ suporte a tempo real

!uporte a tempo real$

Comercial$

O-Linu'4ro =Antes ;M!Labs, agora Nind OiverA Monta2ista O-Linu' ;ree =Nind Oiver, licena dualA O-A, =Bsando Adeos, livre de patentes agoraA

Kpen source$

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

92

;a0endo escolhas$ inter/aces grD/icas

2Drias sistemas grD/icos$


6topia )irect;B Matchbo' !)L ;L-S MiniCB, Wano Y =Micro&indo&sA

Oe/er3ncias$ http$%%&&&#linu'devices#com%articles%A-?2020I9@>?#html http$%%&&&#linu'Hournal#com%article%?I09 Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

99

;a0endo escolhas$ inter/aces grD/icas


;rame bu//er ' Ylib$

6topia 6t%(mbedded ;rame bu//er Linu'

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

9I

(m teoria, n5o e'iste di/erena entre teoria e prDtica###

)2m too 3oun" to die

-arget igual ='8@A, toolchain e "ernel prontos para a C4B%placa

4e35 not too rou"h

-arget di/erente, toolchain e "ernel prontos para a C4B%placa ="itsA

4urt me please

-arget di/erente, toolchain portado, porte do "ernel para a C4B mas com novos peri/1ricos na placa =driversA
,magem$ &&&#idso/t&are#com%

6ltra-!iolence

-arget di/erente, toolchain e porte do Linu' L+uaseM prontos =C4B parecidaA

7i"htmare

-arget di/erente, sem toolchain portado nem Linu' para a C4B%placa /de pre/er3ncia !o4C%;4CAA

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

9J

!istemas embarcados com Linu'

,ntrodu5o 4r1 re+uisitos Criando sistemas embarcados Cr1ditos, agradecimentos e lin"s

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

9@

Criando sistemas embarcados


Com tudo de/inido, 1 hora de aprender novas li7es$ Conceito >$ e'ecu5o em OAM Conceito 2$ bootloader Conceito 9$ root/s Conceito I$ init

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

9R

Conceito >$ e'ecu5o em OAM

K programa, arma0enado em /lash, em geral 1 descompactado para a OAM# )epois, a e'ecu5o 1 trans/erida para a OAM#

K custo da mem.ria /lash por megabyte 1 maior A velocidade da OAM 1 bem superior K programa pode ser arma0enado compactado em /lash a necessDrio um bootloader =programa de cargaA

Aten5o com processadores sem MMB$

A mem.ria 1 compartilhada por aplicativos e pelo pr.prio "ernel# A /alha em um aplicativo pode comprometer o "ernel em processadores sem unidade de gerenciamento de mem.ria =MMBA

('ecutando direto da /lash com Y,4 =eYecution ,n 4laceA$


http$%%elinu'#org%SernelGY,4 http$%%a'/s#source/orge#net%
Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

98

Conceito 2$ bootloader

Bsado para iniciali0ar o sistema operacional e tamb1m a con/igura5o inicial da plata/orma em uso Ceralmente agrega outras tare/as, como descompacta5o, boot remoto via rede ou serial, opera7es com a /lash, etc Alguns e'emplos$

)as B Boot$ 44C, AOM, A2O92, M,4!, Cold/ire, ### MicroMonitor$ AOM, Cold;ire, !V2, @8S, M,4!, 4o&er4C, Y!cale ### redBoot$ AOM,'8@,M,4!,44C, !V' #### Crub%Lilo$ '8@, boot do Linu', Nindo&s, etc# Kutros$ blob, !martLoader, colilo, etc#
,magem$ http$%%itpro#ni""eibp#co#Hp%article%CKLBMW%200@0?08%2IRJR2%0u>#Hpg

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

9?

Conceito 9$ root/s

K "ernel estD pronto, mas e o restante das aplica7es : )e onde elas ser5o lidas : Ooot/s 8 K root/s 1 o sistema de ar+uivo inicial do Linu'# 4ode ser um ar+uivo cpio%et'2 =comum em aplica7es embarcadasA, uma parti5o =geralmente sistemas n5o embarcadosA ou ainda via rede =W;!, por e'emploA# Wo momento do boot, o parQmetro LrootFM 1 passado para o Linu', indicando ele irD encontrar o sistema de ar+uivo inicial# ('emplos$

rootF%dev%hda> rootF%dev%ram0 root/stypeFram/s rootF%dev%mtdbloc"> root/stypeFH//s2

K busybo' pode ser uma boa alternativa para popular o root/s, emulando vDrios aplicativos tradicionais do Linu'# 4ode usar a biblioteca uClibc, bem menor +ue a glibc#

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

I0

Conceito I$ init

Ap.s montar o root/s, o "ernel e'ecuta o programa init =ou outro, caso seHa usado o parQmetro LinitFMA# -amb1m procura por linuxrc# (ste 1 o primeiro programa e'ecutado e irD /a0er a iniciali0a5o do sistema# K ar+uivo %etc%inittab dD as diretri0es de como isto deve ser /eito# MD+uinas com vers5o completa do Linu' podem ter es+uemas di/erentes +uando s5o usados m.dulos e'ternos +ue precisam ser carregados antes do root/s =es+uema "ernel initrd root/sA#

Ar+uivo initrd

mount

)iret.rio root/s

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

I>

Criando um sistema mEnimo com sash e Linu'

K +ue 1 necessDrio num sistema mEnimo com Linu' :


K sistema operacional ="ernel Linu'A !istema rai0 =root/sA, com aplicativo=sA e bibliotecas
Sernel

!istema mEnimo com sash


sash F static lin"ed shell =sem libc8A %dev%console =necessDrio para o "ernelA %dev%hda =necessDrio para o +emu%"ernelA %bin%sash$ processo a ser e'ecutado

init9:bin:sash root/s =sash,devA 8emu

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

I2

Criando um sistema mEnimo com sash e Linu'

Compile um "ernel monolEtico Crie um ar+uivo va0io e /ormate o como e't2


dd i/F%dev%0ero o/Froot/s#img b0F>02I" countF> %sbin%m"/s#e't2 i >02I m 0 ; root/s#img mount o loop root/s#img root/s )ispositivo do terminal$ %dev%console 4rompt de comandos =shellA e suas depend3ncias !cript de partida$ %bin%sash

Ar+uivo initrd

LMonteM este ar+uivo num diret.rio temporDrio

mount

L4opuleM este diret.rio$


)iret.rio root/s

('ecute o +emu para iniciar a emula5o


Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

I9

Criando um sistema mEnimo com sash e Linu'$ melhorias

uClibc$

Oestri7es menores de licena =LC4L 2A ;ootprint pe+ueno com +uase a mesma /uncionalidade da glibc http$%%&&&#uclibc#org

Busybo'

2ers7es redu0idas de utilitDrios Bni' em um Tnico e'ecutDvel, bastante modular e con/igurDvel Aceita tamb1m uClibc !uporta outras plata/ormas via CCC cross compiler http$%%busybo'#net%

)eve se ter um toolchain construEdo com a uClibc

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

II

!istemas embarcados com Linu'

,ntrodu5o 4r1 re+uisitos Criando sistemas embarcados Crditos5 a"radecimentos e links

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

IJ

4roHetos de constru5o do sistema

buildroot$ http$%%buildroot#uclibc#org% !cratchbo'$ http$%%&&&#scratchbo'#org% Croostool$ http$%%&&&#"egel#com%crosstool% -2 4roHect$ http$%%&&&#t2 proHect#org 4odem gerar do 0ero, usando a uClibc$

Cross compiler Ooot/s Linu' "ernel

2Drias plata/ormas suportadas ='8@, AOM, 44C, M,4! ###A

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

I@

Lin"s

Linu' a Bordo$ http$%%linu'abordo#com#br Linu' )evices$ http$%%linu'devices#com ;ree (lectrons$ http$%%/ree electrons#com ucdot$ http$%%ucdot#org 6emu$ http$%%/abrice#bellard#/ree#/r%+emu% Busybo'$ http$%%&&&#busybo'#net% Code sourcery$ http$%%&&&#codesourcery#com% avr92/s$ http$%%code#google#com%p%avr92/s%&i"i%Main4age )as B Boot$ http$%%&&&#den'#de%&i"i%BBoot

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

IR

Agradecimentos

Ao Michael Kpdnac"er, por dei'ar pTblico e'celente material sobre Linu' embarcado, algumas parte usadas a+ui$ http$%%/ree electrons#com Ao proHeto Kpen Cliparts$ http$%%openclipart#org Ao proHeto Kpen K//ice pelos e'celente programas

Sistemas Embarcados com Linux primeiros passos Copyright 2008, Marcelo Barros de Almeida Licena Creative Commons Attribution !hareAli"e 2#0 http$%%&&&#smar#com#br http$%%&&&#linu'abordo#com#br

I8