Firmware - Gennaio 2015 / N°108 - (Page 47)
TOOLS
SKILLS
UTILIZZIAMO SUPERTASK
Un supertask è dichiarato come un task
tradizionale ricorrendo alla solita API.
Un'entità Supertask utilizza un proprio
spazio di memoria utilizzato come stack
e heap. In accordo a quanto scritto, un
supertask ha un suo livello di priorità impostato in fase d'inizializzazione: ogni
attività secondaria, se non specificata,
eredita la sua priorità. Per esempio,
API_taskCreate(supertask,
stack,
heap, ...);
Attraverso la chiamata API_taskCreate
si ottiene uno specifico handle.
È così possibile controllare o modificare
lo stato del supertask, il livello di priorità
attuale al fine di controllare tutte le funzioni prioritarie attive o in attesa all'interno del supertask, o per eliminarlo se
fosse necessario.
Per dichiarare una funzione F come funzione prioritaria (vale a dire, sottotask) appartenenti al supertask T, la dichiarazione
di funzione (o prototipo) di F deve essere
preceduto dalle seguenti direttive:
_task_(T) _priority_(P)
void F(int a, double *b);
Le due direttive possono essere combinate in un'unica direttiva _priority_ (T,
P). Questo dice al compilatore che, per
impostazione predefinita, la funzione F
ha la priorità P e appartiene al supertask
T. Quando un programmatore chiama
F (x, y) il compilatore genera automaticamente una chiamata per F all'interno
del supertask T, a livello di priorità P. T
e P possono essere variabili dinamiche
o espressioni valutate in fase di esecuzione, ad esempio, una espressione che
contiene argomenti di F.
Se il parametro P è omesso, l'attività
secondaria eredita il livello di priorità di
default del supertask. Se il parametro
supertask T viene omesso a sua volta,
l'attività secondaria è una funzione prioritaria esterna a un supertask. Nelle impostazioni predefinite P, T può essere sovrascritta chiamando F preceduto dallo
stesso _priority_ direttiva con i parametri
desiderati P1, T1:
Sopra è illustrata una funzione modem, implementata con il sistema tradizionale dei task
(sinistra) e con le priority function (destra). Il livello L2 trasmette i dati al livello L1 e avvia
un timer. Si verifica un timeout, che chiama il codice di ritrasmissione. Nell'implementazione
tradizionale a task, ogni livello è solitamente un task (con livelli di priorità diversi).
Nell'implementazione con le priority function, i livelli L2, L3 ed il livello del Timer eseguono
all'esterno qualsiasi Task o Supertask (nota: in alternativa, potrebbero eseguire internamente
_task_(T1) _priority_(P1) void F(x, y);
Quindi F può essere facilmente definito all'interno di qualsiasi supertask e a
qualsiasi livello di priorità. Se i parametri
P1 o T1 sono omessi, allora sono utilizzati i loro valori predefiniti. Si noti che al
fine di evitare di modificare il codice sorgente esistente è possibile posizionare le
direttive e prototipi funzionali priorità in
file separati che sono resi disponibili al
compilatore inclusi come intestazioni o
in qualche altro metodo. Ciò mantiene il
codice sorgente altamente portatile.
Analogamente un sotto-attività F può
essere invocato ad un tempo specifico t
usando la direttiva:
un Supertask condiviso).
_time_(t) void F(x, y);
F sarà chiamato al tempo t, all'interno
della sua supertask predefinito T, al suo
livello di priorità predefinito P. Per cambiare il livello di priorità predefinito di F,
possiamo utilizzare il seguente schema:
_time_(t) _priority_(P1) void F(x, y);
Allo stesso modo per stabilire un signal
tra F e S:
_signal_(S) void F(x, y);
CONCLUSIONE
Certamente quest'approccio è totalmente differente rispetto alle altre implementazioni tradizionali ma, senza dubbio, con
un'architettura di questo tipo il sistema
acquisisce maggiore flessibilità e controllo
durante la computazione. Portos può rappresentare una valida alternativa, anche se
occorrerà aspettare una sua condizione di
maggiore stabilità prima che questo sistema operativo possa essere utilizzato in applicazioni più propriamente industriali.
http://www.ie-cloud.it/web/contatti/
Tabella dei contenuti per la edizione digitale del Firmware - Gennaio 2015 / N°108
SOMMARIO
Tips’n Tricks Energy Harvesting
FOCUS La Rivoluzione Biomedicale “Bottom-Up”
Skills Low Power Capacitive Sensing
INside
USB 3.0: SuperSpeed con il “-25%” dei Consumi!
Com’è Fatta una Penna USB?
ANALOG Gestire la Luce Ambiente con TI OPT3001
SPOTlight Migliori Prestazioni dai Ricevitori “Very Wide Band” a Conversione Diretta
Tools Le “function priority” di Portos
News
EVENTS
Guida
Firmware - Gennaio 2015 / N°108
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2015-02_109
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2015-01_108
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-12_107
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-11_106
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-10_105
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-09_104
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-07_102
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-06_101
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-05_100
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-04_99
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-03_98
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-02_97
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2014-01_96
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-12_95
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-11_94
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-10_93
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-09_92
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-07_90_91
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-06_89
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-05_88
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-04_87
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-03_86
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-02_85
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2013-01_84
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-12_83
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-11_82
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-10_81
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-09_80
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-07_78-79
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-06_77
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-05_76
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-04_75
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-03_74
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-02_73
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2012-01_72
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-12_71
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-11_70
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-10_69
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-09_68
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-07_66_67
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-06_65
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-05_64
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-04_63
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2011-02_62
https://www.nxtbook.com/newpress/inwaredizioni/Firmware/2011-02_61
https://www.nxtbook.com/newpress/inwaredizioni/Firmware/2011-01_60
https://www.nxtbook.com/newpress/inwaredizioni/Firmware/2010-12_59
https://www.nxtbook.com/newpress/inwaredizioni/Firmware/2010-11_58
https://www.nxtbook.com/newpress/inwaredizioni/Firmware/2010-10_57
https://www.nxtbook.com/newpress/inwaredizioni/Firmware/2010-09_56
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2010-07_54-55
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-2010-06_53
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-magazine/Maggio-2010-52
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-magazine/Aprile-2010-51
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-magazine/Marzo-2010-50
https://www.nxtbook.com/newpress/inwaredizioni/Firmware-magazine/Febbraio-2010-49
https://www.nxtbookmedia.com