Sunteți pe pagina 1din 16

Universitatea Transilvania Braov Facultatea de Inginerie Electric i tiina Calculatoarelor Departamentul de Electronic i Calculatoare

Sisteme de operare distribuite i n timp real

!" #" #"$

%#l# dr# ing# &ert's( Csaba)*olt+n

Compilarea sistemului

n mod tradiional compilarea sistemului embedded se reali(ea( prin compilarea sistemului de operare i a aplicaiilor ntr)o singur imagine

re(ult ntr)un singur ,iier binar ce poate -i ncrcat n memoria nevolatil a sistemului legarea mpreun permite nlturarea codului ne,olosit din sistemul de operare re(ult.nd n dimensiuni reduse a sistemului se poate reali(a o optimi(are a codului ntre /ernel i aplicaii re(ult.nd n sistem mai mic i mai rapid

Compilarea embedded 0inu1

0inu1 urmrete principiul de pe des/top2 sistemul de operare i aplicaiile sunt compilate separat

uurin n de(voltarea aplicaiilor i n modi,icarea ,uncionalitii sistemului portabilitate crescut siguran ridicat dimensiunea sistemului este mai mare3 cu ,uncii din /ernel ne,olosite3 cu rutine speciale de inter,aare aplicaii 4 /ernel comple1itatea compilrii sistemului crete

Compilarea /ernelului

/ernelul 0inu1 vine cu un sistem de compilare ncorporat 5/build6 ba(at pe 78U make mecanismul /build o,er un sistem simpli,icat i uor de ,olosit pentru con,igurarea i compilarea /ernelului sistemul /build poate -i uor e1tins cu rutine proprii de con,igurare i scripturi de automati(are ce permit adaptarea uoar la di,erite sisteme

9aii necesari pentru compilarea /ernelului

instalarea unui mediu de cross)compilare

implicit sistemul vine cu un mediu de compilare pentru :ost 5binutils3 gcc6 compilarea pentru sistemul embedded are nevoie de un cross)compiler2 compilatorul este e1ecutat pe un :ost3 dar creea( cod pentru sistemul int 5e12 gcc)arm3 gcc) mips3 etc#6 procesul de selectare a componentelor din /ernel ce vor -i compilate mai multe metode2 make [config | menuconfig |
xconfig]

con,igurarea /ernelului

9aii necesari pentru compilarea /ernelului

compilarea surselor i legarea ,iierelor obiect

make

se compilea( sursele selectate la ,a(a de compilarea i se leag toate mpreun ntr)o imagine vmlinu1 pe #; este nevoie de crearea dependinelor de ,iiere :eader 5make dep6 nainte de comanda ma/e3 pe #< nu este necesar pe #; dac comanda ma/e se emite nainte de terminarea comen(ii3 se intr ntr)o inter,a interactiv make config3 pe #< se generea( un mesa=e de eroare

9aii necesari pentru compilarea /ernelului

poate e1ista o ,a( de postprocesare a imaginii /ernelului dependent de ar:itectur i de sistemul de compilare

de obicei inclus n ,a(a ma/e3 dar nu e standardi(at poate include comprimarea imaginii 5vmlinu(63 crearea unei imagini de root3 cod de bootstrap3 etc## dac /ernelul a ,ost con,igurat s ,oloseasc anumite componente ca module ncrcate dinamic3 acestea trebuie compilate separat
make modules

compilarea modulelor

Compilarea /ernelului pe di,erite ar:itecturi

la con,igurare utili(atorul poate seta ar:itectura int2 tipul procesorului3 placa ,olosit3 etc# ,iecare plac are propriile setri i surse n subdirectorul arc: ma/e va parcurge aceste subdirectoare cut.nd config.in 5 #;6 sau Kconfig 5 #<6 n care sunt stocate con,igurrile posibile pentru ar:itectura speci,ic un BS9 trebuie plasat n aceste directoare3 cu ,iiere de con,igurare corespun(toare pentru a putea -i compilat n /ernel

Con,igurarea /ernelului

Con,igurarea /ernelului

pasul cel mai important n compilarea sistemului poate -i reali(at prin comen(ile

make config sistem ba(at pe interac>iune la linia de comand make menuconfig

sistem ba(at pe meniuri 5n mod te1t6 make xconfig

sistem gra,ic ba(at pe 7?& make qconfig


sistem gra,ic ba(at pe @t

Fiiere de con,igurare

con,igurarea este apelat de ma/e3 dar ,olosete propriul sistem de con,igurare cu ,iiere dedicate 5config.in n #;3 Kconfig n #<6 i propriul limba= script pentru acestea punctul de pornire este ,iierul de con,igurare speci,ic ar:itecturii 5n subdirectorul arc:6

aceasta este i primul punct n meniul de con,igurare acest ,iier invoc celelalte ,iiere de con,igurare a subsistemelor din /ernel 5,s3 net3 etc##6 n ,uncie de posibilitile o,erite de plac

Elemente de con,igurare

,iecare element de con,igurare este stocat n ,orma numeAvaloare

valoarea poate -i

bool2 o,er valorile B3n tristate2 o,er valorile B3n3m string2 orice ir de caractere ce trebuie inclus n /ernel ca atare integer2 un numr oarecare ce trebuie inclus n /ernel :e1adecimal2 similar cu integer

elementele pot avea o valoare implicit3 i pot -i dependente de alte elemente

E1emplu de con,igurare unui driver

n subdirectorul arc: speci,ic procesorului3 se creea( un subdirector pentru driverul respectiv cu codul surs de e1# driverul_nostru.c n ,iierul &con,ig se include o intrare2
config DRIV R!"_#$%&R! 'ool (elp )ceasta este driverul nostru

n ,iierul Ca/e,ile se include


o'*+,-.$#/I0_DRIV R!"_#$%&R!1 23 driverul_nostru.c

la con,igurare se va genera un ,iier .config ce conine .$#/I0_DRIV R!"_#$%&R! 3 4

Compilarea aplicaiilor

compilarea aplicaiilor trebuie ,cut de asemenea prin cross)compilare pentru a uura portabilitatea pentru compilare se pot ,olosi tool)uri 78U2

autoconf automake li'tool

aceste tool)uri permit generarea unor sisteme de compilare ma/e generali(ate i portabile pornind de la 5akefile)uri simple

Con,igurarea aplicaiilor

prin ,olosirea tool)urilor autocon,Dautoma/e pentru con,igurare se poate ,olosi scriptul con,igure2
.6configure ++(ost37target8 ++'uild37'uild+s4stem8

con,igure va genera Ca/e,ile i con,ig#:3 ce vor compila sistemul speci,ic ar:itecturii probleme la cross)compilare2

configure nu poate e1ecuta programele de test 5de e1# si9eof-int1 6

acestea vor trebui introduse manual n config.cac(e

Crearea sistemului root

ultima ,a( n crearea sistemului embedded se reali(ea( o imagine a sistemului3 ce conine /ernelul i aplicaiile3 i care poate -i montat la bootarea sistemului pentru a permite iniiali(area sistemului i ncrcarea aplicaiilor pot -i create dou tipuri de sisteme de ,iiere pentru root2 ramdis/ i ram,s

ramdis/ emulea( un dispo(itiv bloc n memorie ram,s stoc:ea( toate datele asociate ,iierelor cac:eul /ernelului pentru a crea imaginile se ,olosesc comen(ile mkinitrd respectiv mkinitramfs

S-ar putea să vă placă și