Anno di corso: 1

Crediti: 8
Crediti: 8
Crediti: 8
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale

Anno di corso: 2

Anno di corso: 3

SISTEMI EMBEDDED

Scheda dell'insegnamento

Anno accademico di regolamento: 
2015/2016
Anno di corso: 
3
Anno accademico di erogazione: 
2017/2018
Tipo di attività: 
Obbligatorio a scelta
Crediti: 
8
Ciclo: 
Secondo Semestre
Ore di attivita' didattica: 
84
Prerequisiti: 

Conoscenze di base sull’architettura degli elaboratori e sull’Assembler. Buone capacità di programmazione e conoscenze di base sul linguaggio C. Concetti base su sistemi operativi e programmazione concorrente. Principi di progettazione con uso di UML

Moduli

Metodi di valutazione

Modalita' di verifica dell'apprendimento: 

Esame scritto ed orale centrato sulla discussione di un progetto sviluppato in laboratorio.

Valutazione: 
Voto Finale

Obiettivi formativi

Comprensione delle principali problematiche relative ai sistemi embedded in tempo reale. Capacità di progettare semplici applicazioni embedded in tempo reale e di realizzarle programmando microcontrollori in Assembly e in C

Contenuti

Sistemi embedded: caratteristiche e requisiti. La struttura dei sistemi embedded: Microcontrollori, DSP e FPGA, memorie e loro organizzazione, sistemi di comunicazione. Periferiche, sensori ed attuatori. Teoria dello scheduling real-time. Architetture software e librerie per la programmazione real-time, fail-safe e safety-critical. Sistemi operative real-time. Programmazione microcontrollori in Assembly e C (laboratorio).

Programma esteso

Sistemi embedded: caratteristiche e requisiti
- Caratteristiche generali e domini applicativi; valore di mercato e diffusione.
- Requisiti temporali, di affidabilità, di efficienza.
- Dimensioni progettuali.
La struttura dei sistemi embedded
- Cenni di elettronica digitale e analogica.
- Livelli di scala: IC, PCB, network.
- Unità di elaborazione: CPU, microcontrollori, DSP, GPU, ASIC. Logiche programmabili: FPGA.
- Memorie: SRAM e DRAM, memorie non volatili; interazioni tra processore e memoria: architetture di Von Neumann e Harvard, gerarchie di memoria.
- Sistemi di comunicazione: GPIO, Pulse Width Modulation, RS-232, USB, I2C, SPI, CAN bus, JTAG.
- Sistemi ad elevata integrazione: SoC e NoC.
- Esempi di microcontrollori.
Periferiche, sensori e attuatori
- Timer.
- DMA.
- Cenni di teoria del campionamento: Teorema di Nyquist, aliasing, rumore di quantizzazione; Comparatori e convertitori A/D e D/A.
- Modelli di sensori e attuatori: modelli affini, saturazione, distorsione armonica, range dinamico.
- Sensori: Accelerometri e giroscopi.
- Attuatori: Solenoidi lineari e motori DC.
Teoria dello scheduling real-time
- Definizioni di base: task periodici, aperiodici e sporadici, utilizzazione, schedule validi e feasible, ottimalità.
- Modelli di interrupt: calcolo della latenza di interrupt.
- Schedule ciclico.
- Schedule a priorità statica: schedule rate-monotonic e deadline monotonic, analisi di schedulabilità.
- Schedule a priorità dinamica: schedule earliest-deadline-first e least-slack-time-first.
- Scheduling per job aperiodici e sporadici.
- Analisi blocking time.
- Sezioni critiche, anomalie di scheduling (inversione di priorità e deadlock), protocolli di priority inheritance e priority ceiling.
Architetture software e librerie
- Architetture round-robin, round-robin con interrupts, function-queue-scheduling.
- (cenni) Librerie POSIX.4, Ada Real-Time e profilo Ravenscar, Real-Time e High-Integrity Java.
- (cenni) Sistemi operativi real-time
Programmazione microcontrollori (laboratorio):
- Catena di programmazione e IDE.
- Programmazione Assembly e sviluppo di semplici algoritmi.
- Programmazione C.
- Attività progettuale di gruppo.

Bibliografia consigliata

E.A.Lee, S.A.Seshia. Introduction to Embedded Systems: A Cyber-Physical Approach. Second Edition, MIT Press, 2017. D.E.Simon. An Embedded Software Primer. Addison Wesley, 1999. J.W.S.Liu. Real-Time Systems. Prentice-Hall, 2000. C.Brandolese, W.Fornaciari. Sistemi Embedded: Sviluppo Hardware e Software per Sistemi Dedicati. Pearson, 2007. Dispense del corso sulla pagina web (http://elearning.unimib.it).

Metodi didattici

Lezioni frontali (2 cfu), esercitazioni (2 cfu) e laboratorio (4 cfu), con sviluppo di progetti in piccoli gruppi.