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