PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

Elenco notifiche



Integrazione di sistemi embedded

01SOKXW

A.A. 2026/27

Lingua dell'insegnamento

Italiano

Corsi di studio

Corso di Laurea Magistrale in Ingegneria Elettronica (Electronic Engineering) - Torino

Organizzazione dell'insegnamento
Didattica Ore
Lezioni 37
Esercitazioni in laboratorio 23
Tutoraggio 25
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Turvani Giovanna   Professore Associato IINF-01/A 27 0 12 0 6
Collaboratori
Espandi

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/01 6 C - Affini o integrative Attività formative affini o integrative
2026/27
L'insegnamento è tenuto in italiano. Insegnamento facoltativo per il Corso di Laurea Magistrale in Ingegneria Elettronica, collocato nel primo periodo didattico del primo anno. L'insegnamento di Integrazione di Sistemi Embedded è finalizzato a fornire agli studenti una visione metodologica e operativa degli strumenti necessari per progettare, sviluppare e integrare sistemi embedded complessi. Il corso affronta il problema dell'integrazione tra componenti software, strumenti di sviluppo, sistemi operativi real-time e piattaforme embedded, con particolare attenzione alla qualità del codice, alla modularità del progetto e all'automazione del flusso di sviluppo. Il percorso formativo inizia dalla metodologia di progetto e dalla structured programming, per poi introdurre i linguaggi di scripting e il Bash shell command language come strumenti per l'automazione, la manipolazione dei file, il controllo di flusso e la gestione dei processi. Vengono inoltre trattati i sistemi di versioning, con particolare riferimento a Git e ai workflow collaborativi, e gli aspetti fondamentali della programmazione in C per sistemi embedded, tra cui gestione della memoria, organizzazione dei progetti, compilazione, makefiles e cross-compilazione. Una parte rilevante del corso è dedicata ai sistemi operativi real-time, con particolare riferimento a FreeRTOS su piattaforme STM32. In questo contesto vengono introdotti i meccanismi di scheduling, la gestione dei task e della memoria, le code, i semafori, i mutex, gli event groups, la gestione degli interrupt e le tecniche per applicazioni a basso consumo. Il corso si completa con una parte dedicata al linguaggio C++, utilizzato come strumento per l'automatizzazione dei processi, con richiami ai fondamenti del paradigma object-oriented, alle classi, alle funzioni, alla gestione dei file, ai container STL, agli algoritmi e al polimorfismo. L'insegnamento integra lezioni, esercitazioni e laboratori, con l'obiettivo di sviluppare competenze applicative nella progettazione e nello sviluppo collaborativo di software embedded strutturato, portabile e manutenibile.
The course is taught in Italian. The course is optional for the MSc programme in Electronic Engineering and is offered in the first teaching period of the first year. The Embedded Systems Integration course is aimed at providing students with both a methodological and an operational view of the tools required to design, develop, and integrate complex embedded systems. The course addresses the integration of software components, development tools, real-time operating systems, and embedded platforms, with particular attention to code quality, project modularity, and automation of the development flow. The course starts from project methodology and structured programming, then introduces scripting languages and the Bash shell command language as tools for automation, file manipulation, flow control, and process handling. It also covers versioning systems, with particular reference to Git and collaborative workflows, together with the main aspects of C programming for embedded systems, including memory management, project organization, compilation, makefiles, and cross-compilation. A significant part of the course is devoted to real-time operating systems, with specific reference to FreeRTOS on STM32 platforms. In this context, scheduling mechanisms, task and memory management, queues, semaphores, mutexes, event groups, interrupt handling, and low-power techniques are introduced. The course is completed by a C++ section devoted to process automation, covering the foundations of object-oriented programming, classes, functions, file processing, STL containers, algorithms, and polymorphism. The course integrates lectures, exercises, and laboratory activities, with the aim of developing practical skills in the design and collaborative development of structured, portable, and maintainable embedded software.
Al termine dell'insegnamento, gli studenti saranno in grado di: -applicare una metodologia strutturata di progetto all'analisi e allo sviluppo di applicazioni software per sistemi embedded; -utilizzare il linguaggio Bash e i principali strumenti di scripting UNIX per automatizzare operazioni su file, flussi di dati e processi; -impiegare strumenti di versioning e workflow collaborativi basati su Git per la gestione di progetti software in evoluzione; -comprendere e applicare i principi della programmazione in C per sistemi embedded, con particolare riferimento a gestione della memoria, organizzazione modulare del codice, processo di compilazione, makefiles e cross-compilazione; -sviluppare semplici applicazioni embedded su piattaforme STM32, in contesti bare metal e con supporto RTOS; -descrivere e utilizzare i principali meccanismi di un sistema operativo real-time, inclusi scheduling, task, gestione della memoria, code, semafori, mutex, event groups e interrupt; -analizzare soluzioni software per applicazioni a basso consumo in ambiente embedded; -utilizzare il linguaggio C++ per sviluppare codice modulare e riusabile, con classi, file processing, STL containers, STL algorithms e meccanismi di overloading, inheritance e polymorphism; -lavorare in gruppo nello sviluppo di attività di laboratorio, documentando il processo di progetto, giustificando le scelte implementative e utilizzando correttamente gli strumenti introdotti a lezione.
- Knowledge of the architecture of an application running on embedded systems (bare-metal, RTOS or Linux based) - Knowledge of C and C++ programming techniques oriented to embedded systems - Ability to write code corrected by definition - Ability to design an embedded system application - Ability to profile firmware performances, to optimize hardware resources usage - Knowledge of automated firmware build tools - Ability to manage a complex and evolving software system, with versioning - Ability to develop software in a team, with versioning and multibranching tools - Ability to develop automated testing and verification procedure for digital architectures through scripting - Basic knowledge of main scripting languages - Detailed knowledge of shell languages (Bash) - Detailed knowledge of object oriented scripting language (Python)
È richiesta la conoscenza dell'architettura di un sistema di elaborazione dati, con particolare riferimento al funzionamento di microprocessori o microcontrollori, del sistema di memoria e delle principali periferiche di input/output. È inoltre richiesta la conoscenza del linguaggio C e delle strutture fondamentali della programmazione procedurale. È utile una familiarità di base con il microcontrollore STM32 e con il relativo ambiente di sviluppo, anche se gli strumenti specifici utilizzati nel corso vengono introdotti durante le attività didattiche.
Knowledge of the architecture of a computing system is mandatory. In details, the architecture and working principles of a microprocessor must be known, as memory system nad main I/O subsystem ones (serial and parallel ports, timers, A/D and D/A converters) Besides, the knowledge of C is needed. The knowledge of object oriented programming, as well as C++ is recommended.
Metodologia di progetto e structured programming (0,5 CFU) Analisi delle specifiche, decomposizione del problema, progettazione top-down, flowchart, organizzazione del codice. Linguaggi di scripting e Bash (1,5 CFU) Introduzione ai linguaggi di scripting, shell Bash, file system e comandi di base, pipeline e data filtering, espressioni regolari, sed, awk, grep, controllo di flusso e gestione dei processi. Versioning e sviluppo collaborativo (0,5 CFU) Sistemi di version control, Git, repository, branching, remotes, workflow e strumenti GitLab. Programmazione C per sistemi embedded (1,5 CFU) Gestione della memoria, buone pratiche di coding, organizzazione modulare dei progetti, processo di compilazione, toolchain, makefiles, cross-compilazione, ambienti STM32. Sistemi operativi real-time per applicazioni embedded (1,5 CFU) Introduzione ai RTOS e a FreeRTOS, gestione dei task, scheduling, memoria, queue, semafori, mutex, event groups, interrupt management e applicazioni low-power. C++ per l'automatizzazione dei processi (2 CFU) Sintassi del linguaggio, funzioni, strutture dati, classi, file processing, STL containers, STL algorithms, overloading, inheritance e polymorphism, con applicazioni all'automatizzazione dei processi di simulazione.
- Embedded systems programming (2,5 CFU) - Executable code structure - Compiling and cross-compiling - Bare-metal system application structure - Real time system application structure - Boot loader and kernel - Embedded systems filesystems - Firmware organization (1 CFU) - Test procedures and test units - Building process automation - Version management - Firmware deployment - Scripting languages (2,5 CFU) - Scripting languages - overview - Shell (Bash) - Utility programs (sed, awk, grep, lex, yacc) - Object oriented scripting for simulation, testing and GUI (Python)
Le attività di laboratorio sono obbligatorie e la presenza viene registrata. I laboratori sono svolti in gruppi, ma la valutazione è individuale. È richiesto l'uso del sistema di versioning Git, dal momento in cui viene introdotto a lezione. Le valutazioni di laboratorio vengono mantenute negli anni. Per lo svolgimento dei laboratori, ad eccezione della parte relativa agli RTOS, è previsto l'utilizzo del server dedicato al corso, che può essere impiegato esclusivamente per finalità didattiche strettamente connesse all'insegnamento.
Le attività di laboratorio sono obbligatorie e la presenza viene registrata. I laboratori sono svolti in gruppi, ma la valutazione è individuale. È richiesto l'uso del sistema di versioning Git, dal momento in cui viene introdotto a lezione. Le valutazioni di laboratorio vengono mantenute negli anni. Per lo svolgimento dei laboratori, ad eccezione della parte relativa agli RTOS, è previsto l'utilizzo del server dedicato al corso, che può essere impiegato esclusivamente per finalità didattiche strettamente connesse all'insegnamento.
L'insegnamento è articolato in lezioni, esercitazioni ed esercitazioni di laboratorio. Le lezioni comprendono teoria, sintassi, esempi applicativi e discussione di casi di studio. Sono inoltre previste esercitazioni in aula e attività di scripting da svolgere a casa in gruppo. Durante le ore di laboratorio sono previste anche brevi verifiche orali o discussioni sui contenuti sviluppati nei laboratori. Le attività di laboratorio sono obbligatorie. Il calendario del corso prevede otto laboratori più una sessione finale di simulazione d'esame e consulenza. I laboratori coprono attività su Bash, programmazione C e RTOS su STM32, e C++ per l'automatizzazione dei processi di simulazione. Durante le sessioni di verifica, le competenze acquisite vengono discusse con i gruppi; tuttavia, la valutazione finale della parte laboratoriale è individuale. La consegna dei laboratori deve avvenire tramite il portale della didattica entro l'inizio del laboratorio di verifica, secondo le modalità indicate nelle istruzioni di consegna. In ciascun laboratorio agli studenti può essere richiesto di mostrare i flowchart adottati per il problem solving, spiegare e commentare il codice implementato e dimostrare l'utilizzo degli strumenti di versioning introdotti nel corso. Le valutazioni dei laboratori vengono pubblicate alla fine del corso e pesano il 15% della valutazione finale.
Practice classes will focus on small firmware designs (personal calculator required). Lab sessions consist, in the first part of the course, in the development of firmware applications, according to the methodologies described in classroom, and its test on microcontroller based boards. In the second part lab classes will focus on the use of scripting languages for the design of embedded systems. Evaluation boards will be available to test the designs. Nine lab sessions will be provided by groups of 2 to 4 students. Homeworks are required to prepare the lab sessions. A report is required for the lab sessions and will be considered in the final grade.
I testi di riferimento che coprono una parte significativa degli argomenti dell'insegnamento sono: Cameron Newham, Learning the Bash Shell, O'Reilly Media. Arnold Robbins, sed & awk, O'Reilly Media. Jon Loeliger, Version Control with Git. Scott Chacon, Ben Straub, Pro Git. Testi e materiale didattico sul linguaggio C++ tratti da Paul Deitel e Harvey Deitel, C++: How to Program. Mastering the FreeRTOS Real Time Kernel" from Richard Barry Ulteriore materiale didattico, lucidi e manuali per le esercitazioni di laboratorio sono resi disponibili tramite il portale della didattica.
The learning material used for the lessons is made available through the course website. Notes provided by the professor. Reference books: F.Vahid, T. Givargis, "Embedded System Design: A Unified Hardware/Software Introduction", John Wiley and Sons M. Lutz, D. Ascher, Learning Python", O'Reilly Media, Inc
Slides; Esercizi; Esercizi risolti; Esercitazioni di laboratorio;
Lecture slides; Exercises; Exercise with solutions ; Lab exercises;
Modalita di esame: Prova scritta (in aula); Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Written test; Computer-based written test in class using POLITO platform;
... L'esame è finalizzato a verificare il raggiungimento dei risultati di apprendimento attesi, con particolare riferimento alla capacità di applicare una metodologia strutturata di progetto, utilizzare gli strumenti di scripting e versioning, sviluppare e analizzare codice in C e C++ per sistemi embedded, e comprendere i principali meccanismi dei sistemi operativi real-time e dei flussi di compilazione e integrazione del software embedded. L'85% del voto dipende da una PROVA SCRITTA: La valutazione finale consiste in una prova scritta individuale e nella valutazione individuale delle attività di laboratorio. La prova scritta ha durata di due ore e comprende tre esercizi inerenti ai linguaggi di programmazione, C++, Bash, RTOS, Git più un'eventuale domanda a risposta aperta sugli aspetti più teorici del corso. Durante la prova scritta non è consentita la consultazione di libri, appunti o altro materiale didattico. Il 15% del voto finale dipende dal lavorso svolto in LABORATORIO durante il semestre: Le attività di laboratorio sono svolte in gruppo, ma la valutazione è individuale e viene formulata in base: (a) alla consegna degli esercizi svolti tramite portale della didattica (b) la relativa discussione che avviene durante il laboratori stessi Nello specifico, la valutazione della parte laboratoriale tiene conto della qualità del lavoro svolto, della discussione durante i laboratori di verifica in termini di: chiarezza nell'esposizione, scelte progettuali e implementative, dell'uso corretto degli strumenti introdotti nel corso, e della presenza. All'inizio del corso viene fornito un calendario con tutte le date dei laboratori, le date per la consegna degli elaboratori e delle relative discussioni orali. I voti dei laboratori vengono pubblicati alla fine del corso. La prova scritta pesa l'85% della valutazione finale, mentre la parte laboratoriale pesa il 15%. Il voto finale è espresso in trentesimi.
Gli studenti e le studentesse con disabilita o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unita Special Needs, al fine di permettere al/la docente la declinazione piu idonea in riferimento alla specifica tipologia di esame.
Exam: Written test; Computer-based written test in class using POLITO platform;
Final evaluation is based on a written test covering scripting languages (2h30m) and an oral examination splitted into two parts related respectively to the design of firmware for embedded systems and scripting languages for verification automation. Each one is a 15-20 minutes test, and concerns topics explained in lessons, labs, and homeworks, including written reports. Final result is a weighted average of the two parts. The applicant must be passing grade in both parts. Condition for oral examination submission is the delivery of written laboratory reports, at least seven days before the official exam day. Report evaluation is based on right application of the design methodology described in the course, and on clarity of project description.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.
Esporta Word