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
© Copyright 2024 Paperzz