• Non ci sono risultati.

Inquesto apitoloabbiamopassatoinrassegnale aratteristi heprin ipalidella

famiglia18FXX2. Sonostatitrattatisoltantogliaspettiessenzialiper ompren-

dereilfunzionamentoelas ritturadelsistemaoperativo

µ

TNetOS.Perulteriori approfondimentisipuò onsultare[16℄,[17℄, [18℄,[19℄, [24℄.

Sistemi operativi per PIC

Inquesto apitolovienefornitaunapanorami asullostatodell'artedeisistemi

operativiperi PIC dellafamiglia 18FdellaMi ro hip. Nei paragra 3.1, 3.2,

3.3vedremorispettivamenteitresistemioperativiSalvo,Pi Os18e

µ

C/OS-II. Ilparagrafo3.4riepilogale aratteristi heprin ipalidiquestisistemioperativi

onfrontandole onquelledel

µ

TNetOS.

3.1 Salvo RTOS

Salvoèunsistemaoperativoreal-time(RTOS)sviluppatodallaso ietàameri a

Hi-Te h. È un sistema operativo multitasking di tipo ooperativo on pieno

supportoallagestionedeglieventi. Ilmultitaskingèbasatosullivellodipriorità

assegnato ad ogni task. Sono previsti quindi i livelli di priorità e i pro essi

on lastessaprioritàvengonoserviti on unastrategiadi tiporound-robin. La

gestionedeglieventiprevedel'usodisemafori,messaggie odedimessaggiperle

omuni azionifrapro essieperlagestionedellerisorse. Salvoès rittoinANSI

C, er andodi limitarealminimoindispensabilel'usodell'assembler,spe i o

di ogni pro essore. La s elta del C, piuttosto he dell'assembly, permette a

Salvodi esserefa ilmenteportabilesuunavastagammadipro essori,daiPIC

alPentium,peresempio.

L'ammontaredi memoriaROMeRAMri hiestadipendedal tipodi appli-

azione: unaappli azionemultitaskingminimalepuòusaresolopo he entinaia

di istruzionima hina, mentre un'appli azionepiù omplessa potrebbe ri hie-

dere, sullo stesso pro essore, an he un migliaiodi istruzioni. In ogni aso, la

quantità di memoria RAM ri hiesta dipende prin ipalmente dalla dimensione

ompilazione enon possono ambiare a run-time. Sonosempli i funzioni he

onsistonoin una inizializzazione (opzionale) seguita da un i lo innito on-

tenente almenoun ambio di ontesto; non possono avere nessun parametro.

Una volta reato, il task viene posto nello statodi attesa. An hé il multi-

taskingfunzioni orrettamente,il taskin ese uzione deve ritornareil ontrollo

allo s heduler; iò avvieneattraversoun ambio di ontestoall'interno del ta-

sk. Ilnumerodi tasked eventi gestibilidaSalvodipende es lusivamente dalla

memoriadisponibile.

Un'appli azioneSalvoèuna ombinazionedi hiamatealleroutinediservizio

del sistema operativo e di odi e appli ativo. Un esempio di appli azione è

mostratonellistato4.

Salvo è un sistema operativo a pagamento, ma la Hi-Te h ha da qual he

annorilas iato an he una versione freeware hiamata SalvoLite, he limita il

numerodi taskedi eventigestibili.

3.2 Pi Os18

PICos18èunsistema operativoreal-time on multitasking di tipopreemptive

prodottodallaso ietàfran esePRAGMATECedestinatoallafamigliadeiPIC

18. Ilmultitaskingèbasatosuunlivellodiprioritàassegnatoadognitask: itask

on prioritàpiùalta hannodirittodi prelazione suitask di priorità piùbassa.

I task on la stessa priorità vengono serviti on una strategia di tipo round-

robin. Il nu leo è stato s ritto in ANSI C. La gestione degli eventi prevede

es lusivamentel'usodi semafori.

I task vengonodi hiarati stati amente assieme al kernel durante lafase di

ompilazionee non possono ambiarearun-time. Ilnumero massimo di task

eseguibilidal PICos18 è16, unnumero più he su iente per appli azioni su

mi ro ontrollore. Adognitaskèpossibileasso iareunmassimodi ottoeventi.

I listati 5 e 7 mostrano ome sia possibile eseguire un'appli azione on due

task on il Pi Os18. Ilprimo le ( main. ) èl'appli azione prin ipale, mentre

il se ondo( taskdes . ) ontiene tutte le informazioni riguardantii task ele

risorse utilizzate per una data appli azione. L'implementazione di ogni task

risiedeinunlesorgenteaparte;perinostriduetaskd'esempioèmostratanel

listato6.

Ogni volta he si rea un task e si aggiunge ad una appli azione, il pro-

grammatoredevemanualmente editare il le taskdes . perinseriretutte le

Listato 4Esempiodiunaappli azioneSalvo. Iduetask, TaskA(),TaskBnon

fannoniente e,poi héhannolastessapriorità(10),sempli emente sialternano

fra loro. Il ambio di ontestori hiede heognitask siaindenti atoda un'e-

ti hettaunivo a. Questaeti hetta viene reataattraversolama ro_OSLabel.

OSInit()inizializzalestrutturedatidelsistemaoperativoedeveessereri hia-

mata prima di qualsiasi altra routine di servizio. OSS hed è lo s heduler del

sistema edeettuaiterarivamenteleseguentitre operazioni:

Controllasesisonoveri atideglieventi. In asoaermativo,tuttiitask hesieranopreventivamenteregistratiaduneventovengonopassatinello

statopronto,

Controlla se è s aduto il tempo di attesa di qual he task. In aso aermativotalitaskvengonopassatinellostatopronto,

Inne,vienemandato inese uzioneil tasksu essivo;

Lafunzione OS_Yieldeettua un ambiodi ontestoedin generesitrovaalla

nedel i loinnitodeltask. LafunzioneOSCreateTask reailtask;OSTCBPè

unama routilizzataperspe i areunpuntatorealtask ontrolblo k , ioèalla

struttura he ontieneleinformazionisultask.

_OSLabel(TaskA1) _OSLabel(TaskB1) void TaskA( void ) { for (;;) /

Body here

/ OS_Yield(TaskA1); } void TaskB( void ) { for (;;) /

Body here

/ OS_Yield(TaskB1); } int main( void ) { Init(); OSInit();

OSCreateTask(TaskA, OSTCBP(1), 10);

OSCreateTask(TaskB, OSTCBP(2), 10);

for (;;)

A dierenza di Salvo, il nu leo di PICOs18 è open-sour e ed è distribuito

gratuitamentesottoli enzaGPL.

Listato 5Esempio di appli azione on Pi Os18. Per prima osa siinizializza

ilpuntatore allosta k( STKPTR)esiselezionalamodalitàdi defaultdell'appli-

azione. Lasys allInitsio upa diripulirelamemoriadatiedi inizializzare

eventualirisorse(ilregistroTimer0,peresempio). Lasys allStartOSfapartire

ilmultitasking. #define DEFAULT_MODE 0 AppModeType Sele tedMode; void main(void) { STKPTR = 0; Sele tedMode =DEFAULT_MODE; Init(); while(1) { StartOS(Sele tedMode); } }

Listato 6 Implementazione dei task in Pi Os18. All'interno del i lo innto

deveessereinserito il odi e he des riveil omportamentodei task. Los he-

dulingè preemptive quindi, adierenza di Salvo,non è ne essario ri hiamare

al unasys allperil ambiodi ontesto.

TASK(TASK0) { while(1) { /

Body here

/ } } TASK(TASK1) { while(1) { /

Body here

/ }

Listato 7 Denizione dei task in Pi Os18. Per ogni task si devono inserire

le seguenti informazioni: priorità, indirizzo dellosta kasso iato al task esua

dimensione, nomedeltask,statoiniziale.

#define DEFAULT_STACK_SIZE 128

De lareTask(TASK0);

De lareTask(TASK1);

volatile unsigned har sta k0[DEFAULT_STACK_SIZE℄;

volatile unsigned har sta k1[DEFAULT_STACK_SIZE℄;

rom_des _tsk rom_des _task0 = {

TASK0_PRIO, /

prioinit from 0 to 15

/ sta k0, /

sta k address (16 bits)

/ TASK0, /

start address (16 bits)

/ READY, /

state at init phase

/

TASK0_ID, /

id_tsk from 1 to 15

/

sizeof(sta k0) /

sta k size (16 bits)

/ }; rom_des _tsk rom_des _task1 = { TASK1_PRIO, sta k1, TASK1, READY, TASK1_ID, sizeof(sta k1)

3.3

µ

C/OS-II

µ

C/OS-IIèunsistemaoperativoreal-time onmultitaskingditipopreemptive prodottodallaso ietàameri anaMi riumIn .

I task vengonodi hiarati stati amente assieme al kernel durante lafase di

ompilazione e non possono ambiare a run-time. Il numero massimo di ta-

sk eseguibili è 63 ed il multitasking è basato sul livello di priorità assegnato

ad ognuno di essi. I livelli di priorità sono 63 e due task non possono avere

lostesso livello; di onseguenza, adierenza del Pi Os18, non è prevista una

strategiadi s heduling round robin. La gestione degli eventi prevede l'uso di

semafori,messaggie odedimessaggi. Iltempodiese uzionedelle hiamatedi

sistemaedellagestionedeglieventiè, omeneiduepre edentisistemioperativi,

ompletamente deterministi o. Ciò vuoldire hel'utente èsemprein gradodi

sapere quanto tempoimpiegheràil sistema ad eseguireuna sys all oa gestire

unevento,indipendentementedalnumeroditaskin ese uzione 1

.

µ

C/OS-II può essere eseguito su una vasta gammadi ar hitetture, tra le quali i PIC 18 della Mi ro hip, i mi ro ontrollori Frees ale della Motorola, i

mi ropro essori ARM7, per itarne al uni. Il listato 8 mostra un esempio di

omeimplementareun'appli azione onduetask.

La li enza è proprietaria, ma è possibile a quistare i sorgenti per s opi

didatti i. Ilnu leo èstatos rittoin ANSIC.

3.3.

µ

C/OS-II 35

Listato 8Esempio di appli azione on

µ

C/OS-II. OS_STK èla struttura dati utilizzataperdenireladimensionedellosta kdiognitask. OSInitinizializza

ilsistemaoperativoe,inparti olare, reauntaskidle heverràeseguitoquando

nessun taskutente èpronto perl'ese uzione. OSTaskCreate()vieneutilizzata

per reareuntaskeri hiedequattroargomenti: ilpuntatoreal odi edeltask,

il puntatore dell'argomento deltask( pdata),il puntatorealla imadellosta k

deltask, laprioritàdeltask. OSStartavviail multitasking.

OS_STK Task1Stk[100℄;

OS_STK Task2Stk[200℄;

void Task1(void

pdata) { //task loop

for(;;) {

/

Body here

/ }

}

void Task2(void

pdata) { // task loop

for(;;) {

/

Body here

/ }

}

void main (void) {

OSInit();

OSTaskCreate(Task1, (void

)0, &Task1Stk[0℄, 1); OSTaskCreate(Task2, (void

)0, &Task2Stk[0℄, 2); OSStart();

3.4 Con lusioni

Queste apitolo ha voluto fornire una brevepanorami a dei prin ipalisistemi

operativi perla famiglia PIC 18F. Abbiamo preso in onsiderazione i sistemi

operativi piùnoti epiù utilizzati. Vale la pena qui ri ordarean he il sistema

operativo FreeRTOS, un progetto open sour e he rispetto agli altri è nato

re entemente. Intabella 3.1 vengono riepilogate le aratteristi he dei sistemi

operativitrattatiedel

µ

TNetOS, heverràanalizzatoindettaglionel apitolo 5.

Con lusioni

Tabella3.1ConfrontofraimaggiorisistemioperativiperPIC.

Salvo RTOS Pi OS18

µ

C/OS-II

µ

TNetOS

Real Time Si Si Si No

S heduling Cooperativo on Preemptive on Preemptive on Cooperativo on priorità

15livelli dipriorità 15livellidi priorità 63livellidipriorità basatasutimer ondiviso

Numeromassimodi task Dipendedallamemoria 16 63 Dipendedallamemoria

disponibileabordo disponibileabordo

GestionedegliEventi Semafori,messaggi, Semafori Semafori,messaggi, Messaggi

odedimessaggi odedimessaggi

O upazione di memoria

ROM del nu leo 1

7Kbytes 5Kbytes 9Kbytes 8Kbytes

Ar hitetture supportate Vastagamma PIC18-24-30-33 Vastagamma PIC 18F

(PIC,Pentium,et .) (PIC,Frees ale, ATR,et .)

Li enza Apagamento GPL Apagamento Mi rosoft'sSharedSour e

1

Valoremedioindi ativo, al olato onsiderandouna ongurazionemultitasking on supportoalla gestionedi eventi edi ritardi. Peril

µ

TNetOS èstatodeterminatotramiteben hmarkutilizzandoilCompilatoreC18dellaMi ro hip,perglialtritramitedatiforniti onla lorodo umentazione.

Il framework Roboti s4.NET

Roboti s4.NETèunframework diprogrammaziones rittopersvilupparepro-

grammidi ontrollodisistemiroboti iaventiun'ar hitetturabio-like , ioèispi-

rataalsistemanervosoumano(g. 4.1). Ilmodellosottostantesibasasullano-

zionedi orpo. Èstatoprogettatoperpermettereilriusodeimoduliefornireun

supportoautomati oall'implementazionedellainfrastrutturadi omuni azione

fradi essi.

Figura 4.1 Confronto fra sistema nervoso biologi o ed ar hitettura

Roboti s4.NET

Il Brain ( ervello): è responsabile della parte ognitiva del sistema di ontrollo,

LaBodymap: una lasseutilizzataperpermetterela omuni azionetrail Braineilrestodelsistema,

Il Body ( orpo): un sistema multi-agente omposto da Roblet, ioè da moduli software indipendenti he omuni ano on il Brain attraversola

Bodymap;

Figura4.2Ar hitetturadiRoboti s4.NET.Ilframeworkfornis eun'infrastrut-

turadi omuni azionepersvilupparesoftware`intelligente'ingradodiinteragire

onilrestodel orpo. Le omuni azionipossono oinvolgereognilivello.

L'obiettivodel frameworkèdi in entivare leastrazioni di programmazione

ri hiesteperimplementareilBodyelaBodymap. Èstatoimplementatousan-

do la piattaforma .NET di Mi rosoft, pertanto si appoggia ai me anismi di

ree tion(vedipar. 1.1)eai ustomattributes(vedipar. 1.1.1) omestrumenti

di hiarativiperdes rivere omeirobletsono onnessifraloroe onlaBodymap.

L'usodeirobletpermettediorganizzareeventualisensorieattuatoriingrup-

pilogi ie onsentedipre-pro essareidati,fornendounprimopassodiastrazio-

ne. Comeesempio, unrobletpuò ri onos ereun ertonumero difa e riprese

daunavideo ameraeinviareallabodymapunalistadellepersoneri onos iute,

roblet è asso iato un thread per la sua ese uzione. Come si vede in g. 4.2

unpro essopuò ontenerediversiroblet,el'ar hitetturapuòesseredistribuita

fra più nodi di una rete. Come nei sistemi viventi, esiste quindi una sortadi

intelligenzaperiferi a apa edieettuareunaprimaelaborazionedeisegnaliin

ingressoalsistema,edirielaborareleinformazioniinviateledalBrain,primadi

trasformarleinazioni.

Iroblet omuni anomediantel'interfa iadirete,analogaallaretediassoni

diunsistemavivente,doveviaggianoipa hetti ontenentileinformazioni. Un

robletèin gradodiri evereattraversolaBodymapimessaggiinviatidalBrain

e di rispondereatali messaggi. Ad esempio,se il Braindi unrobot de idedi

spostareilsistemainavantidiunmetro,invieràaimotori(peresempioiroblet

MotorSxeMotorDx),attraversolaBodymap,ilmessaggio`avantidiunmetro';

questi, unavoltari evutoil messaggio,inizierannoa al olarequantigiridelle

ruotesonone essarian héilrobotsispostiinavantidiunmetroeavvieranno

imotori inmodotaledaeettuarelospostamentori hiesto.

Dall'esempio pre edente,si può intuireuna delle innovazioni fondamentali

he Roboti s4.NETha introdotto nel mondo della roboti a. Ipotizziamo, per

esempio,divolerspostareilnostrosoftwaredi ontrollodaunrobotadunaltro

avente un'ar hitettura hardware dierente. In passatosaremmo stati ostret-

ti a ris rivere il software per riadattare il ontrollo al nuovo hardware. Con

Roboti s4.NET,inve e,ène essarioris riveresoloedes lusivamente iroblete

trasferire poi il Brain dauna piattaformaall'altra, senza dover ambiare una

sola rigadi odi e. Questovuoldire heèpossibile rearerobot aventialloro

interno più programmiin ese uzione rappresentantii roblet dedi ati. Avvian-

do il Brain,questo saràin grado di omandareil robot, senza he nessunogli

abbiadovutodiresu herobot èinstallato; sarannoi robletstessi adinviargli,

mediante laBodymap,lelorointerfa edi omuni azione,dando osì alBrain

un'immagine,alui omprensibile,delnuovosistema.

Questolavoroha portato allo sviluppodi un nuovorobot hiamatoR2D2,

he è diventato il tester per la nuovapiattaforma roboti asviluppata. A di-

mostrazione di quanto aermato, è stato possibile ontrollare, on lo stesso

Brain, due robot aventi ar hitetture ompletamente diverse, ome l'ER1della

EvolutionRoboti sedR2D2,ilrobotsviluppatodalteamdi Roboti s4.NET 1

.

1

4.1 L'infrastruttura di omuni azione

Ilframeworkimplemental'infrastrutturadi omuni azioneusandounsistemaa

messaggi hesi appoggiasul proto olloUDP;imessaggihannounlimitemas-

simodi grandezza parialla MTU dellarete utilizzata. Nel asodel

µ

TNetOS ( ome si vedrà nel ap. 5), la omuni azione avviene tramite interfa ia se-

rialee vedremoquali strategiesono stateadottate per integrareil sistema nel

framework.

ImessaggisonodenitiinXML,inquantorappresentaillinguaggiousatoda

.NETperlaserializzazione;iroblet eil Brainpossonode idere se ondividere

ladenizionedellestrutturedatiopro essaresempli ementelalororappresen-

tazioneXML.Questa aratteristi arendeilframeworkpiùs alabileinquantoil

proto ollopermetteildisa oppiamentodei omponenti softwareutilizzati per

denireilsistemadi ontrollodelrobot.

Quandounroblet invia unmessaggio alla Bodymap, questalo inseris e in

unalberoXMLprin ipale;questaoperazionepermettealBraindiaveresempre

unavisioned'insiemedelsistema. QuestoalberoXML,presentenellaBodymap,

rappresenta l'interfa ia di omuni azione frail sistema nervoso entrale ed il

sistemanervosoperiferi oedèassimilabilealnostro ervelletto. Alla ri ezione

di un messaggio, il Brain può rispondere inviando un nuovo messaggio alla

Bodymap, heprovvederàadinviarloalroblet destinatario.

Inviae ezionale,èpossibilerealizzareuna sortadi omuni azionediretta

fra roblet (detti Friend), he generalmente non possono omuni are fra loro.

Questapossibilitàèstataprogettataperimplementareunasortadi omporta-

mento reattivodelrobot: in al une ir ostanze, larispostaadundato evento

esternodeveessereeettuataintempibrevi;puòquindinonesseresi uroinvia-

reunmessaggioal ervelloepoiaspettare hesiapro essatoe hevengade isa

una data azione. An he in questo aso, ome nell'organismo umano, quando

'èunperi oloimmediatoil orpodeveesserein gradodi reagirein modonon

os iente. Come esempio si pensi al asoin ui a identalmente mettiamo la

manosuunfuo o: ilbra iosiritraeistantaneamenteedautomati amente.

4.2 Il Brain

IlBrainsvolgelefunzioni ognitivedi ontrolloedalsuointernoospitalaBody-

map;quet'ultima,grazieadunMessageListener,avverteilBraindellapresenza

di messaggiin ingresso. Ilproto ollodi omuni azione èasin rono, osì he i

ivarirobletpossonoesseretranquillamenteriavviatiin asodiblo o,senza he

il sistema vadariavviatointeramente. Seunroblet siblo a, laBodymap es-

seràsempli ementedi ri evereinformazionidaesso( omeseunartosmettesse

di omuni areilsuostatoal ervello). Ilroblet,unavoltariavviato, omin erà

nuovamente adinviare informazionialla Bodymap senzanessun bisognodi un

riavviodi quest'ultima. Analogamente,seèlaBodymap asmettere di funzio-

nare, i roblet ontinuano omunque nella omuni azione e il suo riavviosarà

indolore per il resto del sistema. La robustezza della omuni azione è legata

all'impiegodelproto olloUDPpiuttosto heTCP.

4.3 La Bodymap

LaBodymapèla lasse heinterfa iail ervello olrestodel orpo;ingenere

èun omponente in lusonel software hegestis eil Brain. È ompostadadue

parti:

unalberoXMLin uivengonoinseritituttiimessaggiri evutidairoblet,

unsistema di omuni azione pers ambiaremessaggi on i roblet fa enti partedel orpo;

L'alberoXMLdes rivelostato orrentedel orpo.

Nelmomentoin uiunrobletvieneavviato,siregistraallaBodymapinvian-

Documenti correlati