99195 - CYBER-PHYSICAL SYSTEMS PROGRAMMING M

Anno Accademico 2024/2025

  • 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 Automation Engineering (cod. 8891)

    Valido anche per Laurea Magistrale in Ingegneria elettronica (cod. 0934)

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