Università degli Studi Roma Tre - A.A. 2008/2009
Microprocessori e microcontrollori
Corso di progettazione su SoC ARM
prof. Nicola Masarone
L'insegnamento è inserito nel corso di Laurea Magistrale in Ingegneria Elettronica per l'Industria e l'Innovazione (LM 29) (ordinamento secondo il DM 270/2004) presso l'Università degli Studi RomaTre per i curricula: Elettronica di potenza, Microelettronica e Biomedica.
Presentazione corso - 2/10/2008
Giovedì, 2 ottobre 2008
ore 17:30 - Aula N20
Dip. di Ing. Elettronica
Via della Vasca Navale, 109
00146 - ROMA.
Architettura ARM - Lezione 7/10/2008
Introduzione al processore ARM; sistemi embedded; storia del processore ARM; prodotti commerciali e partners ARM; processore MU0; set di istruzioni MU0; formato indirizzi delle istruzioni; architettura RISC; stato ARM e Thumb; modi di funzionamento; registri generali e di stato; esempi di set di istruzioni CISC e RISC.
LPC2103 - Lezione 9/10/2008
Introduzione al controllore LPC2103; aspetti importanti; schema a blocchi; pin; memorie; interrupt; porte I/O; adc; uart; i2c; spi; ssp; timer; watchdog; reset e wakeup timer; rtc; pll; controllo di potenza; caratteristiche statiche e dinamiche.
Laboratorio - Lezione 10/10/2008
Il sistema di sviluppo; Integrated Development Environment (IDE): prodotti proprietari e open source; Eclipse; Free Software Foundation; GNU; GCC; GBD; Open On-Chip Debugger; plug-in CDT; introduzione all'uso di Eclipse; creazione di un nuovo progetto; importazione di file; macro; compilazione; make; upload.
Guida alla creazione di un nuovo progetto in Eclipse ver 3.2.
Installazione Software
scarica SDK_eng4armscarica workspace per SDK_eng4arm
Come requisito sul PC deve essere presente una versione di Java Runtime. In caso contrario dovete installare prima questo prodotto.
Una versione potete scaricarla da qui JRE 1.50
Architettura ARM - Lezione 14/10/2008
Sessione di domande e risposte sulla lezione precedente; Program Status Register (CPSR - SPSR_exc); istruzioni di movimento, esempi di codice in assembler; istruzioni di tipo aritmetico, esempi di codice in assembler; istruzioni logiche, esempi di codice in assembler; istruzioni di salto, esempi di codice in assembler.
LPC2103 - Lezione 16/10/2008
Indirizzamento di memoria: mappe di memoria, rimappatura della memoria e blocco di avvio, eccezioni prefetch abort e data abort; configurazione dei pin: pinout, descrizione dei pin; blocco di connessione pin: funzionalità, applicazioni, descrizione, registri; porta GPIO: funzionalità, applicazioni, pinout, GPIO, FGPIO, registri, note di utilizzo, esempi.
Laboratorio - Lezione 17/10/2008
creazione di un nuovo progetto in Eclipse: importazione di un progetto di base, compilazione e build di un progetto software; collegamento al target mediante JTAG: upload del progetto nella flash del dispositivo; utilizzo della porta GPIO in input e output; accensione di un LED su breadboard; lettura di un tasto su breadboard; modifica del codice per nuove funzionalità; confronto tra GPIO e FastIO.
Scarica il progetto led_button
Architettura ARM - Lezione 21/10/2008
Sessione di domande e risposte sulla lezione precedente; istruzioni di lettura singola da memoria; istruzioni di scrittura singola in memoria; esempi in assembler di load/store singoli; istruzioni di lettura multipla da memoria; istruzioni di scrittura multipla in memoria; esempi in assembler di load/store multipli; copia di registri con uso dello stack.
LPC2103 - Lezione 23/10/2008
Timer: modi di operazione, applicazioni, descrizione, mappa dei pin; descrizione dei registri interni: flag di interrupt, modalità counter, modalità timer, modalità capture, modalità match, modalità PWM; regole di utilizzo per la modalità PWM; esempi di utilizzo in modalità timer; architettura.
Laboratorio - Lezione 24/10/2008
Nozioni di base sulla tecnica PWM; definizione ed esempi di duty cycle; utilizzo del Timer1 in funzione di ritardo programmabile; accensione alternata di un led con periodo variabile mediante tasto; ispezione con breakpoint nel ciclo while principale; utilizzo del Timer0 come generatore PWM; accensione di un LED con due livelli d'intensità selezionabili con tasto; ispezione con breakpoint nel ciclo while principale; modifica del codice per una variazione continua dell'intensità luminosa.
Scarica il progetto timer_delay
Scarica il progetto test_pwm
Scarica The GNU C Programming Tutorial di Mark Burgess - Faculty of Engineering , Oslo College
Architettura ARM - Lezione 4/11/2008
Sessione di domande e risposte sulla lezione precedente; copia di registri con uso dello stack; animazione degli scambi tra registri e memoria; gestioni dello stack e relative istruzioni multiple; istruzioni di scambio, coprocessore e SWI; esempi in assembler di swap, semaforo e SWI; codici di condizione ARM; condizioni di branch; esempi di istruzioni condizionate; algoritmo del massimo comune divisore; algoritmo di ricerca del massimo; algoritmo di azzeramento di un vettore; architetture ARM.
LPC2103 - Lezione 6/11/2008
Analog-to-Digital Converter (ADC): caratteristiche funzionali, descrizione, mappa dei pin; descrizione dei registri; modalità di operazione: conversione con sincronismo hardware, interrupts, accuratezza.
Laboratorio - Lezione 7/11/2008
Nozioni di base sulla tecnica ADC; definizione ed esempi di utilizzo; condizionamento del segnale; misure di tensione e corrente; utilizzo del convertitore in software mode; pilotaggio LED in PWM regolato da potenziometro letto da ADC; misura di corrente tramite resistenza nota; misura di potenza dissipata.
Scarica il progetto test_ADC
Architettura ARM - Lezione 11/11/2008
Sessione di domande e risposte sulla lezione precedente; esecuzione di istruzioni in sequenza senza pipeline; esecuzione di istruzioni in pipeline a tre stadi; operazione della pipeline a tre stadi con istruzione a ciclo singolo; operazione della pipeline a tre stadi con istruzione multiciclo; differenza tra pipeline in stato ARM e stato Thumb; core ARM7TDMI-S; operazione di data processing da registro a registro; problemi nelle pipeline a più stadi; rischio read-after-write; comportamento del branch in pipeline.
LPC2103 - Lezione 13/11/2008
Vectored Interrupt Controller (VIC): caratteristiche, uso generale; descrizione dei registri; analisi dettagliata dei registri VIC; sorgenti di interrupt; falsi interrupt: studio di casi particolari, workaround, esempi di soluzione del problema; note di utilizzo del VIC; esempio di gestione VIC in linguaggio C.
Scarica il Technical Reference Manual del VIC
Laboratorio - Lezione 14/11/2008
External interrupt inputs: descrizione dei registri; utilizzo del Vectored Interrupt Controller: routine di servizio interrupt (ISR); uso di tasto per accensione e spegnimento LED in modalità polling; uso di tasto per accensione e spegnimento LED in modalità interrupt; gestione del debouncing; applicazione degli interrupt alle periferiche timer e ADC.
Scarica il progetto polling_vs_interrupt
Architettura ARM - Lezione 18/11/2008
Sessione di domande e risposte sulla lezione precedente; le eccezioni: possibili cause delle eccezioni; relazioni tra eccezioni e modi di funzionamento; gestione in ingresso e in uscita delle eccezioni in generale; dettagli sulla gestione delle eccezioni: l'eccezione SWI, l'eccezione Undefined, l'eccezione IRQ, l'eccezione FIQ, le eccezioni Data Abort e Prefetch Abort.
Scarica Using the GNU Compiler Collection - for gcc version 4.2.2 di Richard M. Stallman and the GCC Developer Community
LPC2103 - Lezione 20/11/2008
Real-time Clock (RTC): caratteristiche; descrizione; architettura; descrizione dei pin; descrizione dei registri; note di utilizzo del Real-time Clock; divisore del clock di riferimento; selezione dei componenti per l'oscillatore esterno a 32 kHz del Real-time Clock.
Architettura ARM - Lezione 25/11/2008
Sessione di domande e risposte sulla lezione precedente; eccezione di una periferica di tipo FIQ; eccezione di una periferica di tipo IRQ non vettorizzata; eccezione di una periferica di tipo IRQ vettorizzata; eccezione di una periferica di tipo IRQ senza l'uso del VIC PL 190; organizzazione della memoria: little-endian e big-endian; modello di spazio d'indirizzamento di programma C standard ARM; comportamento dello stack; sistema tipico basato su AMBA; sistema tipico di debug; organizzazione JTAG boundary scan; organizzazione ARM7TDMI; confronto caratteristiche e pipeline ARM7TDMI e ARM9TDMI.
LPC2103 - Periferiche - Lezione 27/11/2008
WatchDog Timer (WDT): caratteristiche; applicazioni; descrizione dei registri; diagramma a blocchi.
LCD HD44780: introduzione; registri istruzioni e dati; linee di controllo e dati; operazioni di lettura e
scrittura; sequenza tipica di controllo. Inizializzazione, verifica della flag di busy, funzioni varie, set di istruzioni.
Progettazione del modulo software; scrittura e lettura di un byte; modalità 4 bit; invio di comandi; salto a una riga;
stringa di caratteri su LCD
Scarica HD44780-AppNote - di Duane Bala
Scarica LCD-HD44780 - della Hitachi Ltd.
Laboratorio - Lezione 28/11/2008
LCD standard HD44780: montaggio; programma per la stampa di una stringa; programma per la stampa di un numero formattato; programma per la lettura di un valore di tensione da ADC e presentazione su LCD; impostazione dell'interrupt di RTC attivato dall'incremento del contatore dei secondi; uso della periferica RTC per la visualizzazione dell'ora e della data completa.
Scarica il progetto lcd_acd
Scarica il progetto lcd_rtc
Periferiche - Lezione 2/12/2008
Definizione di ingresso e uscita di DAC e ADC; codici binari unipolari; funzione di trasferimento di DAC e ADC unipolari ideali; codici binari bipolari; funzione di trasferimento di DAC e ADC bipolari ideali; concetto di quantizzazione: misura di un LSB; convertitori unipolari e bipolari; errore di offset e di guadagno nei convertitori bipolari; metodi di misura dell'errore di linearità integrale; funzione di trasferimento per un DAC e un ADC non ideale; dettagli della non linearità differenziale di un DAC e di un ADC; ADC non monotono con codici mancanti; errori associati ad ADC; sistema a dati campionati; funzione del Sample & Hold; criteri di Nyquist.
LPC2103 - Periferiche - Lezione 4/12/2008
Serial Peripheral Interface (SPI): aspetti; descrizione generale; trasferimento dati SPI; informazioni generali;
modalità master; modalità slave; eccezioni; read overrun; write collision; mode fault; slave abort; descrizione dei pin;
descrizione dei registri; architettura.
Microchip MCP4921: applicazioni; diagramma a blocchi; descrizione; tipi di contenitori; caratteristiche elettriche DC e AC;
curve di prestazioni tipiche; descrizione dei pin; vista generale; interfaccia seriale; applicazioni tipiche; supporto allo sviluppo.
Scarica il datasheet MCP4921 - di Microchip
Laboratorio - Lezione 5/12/2008
DAC MCP4921: montaggio; comunicazione tramite interfaccia SPI; programma di impostazione ciclica di un valore di tensione sul DAC per il pilotaggio di un LED; modifiche al progetto per la misura tramite ADC della tensione ai capi della resistenza di limitazione usata come trasduttore di corrente; calcolo e visualizzazione della potenza dissipata nel LED.
Scarica il progetto mcp4921
Periferiche - Lezione 9/12/2008
Architetture DAC; DAC di base con riferimento esterno; DAC con riferimento e buffer; interruttore: DAC 1-bit; DAC a resistori pesati; rete ladder R-2R; DAC R-2R in modalità tensione; ADC di base con riferimento esterno; ADC con riferimento e buffer; il comparatore: ADC 1-bit; convertitore parallelo (flash); ADC ad approssimazioni successive; algoritmo ad approssimazioni successive; convertitore DATRAC; ADC ad inseguimento; ADC a doppia rampa; forme d'onda in uscita dell'integratore nell'ADC a doppia rampa; modulazione Delta e PCM differenziale; quantizzazione nella modulazione Delta.
LPC2103 - Lezione 11/12/2008
Universal Asynchronous Receiver / Transmitter 0 (UART0): funzionalità; descrizione dei pin; descrizione dei registri;
architettura.
System control block: funzioni; descrizione dei pin; descrizione dei registri; oscillatore; registro di selezione GPIO / FGPIO;
controllo della mappatura di memoria; Phase-Locked-Loop; controllo di potenza; reset; divisore Advanced Peripheral Bus (APB);
timer di avvio; sicurezza del codice e debugging.
Laboratorio - Lezione 12/12/2008
Universal Asynchronous Receiver / Transmitter 0 (UART0): uso della periferica seriale asincrona; collegamento tra due schede BBeng4ARM; programmazione di una scheda come Master; programmazione di una scheda come Slave; ricetrasmissione con eco modificata; modifica del codice per visualizzazione dei messaggi su display.
Scarica il progetto uart0_Master
Scarica il progetto uart0_Slave
Periferiche - Software - Lezione 16/12/2008
Bus I2C: applicazioni su bus I2C; terminologia del bus I2C; esempio di bus I2C con due uC; dispositivi con alimentazioni diverse sullo stesso bus; trasferimento del bit su bus I2C; condizioni di Start e di Stop; trasferimento dati su bus I2C; esempio di trasferimento dati completo; indirizzamento a 7 bit; lettura immediata da Master su Slave; modalità operative di I2C. Bus SPI: modalità di connessione; collegamenti diretti e in daisy-chain; tipologie di segnali SPI. Progettazione: ciclo di vita di un progetto; modello di sviluppo ricorsivo; modello di sviluppo a cascata; fasi del ciclo di vita di un sistema; librerie di base; scenari d'uso; infrastruttura principale; processi funzionali; stratificazione del progetto software: processo foreground e background; macchina a stati ed eventi; realizzazione di una macchina a stati in 'C'.
LPC2103 - Lezione 18/12/2008
Organizzazione e scrittura della memoria flash: boot loader, funzionalità, applicazioni,
descrizione, suddivisione in settori, meccanismo di protezione del contenuto della flash, Code Read
Protection (CRP), In System Programming (ISP), In Application Programming (IAP), interfaccia
JTAG per la programmazione della flash.
Logica EmbeddedICE: caratteristiche, applicazioni, descrizione, stato dei pin multiplexati durante
il reset, descrizione dei registri, diagramma a blocchi, debug.
Laboratorio - Lezione 19/12/2008
Progetto orologio: impostazione di una macchina a stati per la gestione di un orologio con regolazione delle ore e dei minuti mediante l'uso di una tastiera a tre pulsanti; attivazione dell'interrupt di RTC per l'aggiornamento dell'orario corrente e degli interrupt EXTINT per l'input di utente. Modifica del codice per l'attivazione di un allarme.
Scarica il progetto clock
Laboratorio - Lezione 20/01/2009
Simulazione d'esame: la prova si svolgerà dalle ore 16:00 nell'aula Campus con l'uso di PC dell'Università o di PC personali. Nel corso della simulazione saranno date indicazioni sui punti da approfondire e al termine della stessa verrà fornita una valutazione sintetica.
Laboratorio - Esame 13/02/2009
Prova pratica di progettazione a microcontrollore: la prova si svolgerà dalle ore 10:00 alle ore 13:00 nell'aula Campus con l'uso di PC dell'Università o di PC personali. E' ammesso l'utilizzo di manuali e di librerie firmware. Tutti i candidati sono invitati a portare l'hardware in loro possesso.
Stanza 132 - Esame 18/02/2009
Colloquio: la prova si svolgerà dalle ore 15:00 alle ore 19:00 presso la stanza 132 (S2DEL – Solid State and Diamond Electronics Lab.)
Laboratorio - Esame 20/02/2009
Prova pratica di progettazione a microcontrollore: la prova si svolgerà dalle ore 10:00 alle ore 13:00 nell'aula Campus con l'uso di PC dell'Università o di PC personali. E' ammesso l'utilizzo di manuali e di librerie firmware. Tutti i candidati sono invitati a portare l'hardware in loro possesso.
Stanza 50 - Esame 15/07/2009
Esame di progettazione a microcontrollore: la prova si svolgerà dalle ore 10:00 alle ore 13:00 presso la stanza 50 (prof. Salvatori) con l'uso di PC personali. E' ammesso l'utilizzo di manuali e di librerie firmware. Tutti i candidati sono invitati a portare l'hardware in loro possesso.
Stanza 132 - Esame 01/10/2009
Esame di progettazione a microcontrollore: la prova si svolgerà dalle ore 15:00 alle ore 18:00 presso la stanza 132 (S2DEL – Solid State and Diamond Electronics Lab.) con l'uso di PC personali. E' ammesso l'utilizzo di manuali e di librerie firmware. Tutti i candidati sono invitati a portare l'hardware in loro possesso.
Microcontrollori e Microprocessori - Corso di progettazione su SoC ARM by Nicola Masarone Gabriele Di Nucci is licensed under a Creative Commons Attribuzione-Non commerciale-Non opere derivate 2.5 Italia License.