77
EMBEDDED
55 • FEBBRAIO • 2015
PORTING |
SOFTWARE
gram Status Register) che contiene i risultati delle istruzioni
come flag di zero e flag di riporto oltre al numero di eccezioni
attuale;
•
registro di mascheramento degli interrupt;
•
registro che controlla quale puntatore dello stack è attivo.
Il set di istruzioni del core Cortex-M0, semplice ma estremamen-
te potente, mette a disposizione un gran numero di modalità di
indirizzamento e garantisce un elevato livello di densità del co-
dice [2] . Il porting del codice C da una CPU a 8 bit a una CPU
Cortex M si traduce molto spesso in un risparmio di memoria.
Le CPU della serie Cortex M di ARM hanno, come visibile in
figura 5, una pipeline delle istruzioni. Ciò contribuisce a incre-
mentare la velocità complessiva di esecuzione del codice perché
la CPU può eseguire un’istruzione mentre contemporaneamente
carica e decodifica l’istruzione successiva.
Le CPU della serie Cortex-M di ARM integrano il supporto per
gli interrupt direttamente nel core della CPU, utilizzando un
controllore NVIC (Nested Vectored Interrupt Controller). Tra le
caratteristiche di questo controllore si possono annoverare:
•
priorità dinamica e “annidamento” (nesting) con priorità auto-
matica degli interrupt in attesa;
•
bassa latenza – La CPU immagazzina e re-immagazzina auto-
maticamente il proprio stato senza nessun sovraccarico durante
l’esecuzione delle istruzione;
•
meccanismo di “Tail-chaining” – Elaborazione consecutiva de-
gli interrupt “annidati” senza il sovraccarico legato al salvatag-
gio degli stati e al ripristino tra gli interrupt;
•
arrivo in ritardo – un interrupt con una priorità più alta che
arriva durante l’operazione di push (inserimento di un valore)
nello stack di un interrupt a più bassa priorità viene servito per
primo.
L’insieme di queste caratteristiche consente una gestione degli
interrupt più veloce e deterministico. È pure previsto un timer
di sistema (“SysTick”) che semplifica l’utilizzo dell’RTOS è può
operare mentre la CPU è in modalità “sleep”. Grazie a questo
efficace supporto in termini di gestione degli interrupt, è possibi-
le realizzare un’architettura basata in modo più massiccio sugli
interrupt. Il processore Cortex-M di ARM integra caratteristi-
che di debug direttamente nel core della CPU, garantendo in tal
modo un miglior supporto in fase di debug per un gran numero
di ambienti IDE.
Il core Cortex-M0 fa parte di una più ampia famiglia di proces-
sori Cortex-M caratterizzati dalla medesima architettura di re-
gistri e in grado di eseguire l’intero set di istruzioni Thumb-2 (o
parte di esso). Ciò semplifica l’aggiornamento con una CPU più
potente, come ad esempio il processore Cortex M3 che equipag-
gia la famiglia PsoC 5LP di Cypress.




