Il corso e' tenuto in italiano.
Insegnamento facoltativo per la laurea magistrale in Ingegneria Elettronica, collocato al primo periodo didattico del I anno.
Questo corso pone l'accento sulle metodologie e sugli strumenti di sviluppo utilizzati nella progettazione del firmware dei sistemi embedded, nonche' nel test degli stessi.
In particolare sara’ descritta nel dettaglio la struttura di una applicazione, sia nel caso di integrazione diretta sull’hardware (bare-metal) sia nel caso essa debba essere inserita in un sistema real-time, piuttosto che in un dispositivo Linux embedded. Queste conoscenze saranno integrate dalla descrizione degli strumenti utilizzati per costruire l’ambiente software, partendo dai cross-compilatori, fino agli strumenti automatici di generazione del codice binario, della gestione delle versioni, e della installazione e test dello stesso sul sistema embedded, eventualmente interfacciato ad un personal computer. Infine, saranno descritte metodologie utilizzabili per l’analisi delle prestazioni del software realizzato, e per l’analisi dei requisiti di memoria, banda di I/O e potenza di calcolo.
The course is taught in Italian.
The course is optional for the MSc-level programme in Electronic Engineering and will be offered in the first period of the first year.
This course presents methodologies and development tools used in embedded systems firmware design and test.
In more details, applications structure will be described, both for bare-metal and OS supported systems (Real Time or Linux). These knowledges will be completed with a descriptions of the tools used to build the software environment, starting from cross-compilers, up to automatic tools for binary code generation, versioning management, deployment and test of the embedded system. Last, code profiling methodologies will be described, to analyze memory, I/O and CPU requirements.
- Conoscenza di base dei principali tipi di linguaggi di scripting
- Conoscenza approfondita del linguaggio Bash
- Conoscenza della struttura di una applicazione per sistemi embedded
- Conoscenza di tecniche di programmazione C specificamente orientate ai sistemi embedded
- Capacita’ di analizzare le prestazioni del firmware di un sistema embedded, al fine di ottimizzare le sezioni critiche dal punto di vista dell’utilizzo delle risorse hardware del sistema
- Capacita’ di definire procedure di test modulare per il firmware di un sistema embedded
- Capacita’ di gestire un sistema software complesso ed in evoluzione, mediante tecniche di versioning
- Capacita’ di sviluppare software in team, con il supporto di software di versioning e multibranching
- Conoscenza approfondita del linguaggio Python
- 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)
E’ necessaria la conoscenza dell’architettura di un sistema di elaborazione dati. In particolare e’ necessario conoscere l’architettura ed i meccanismi di funzionamento di un microprocessore, del sistema di memoria, e dei principali tipi di periferiche (porte seriali, parallele, timer, convertitori A/D e D/A)
Inoltre e’ necessaria la conoscenza del linguaggio di programmazione ‘C’. E’ utile anche la conoscenza della programmazione ad oggetti, e, possibilmente, del linguaggio ‘C++’.
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.
- Strumenti per la programmazione di sistemi embedded (1,5 CFU)
- Linguaggi di scripting - panoramica
- Shell (Bash)
- Programmi di utilita’ (sed, grep… )
- Programmazione di sistemi embedded (2,5 CFU)
- Struttura del codice eseguibile
- Struttura di un’applicazione in sistemi real-time
- Processo di compilazione e cross-compilazione
- Automazione del processo di compilazione
- Procedure di test e test units
- Gestione delle versioni
- Strumenti di automatizzazione per i processi simulativi: (2 CFU)
- Struttura dell’interprete
- Tipi di dato
- Utilizzo del linguaggio l’automatizzazione dei processi di simulazione
- Graphical user interface (GUI)
- 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 esercitazioni in aula riguardano piccoli progetti, relativi a quanto trattato nelle lezioni immediatamente precedenti.
Le esercitazioni sperimentali di laboratorio che comprendono tre esercitazioni sul linguaggio Bash per la gestione del sistema embedded, quattro esercitazioni sul linguaggio C in ambiente bare metal, tre esercitazioni sul linguaggio Python per l’automatizzazione dei processi di simulazione di circuiti digitali
Il numero di esercitazioni previste e' 10 e sono condotte in laboratorio da gruppi di 3 studenti.
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 che coprono buona parte degli argomenti del corso sono:
Learning the bash Shell, Cameron Newham, O'Reilly Media
Mastering Regular Expressions, Jeffrey Friedl, O'Reilly Media
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
Sono disponibili copie dei lucidi utilizzati nelle lezioni, e i manuali per le esercitazioni di laboratorio, corredati delle caratteristiche dei componenti utilizzati. Tutto il materiale didattico e' scaricabile attraverso 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
Modalità di esame: Prova scritta (in aula); Prova orale obbligatoria;
Exam: Written test; Compulsory oral exam;
...
L'esame consiste in una prova scritta (2 ore) con 2/3 esercizi (progettazione del firmware di sistemi embedded e linguaggi di scripting per l’automatizzazione e la verifica), domande di teoria ed una prova orale.
L’orale ha una durata di 15-20 minuti e riguarda tutti gli argomenti trattati a lezione, nei laboratori e nei lavori assegnati, comprese le relazioni svolte.
L’orale verterà sulla parte teorica, nonché sulla discussione ed integrazione dello scritto.
L'ammissione alla prova orale e' condizionata dal superamento della prova scritta.
La valutazione delle relazioni si basera' sulla corretta applicazione della metodologia di progetto presentata in aula, e sulla chiarezza di esposizione di quanto elaborato dai candidati.
Gli studenti e le studentesse con disabilità 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'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Written test; Compulsory oral exam;
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.