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.