Obiettivi formativi
L’obiettivo del corso è la formazione dello studente al fine di affrontare le problematiche relative allo sviluppo di sistemi embedded ad uso industriale. L’attenzione sarà focalizzata principalmente sulla parte firmware. Ciò richiede:
• Conoscenza dei requisiti richiesti dall’ambito industriale
• Elementi di progettazione e verifica del codice
• Conoscenza avanzata delle architetture usate nell’implementazione
• Strumenti di supporto alla verifica e sintesi automatica del codice
Prerequisiti
Power Circuits and Systems, Elettronica dei Sistemi Embedded, Architettura dei Sistemi Digitali, Laboratorio Matlab per l’elettronica.
Contenuti dell'insegnamento
Metodologie di analisi, progetto e sviluppo di sistemi embedded in ambiente industriale.
Programma esteso
• Programmazione embedded: contesto, problemi, soluzioni.
o Introduzione su motivazione, applicazioni, uso sistemi embedded in ambiente industriale.
• Elementi di ingegneria del software.
o Il sistema di building: preprocessore, compilatore, linker. Ottimizzazione e makefiles.
o V model e partizionamento di sistema su livelli di astrazione.
o Unit testing, analisi statica del codice e code coverage.
o Documentazione inline.
o Sistemi di controllo versione.
• Standards for the embedded world: coding standards, standard di sicurezza e automotive, protocolli di comunicazione.
o Coding standards: Embedded C (Barr), MISRA C, CERT C, linee guida (anche altri linguaggi: ADA, Python PEP8, Java, .). Supporto da parte degli ambienti di generazione automatica del codice sorgente (MATLAB).
o Standard AUTOSAR, SIL, ASIL.
o Revisione del modello ISO/OSI.
o Protocolli di comunicazione: ModBus, USB, CANopen, J1939, EtherCAT.
• Real-Time Tasks: RTOS, drivers, middleware, interrupt management.
o Esempi di RTOS, task, schedulers, memorie condivise.
o Driver di periferica, driver di sistema, l’esempio di ARM CMSIS.
o Middleware commerciali e interfacce con i driver.
o Gestori di interrupt e annidamento.
• Real-Time computation: analisi numerica, esecuzione ricorrente, benchmarking.
o Breve richiamo a quanto di analisi numerica già affrontato in altri corsi (metodo di Newton, soluzione numerica di equazioni non lineari e differenziali).
o Esecuzione ricorrente: discretizzazione, stato di una funzione, race conditions, reentrancy. Modifiche ai tradizionali algoritmi per essere eseguiti in diversi slot temporali e/o in modo iterativo.
o Benchmarking: misura delle prestazioni di un’architettura e del tempo e delle risorse necessarie per l’esecuzione. Valutazione delle soluzioni sulla base dell’hardware disponibile.
• MATLAB a supporto della programmazione embedded.
o Fitting polinomiale, interpolazione ai minimi quadrati.
o Generazione di Look Up Tables e toolbox per ottimizzazione.
o Unit testing automatico e impostazione test-bench.
o Sviluppo e validazione model-based e attraverso paradigmi MIL/SIL/PIL/HIL.
• Elementi integrativi.
o Semafori e locks.
o Gestione memoria: MPU, MMU, allineamento.
o Watchdog: timer indipendenti, slot temporali, watchdog hardware.
o Gestione errori: codici di errore, eccezioni, trappole, checksum e CRC.
o Bootloader: motivazioni e implementazione, riscrittura del vettore degli interrupt. Esempio basato su OpenBLT e confronto con bootloader nativi.
Bibliografia
Dispense, standard, documentazione dei tool software utilizzati
Metodi didattici
Relazione sull'attività di laboratorio (se previsto il secondo modulo nel piano di studi) ed esame orale.
Al termine delle attività di laboratorio, ogni gruppo di lavoro dovrà consegnare una relazione scritta sulle attività svolte. Una volta consegnata la relazione e ricevuta la relativa valutazione gli studenti potranno accedere, anche singolarmente, all'esame orale.
Il voto dell'esame orale incide per 2/3 sulla valutazione finale, la valutazione dell'attività di laboratorio per 1/3.
Gli studenti che hanno solo il primo modulo nel piano di studi dovranno sostenere la sola prova orale.
Modalità verifica apprendimento
Relazione sull'attività di laboratorio (se previsto il secondo modulo nel piano di studi) ed esame orale.
Al termine delle attività di laboratorio, ogni gruppo di lavoro dovrà consegnare una relazione scritta sulle attività svolte. Una volta consegnata la relazione e ricevuta la relativa valutazione gli studenti potranno accedere, anche singolarmente, all'esame orale.
Il voto dell'esame orale incide per 2/3 sulla valutazione finale, la valutazione dell'attività di laboratorio per 1/3.
Gli studenti che hanno solo il primo modulo nel piano di studi dovranno sostenere la sola prova orale.