Progettazione di sistemi operativi

A.A. 2021/2022
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
Scopo di questo insegnamento è quello di consentire allo studente di poter comprendere e saper gestire i meccanismi sottostanti il funzionamento e la realizzazione di un sistema operativo: livelli di astrazione, gestione degli eventi sincroni/asincroni, gestione dei clock, gestione delle periferiche, meccanismi di comunicazione, primitive di concorrenza, gestione e comunicazione tra processi, sicurezza delle componenti hardware.
L'esposizione "teorica" dei diversi argomenti sarà accompagnata da lezioni di laboratorio durante le quali gli studenti avranno modo di sperimentare i concetti acquisiti su un micro controllore commerciale (STM32 Nucleo) messo a disposizione degli studenti, per la sola durata del corso, dalla società ST Microelectronics.
Le lezioni di laboratorio rappresenteranno inoltre un'occasione per gli studenti per:
approfondire la programmazione in C, imparare ad usare un ambiente di sviluppo integrato per un sistema embedded commerciale, acquisire padronanza con il sistema operativo FreeRTOS.
Risultati apprendimento attesi
1. Comprensione dei principali meccanismi sottostanti il funzionamento di un sistema operativo.
2. Comprensione dei meccanismi di funzionamento di un sistema embedded.
3. Saper gestire il sistema operativo FreeRTOS
4. Saper progettare e implementare un driver per la gestione dell'I/O
5. Saper leggere e modificare una routine di risposta interrupt
6. Saper progettare ed implementare uno scheduler real-time
7. Saper progettare ed implementare un'applicazione sensor based con l'uso del micro controllore STM32
8. Comprensione dei side channel attack
9. Saper effettuare alcune forme elementari di side channel attack
Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre
Programma
Durante il corso saranno affrontati i seguenti argomenti:
- architetture e componenti di sistemi embedded
- il micro controllore STM32
- interfacce hardware-software
- architettura di memoria
- metodologia di progettazione software
- primitive di comunicazione
- sistemi operativi embedded
- schedulazione in tempo reale
- risorse condivise
- basso consumo e progettazione a basso consumo energetico,
- sintesi dell'architettura hardware
- Sicurezza delle componenti hardware: side channel attacks

Gli argomenti di laboratorio trattati saranno:
A. Il micro controllore STM32
B. La programmazione Bare Metal
C. La gestione dell'interfaccia UART (polling e Interrupt)
C1. La gestione dell'interfaccia SPI (opzionale)
D. La gestione degli Interrupt e il DMA
E. L'uso di FreeRTOS
F. La gestione dello scheduling dei task
G. Scrivere applicazioni con FreeRTOS
Prerequisiti
La conoscenza del linguaggio di programmazione C può agevolare la comprensione di alcuni argomenti presentati a lezione.
Metodi didattici
La didattica sarà svolta in presenza, le lezioni alterneranno la parte di teoria con l'attività di laboratorio.
La parte di laboratorio sarà svolta con l'ausilio di un micro controllore STM32 basato su processore ARM Cortex-M, e relativo ambiente di sviluppo. Il micro controllore sarà messo a disposizione degli studenti, che dovranno impegnarsi a restituirlo integro al termine del corso. Poichè l'attività di laboratorio si svolgerà in aula gli studenti dovranno essere provvisti di un PC su cui dovrà essere installato l'ambiente di sviluppo per il micro controllore.
Sono inoltre previsti seminari ed interventi da parte di esperti provenienti dal mondo del lavoro e della ricerca.
Materiale di riferimento
Ed­ward A. Lee and Sanjit A. Se­shia: In­tro­duc­tion to Em­bed­ded Sys­tems, A Cyber-​Physical Sys­tems Ap­proach, Second Edi­tion, MIT Press, ISBN 978-​0-262-53381-2, 2017.

C. Noviello: Mastering STM32, (https://leanpub.com/mastering-stm32)
Modalità di verifica dell’apprendimento e criteri di valutazione
La verifica dell'apprendimento avverrà attraverso lo svolgimento di un progetto che potrà essere svolto in gruppi di al più 2 persone.
IL progetto consisterà nello studio di fattibilità nonché realizzazione pratica di un sistema "pilotato" da una scheda STM32 o altro micro controllore a scelta dello studente. Il progetto potrà essere svolto sia in bare programming che con l'ausilio di FreeRTOS.
Il progetto sarà valutato seguendo i seguenti criteri:
10 punti per l'originalità del progetto
15 punti per la complessità in termini di dimensione del codice e difficoltà implementative che si sono dovute superare
5 punti completezza della documentazione presentata a supporto del progetto
3 punti efficacia dell'esposizione del progetto
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente/i
Ricevimento:
su appuntamento e-mail: danilo.bruschi@unimi.it
Stanza 8024 via Celoria 18