- Embedded Systems
- Summary
Course Syllabus
Obiettivi
Comprensione delle principali aspetti dei sistemi embedded in tempo reale. Capacità di progettare semplici applicazioni embedded in tempo reale su micro-controllori in assembly e C.
Contenuti sintetici
Sistemi embedded: caratteristiche e requisiti. La struttura dei sistemi embedded: micro-controllori, DSP, 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 operativi real-time. Attività di laboratorio sulla programmazione di micro-controllori in assembly e C.
Programma esteso
- Sistemi embedded: caratteristiche e requisiti
- Caratteristiche generali e domini applicativi; valore del 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, micro-controllori, 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 micro-controllori.
- 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à.
- 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.
- Laboratorio di programmazione di micro-controllori.
- Catena programmativa ed IDE.
- Programmazione assembly e sviluppo di semplici programmi.
- Programmazione C.
- Attività progettuale di gruppo.
Prerequisiti
- Conoscenze di architettura degli elaboratori e di cosa sia la programmazione assembly.
- Conoscenze di base di programmazione in C.
- Concetti base di sistemi operativi e programmazione concorrente.
- Principi di progettazione software con uso di UML.
Modalità didattica
- lezioni interattive;
- attività di laboratorio, con sviluppo di progetti in piccoli gruppi.
Materiale didattico
- importanti
- J. W. S. Liu. Real-Time Systems. Prentice-Hall, 2000.
- G. C. Buttazzo. Hard Real-Time Computing Systems, Predictable Scheduling Algorithms and Applications, 3rd Edition. Springer, 2011
- meno importanti
- 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.
- C. Brandolese, W. Fornaciari. Sistemi Embedded: Sviluppo Hardware e Software per Sistemi Dedicati. Pearson, 2007.
Periodo di erogazione dell'insegnamento
Secondo semestre
Modalità di verifica del profitto e valutazione
- Prova scritta con esercizi e/o domande aperte sugli argomenti non coperti dalla attività di laboratorio;
- relazione sulla attività di laboratorio;
- colloquio orale sulla relazione sulla attività di laboratorio.
Orario di ricevimento
Inviare email per un appuntamento.
Aims
Understanding of the major issues of real-time embedded systems. Ability to develop simple real-time embedded applications on micro-controllers in assembly and C.
Contents
Embedded systems: features and requirements. The structure of embedded systems: micro-controllers, DSP, FPGA, memories and their organization, communication systems. Peripherals, sensors and actuators. Real-time scheduling theory. Software architectures and libraries for real-time, fail-safe and safety-critical programming. Real-time operating systems. Laboratory activity with micro-controller programming in assembly and C.
Detailed program
- Embedded systems: features and requirements
- General features of embedded systems; application domains; market value and diffusion.
- Basic requirements: timing, reliability, efficiency.
- Design choices vs requirements.
- The structure of embedded systems
- Small recap of digital and analog electronics.
- Scale levels: IC, PCB, network.
- Processing units: CPU, microcontrollers, DSP, GPU, ASIC. Programmable logic: FPGA.
- Memories: SRAM and DRAM, non-volatile memories; interactions between processor and memory: Von Neumann and Harvard architectures, memory hierarchies.
- Communication systems: GPIO, Pulse Width Modulation, RS-232, USB, I2C, SPI, CAN bus, JTAG.
- Systems with a high degree of integration: SoC e NoC.
- Examples of micro-controllers.
- Peripherals, sensors and actuators
- Timers.
- DMA.
- Fundamentals of sampling theory: Nyquist theorem, aliasing, quantization noise; Comparators and A/D and D/A converters.
- Models of sensors and actuators: Affine models, saturation, harmonic distortion, dynamic range.
- Sensors: Accelerometers and gyroscopes.
- Actuators: Linear solenoids and DC motors.
- Real-time scheduling theory
- Basic definitions: periodic, aperiodic e sporadic tasks, utilization, valid and feasible schedules, optimality.
- Cyclic schedule.
- Static priority scheduling: rate-monotonic and deadline-monotonic schedule, schedulability analysis.
- Dynamic priority scheduling: earliest-deadline-first and least-slack-time-first schedule.
- Scheduling for aperiodic and sporadic jobs.
- Blocking time analysis.
- Critical sections, scheduling anomalies (priority inversion and deadlock), priority inheritance and priority ceiling protocols.
- Software architectures and libraries
- Main architectures: Round-robin, round-robin with interrupts, function-queue-scheduling.
- (hints) POSIX.4, Ada Real-Time and Ravenscar, Real-Time and High-Integrity Java.
- (hints) real-time operating systems.
- Laboratory activity on micro-controllers programming.
- Software development toolchain and IDE.
- Assembly programming and development of some basic programs.
- C programming.
- Team project development.
Prerequisites
- Basic knowledge of computer architecture and what is assembly programming.
- Basic skills in C programming.
- Basic knowledge of operating systems and concurrent programming.
- Software design principles with UML.
Teaching form
- interactive classes;
- laboratory practices, with development of projects in small groups.
Textbook and teaching resource
- relevant
- J. W. S. Liu. Real-Time Systems. Prentice-Hall, 2000.
- G. C. Buttazzo. Hard Real-Time Computing Systems, Predictable Scheduling Algorithms and Applications, 3rd Edition. Springer, 2011
- less relevant
- 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.
- C. Brandolese, W. Fornaciari. Sistemi Embedded: Sviluppo Hardware e Software per Sistemi Dedicati. Pearson, 2007.
Semester
Second semester
Assessment method
- Written examination with exercises and/or open questions on topics not covered by the laboratory activities;
- written report on the laboratory activities;
- oral examination about the laboratory report.
Office hours
Send email for an appointment.