- Docente: Andrea Acquaviva
- Crediti formativi: 6
- SSD: ING-INF/05
- Lingua di insegnamento: Inglese
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Bologna
-
Corso:
Laurea Magistrale in
Ingegneria elettronica (cod. 0934)
Valido anche per Laurea Magistrale in Automation Engineering (cod. 8891)
-
dal 16/09/2024 al 20/12/2024
Conoscenze e abilità da conseguire
Il corso fornisce allo studente una conoscenza di base delle architetture software e gli ambienti di sviluppo, programmazione e progettazione di sistemi cyber-fisici, con particolare enfasi alla coesistenza di task di controllo, processing di data stream, e comunicazione IoT con requisiti di real-time e cybersecurity. Nel corso lo studente impara a utilizzare compilatori, librerie, runtime e middleware per piattaforme e architetture eterogenee, dotate di processori multicore, co-processori e acceleratori HW e SW per il processing di stream di dati da sensori e verso attuatori.
Contenuti
- Introduction to software development and cross-compilation for cyber-physical systems (CPS): compiler, bootloader, system calls, RTOS, middleware, real-time applications (e.g. controllers, real-time sensor data processing)
- Embedded firmware development (baremetal programming) for embedded systems: C runtime, call stack, development of drivers
- Real-time operating systems (RTOS) for CyberPhysical Systems (e.g. Nuttx, Zephyr, SEL4, PikeOS and automotive RTOSes); RTOS configuration and drivers for CPS (Examples on FreeRTOS and NuttX)
- Middleware for CPS (microROS, xrce-DDS, DDS)
- Case study: Programming the Crazyflie drone
- Advanced topics: i) Elements of cybersecurity applied to CPS (Trusted Execution Environments, Trusted Platform Modules for firmware signature/verification and secure communication, control flow integrity); ii) Elements of Artificial Intelligence for autonomous CPS (neural networks and deep reinforcement learning)
- Laboratory topics: i) Baremetal programming on QEMU emulator; ii) Learning the development environment of FreeRTOS/Crazyflie; iii) Development of a sensor drivers in FreeRTOS/Crazyflie, debugging howto; iv) Development of applications on Crazyflie (e.g. flight controller, autonomous flight)
Testi/Bibliografia
Materiale didattico:
- slide fornite dal docente
- articoli scientifici forniti dal docente
- puntatori a manuali e siti web specifici
Metodi didattici
Il corso si compone di lezioni teoriche e laboratori guidati. Nelle lezioni teoriche verranno esposti i concetti principali che verranno poi affrontati in maniera pratica su schede prototipo e droni in laboratorio che saranno usati come esempi di CPS.
Le lezioni teoriche contengono una parte principale di fondamenti di programmazione di sistemi embedded e CPS e una parte più avanzata relativa a temi di sicurezza e AI applicati ai CPS.
I laboratori saranno guidati dal docente e gli studenti verranno forniti di hardware su cui fare esperienza di programmazione. Saranno organizzati in almeno 3 gruppi di 3 esercitazioni ciascuno:
- Gruppo I: Programmazione baremetal su emulatore
- Gruppo II: Programmazione di un piccolo drone (Crazyflie)
- Gruppo III: Sviluppo di applicazioni di controllo di volo e di missione
NOTA:
In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai Moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/] in modalità e-learning.
Modalità di verifica e valutazione dell'apprendimento
L'esame sarà composto da uno scritto della durata di 1 ora con domande a risposta chiusa e dalla discussione di un progetto sviluppato dagli studenti partendo dagli strumenti imparati durante i laboratori.
Gli studenti svolgeranno il progetto singolarmente o in gruppo a seconda della numerosità e dei progetti disponibili.
Il docente proporrà alcuni progetti ma gli studenti potranno proporre personalizzazioni degli stessi. Gli studenti potranno presentare modifiche alle proposte di progetto che verranno valutate dal docente per essere approvate.
Il progetto dovrà essere presentato tramite alcune slide e una breve dimostrazione.
Strumenti a supporto della didattica
Parte teorica:
- lecture notes
- siti web e repository di codice
- articoli scientifici
Parte di laboratorio:
- board di sviluppo basate su microcontrollori ARM e RISC-V
- droni bitcraze crazyflie
I supporti hardware potranno essere soggetti a modifiche/aggiornamenti a seconda del numero degli studenti e dei componenti disponibili
Orario di ricevimento
Consulta il sito web di Andrea Acquaviva