Architettura Cortex-M0

Elettronica dei Sistemi Programmabili
A.A. 2013-2014
Microcontrollori
Architettura degli ARM CORTEXTM-M0 (2a parte)
Sommario
Memory model
Eccezioni e interruzioni
Cenni sistema per il debug
Vettore eccezioni e startup
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
2/36
Memory model
per i
Cortex-M0
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
3/36
Memory system
Indirizzamento verso 4 GB (32 bit)
Le sezioni di memoria sono definite a livello di architettura
facilitare il passaggio ad altri micro
Il processore già contiene alcuni componenti allocati in una
sezione predefinita della memoria
NVIC
dispositivi per il debug
ok per chi sviluppa tool (valido anche per dispositivi
diversi, basati sempre su Cortex-M0)
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
4/36
Mappa della memoria
Periferiche; NVIC e
comp. debug
Periferiche esterne
Memoria esterna
Periferiche
Data memory
RAM (dati + stack)
Memoria programma
Vettore eccezioni
flash
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
5/36
Esempio: LPC81X
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
6/36
Esempio: LPC81X
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
7/36
Esempio: LPC81X
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
8/36
Esempio: LPC81X
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
9/36
Esempio: LPC81X
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
10/36
Esempio: LPC81X
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
11/36
Esempio: LPC81X
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
12/36
Stack
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
13/36
Funzione dello stack
Stack: memoria temporanea organizzata come LIFO
stack pointer
PUSH: iserimento
POP: estrazione
puntatore
0x00001234
0x11110000
x
PUSH
POP
0x10010000
x
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
14/36
Funzione dello stack
Uso tipico:
nello stack salviamo il contenuto di registri che verranno
“sporcati” da una routine chiamata dal programma principale
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
15/36
Gestione dello stack nel Cortex-M0
Stack pointer: R13 o SP
Full-descending
SP punta alla locazione piena dello stack
un nuovo dato riempie la locazione immediatamente
inferiore (di indirizzo inferiore)
tip. lo stack comincia dall'ultima locazione della RAM
dimensione minima di un dato: 32 bit => SP + 4...
0x3000 0000
256 MB
RAM
0x2000 0000
0x1000 0000
flash
0x0000 0000
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
SP = 0x2000 0000
allo start-up SP punta
in cima alla RAM
16/36
Gestione dello stack nel Cortex-M0
2 stack pointer
MSP (main)
PSP (process)
stack OS
stack Task C
PSP usato per OS
OS-kernel & exc-handler usano MSP
l'applicazione (task) usa PSP
OS, avendo il suo MSP, riesce
a controllare rapidamente la
commutazione verso un nuovo
task
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
stack Task B
stack Task A
Dati
17/36
Eccezioni
e
interruzioni
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
18/36
Eccezioni
Durante l'esecuzione
normale di un programma,
il processore esegue le
istruzioni una dopo l'altra
(fetch-decode-execute)
Le eccezioni sono eventi
anomali che prevedono
reazioni particolari del
processore per gestire la
nuova situazione.
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
19/36
Eccezioni
Il Cortex-M0 gestisce
Reset
Hard Fault
SVCall
OS
PendSV
SysTick
32 interrupt esterni (IRQ)
1 interrupt speciale (NMI)
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
20/36
IRQ
M0 gestisce fino a 32 IRQ
priorità programmabile
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
21/36
NMI
è possibile collegare più eventi all'unico NMI
in genere è preferibile averne uno solo
NMI
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
22/36
NVIC
NVIC: Nested Vectored Interrupt Controller
priorità e gestione
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
23/36
Nested Vectored Interrupt Controller
La gestione delle interruzioni è affidata al dispositivo NVIC
gestione flessibile
ogni IRQ può essere abilitata o meno
ingresso a livello o impulso
interruzioni annidate
l'ISR di un'interruzione di priorità più bassa può essere interrotta
dall'arrivo di una IRQ a priorità più alta
ingresso interruzione vettorizzata
allocazione ISR
risposta più rapida di una soluzione software
mascheratura
evitare che un processo possa essere interrotto
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
24/36
System
Control
Block
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
25/36
System Control Block
SCS: System Control Space
NVIC
SCB
registri di controllo per sleep mode
registri per la configurazione in risposta a eccezioni
codice identificativo del processore
(il debugger riesce a scoprire il tipo di processore)
Debug System
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
26/36
Debug system
interfaccia JTAG o SWD (serial wire)
Halt mode
step
accesso a registri
fino a 4 breakpoint hw
fino a 2 watchpoint per i dati
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
27/36
Tabella dei vettori
e
sequenza di startup
(cenni)
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
28/36
Codice e tabella dei vettori
Il codice è normalmente allocato a partire dall'indirizzo
0x0000 0000
indirizzo
della routine
di gestione
del reset
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
29/36
Sequenza di reset
Dopo che è stato riconosciuto il reset
la prima word si riferisce al valore di MSP
la seconda word determina il salto alla routine di gestione
iniziale (reset handler)
tempo
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
30/36
Sequenza di reset
Esempio:
32 kB
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
31/36
Esempio: LPC81X
startup_lpc8xx.c:
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
32/36
Esempio: LPC81X
startup_lpc8xx.c (cont.):
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
33/36
Esempio: LPC81X
startup_lpc8xx.c (cont.):
Vector Table
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
34/36
Riferimenti
Joseph Yiu
“The definitive Guide to the ARM CORTEXTM-M0
pp. 32-41
Newnes, 2011
LPC81xM
32-bit ARM Cortex-M0+ microcontroller; up to 16 kB flash
and 4 kB SRAM (Product data sheet)
http://www.nxp.com/documents/data_sheet/LPC81XM.pdf
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
35/36
Grazie per l'attenzione …
… domande?
All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License
(unless otherwise specified).
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
36/36