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