Firmware - Marzo 2014 / N°98 - (Page 54)

cambio di contesto potrebbe vanificare l'eventuale aspetto positivo ottenibile. Ad ogni modo, ogni kernel, come abbiamo detto, richiede un suo approccio con determinate limitazioni e non pensabile fare considerazioni troppo generiche, ma è necessario calarsi nel contesto operativo in uso e tenere presenti le singole caratteristiche del proprio kernel, così come stiamo facendo. Infatti, per via di una particolare modalità di funzionamento, in un idle task si arresta l'interrupt periodico durante il periodo d'inattività, ovvero periodi in cui non ci sono attività, task, di applicazione che possono prendere il controllo della CPU, ma solo in seguito, ovvero quando il tick è riattivato, si esegue una rettifica al fine di correggere le inconsistenze incorse in questi particolari frangenti. Fermare l'interrupt di sistema permetterebbe al microcontrollore di rimanere in uno stato di risparmio energetico finché non si verifica un interrupt o assicurare transizioni di sistema operativo, come ad esempio elaborare la coda READY. A questo riguardo la figura 5 pone in evidenza questo particolare criterio: il tick di sistema si ferma tra T1 e T2, l'intervallo temporale dove microcontrollore può rimanere in uno stato di risparmio energetico per lungo tempo e risparmiare così più energia. Ora, però il problema è un altro: coma implementare una ge- Figura 5: Particolare uso del tick di sistema stione di questo tipo in ambito RTOS? O, in particolare, che cosa si potrebbe fare in FreeRTOS? Per fortuna in FreeRTOS una gestione di questo tipo è fattibile grazie a particolari facility che possiamo sfruttare. Infatti, costruire una gestione di questo tipo è abbastanza facile per via della presenza di alcuni parametri nel kernel stesso. È possibile, ad esempio, ricorrere alla definizione di configUSE_TICKLESS_IDLE presente in FreeRTOSConfig.h: impostando il va- lore a 1 si abilita una gestione di questo tipo in modo totalmente trasparente rispetto a un utente finale. In questo contesto, quando si abilita questa funzionalità, il kernel invoca portSUPPRESS_TICKS_AND_SLEEP in presenza di due condizioni. Per prima cosa il task identificato come Idle task deve essere l'unica unità computazionale in grado di essere eseguita, dal momento che tutte le altre attività, o task, a livello applicativo sono o bloccate (Blocked state) o messe nello sta- [1] Atmel-42023-ARM-Microcontroller-ATSAM4L-Low-Power-LCD_Datasheet.pdf [2] doc11189.pdf [3] atmel-42204-sam4l-low-power-design-with-freertos_ap-note_at03289.pdf to di sospeso (Suspended state). Non solo, è anche necessario considerare i periodi di clock inattivi, ossia occorre tenere presenti del numero dei periodi, n, che dovranno passare prima del momento in cui il kernel stesso si preoccuperà di attivare una nuova transizione. Questo numero n dovrà essere impostato nella definizione configEXPECTED_IDLE_TIME_BEFORE_SLEEP presente in FreeRTOSConfig.h. Il parametro xExpectedIdleTime per la funzione portSUPPRESS_TICKS_AND_SLEEP() rappresenta il numero totale di tick di sistema prima che un task sia spostato nello stato Ready. Il valore del parametro rappresenta, quindi, il tempo cui il microcontrollore può rimanere tranquillamente in uno stato di inattività con il tick di sistema fermo. In ambito FreeRTOS esistono due particolari soluzioni: implementare questa gestione ricorrendo a SysTick o con AST, ovvero con l'Asynchronous timer. Nel primo caso si ricorre al classico tempo di sistema, o Tick di sistema, implementato e gestito in modo tradizionale; infatti, in SAM4L FreeRTOS si utilizza un timer a 24 bit, ossia SysTick, che conta a partire da un valore di reload impostato a zero. Grazie a questo timer, un evento periodico può essere facilmente gestito insieme al cambio del contesto tra i vari task presenti nel sistema. Il listato 1 pone in evidenza il gestore del clock di sistema FOCUS ON INSIDE TOOLS ANALOG TIPS'N TRICKS 54 SKILLS MARKET NEWS SPOTLIGHT EVENTS ZAPPING MEMBERSHIP

Tabella dei contenuti per la edizione digitale del Firmware - Marzo 2014 / N°98

News
TIPS'n tricks
FOCUS on I Microcontrollori Kinetis K60
SKILLs Note di Progetto con PIC24FJ128GC010
INside
Usare un NAND come Traslatore
Le MCU C8051F91x-C8051F90x
Single-Chip Usb To Uart Bridge
ANALOG
Rilevamento interruzioni con Atmel ATA6870
Una Proposta TI per i Convertitori DC-DC
TOOLS FreeRTOS e SAM4L, le ragioni di una perfetta integrazione
SPOTlight Il DPSM: analisi di previsione e risparmio energetico
EVENTS zapping
Guida

Firmware - Marzo 2014 / N°98

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