Risorse bibliografiche
Risorsa bibliografica obbligatoria
Risorsa bibliografica facoltativa
Scheda Riassuntiva
Anno Accademico 2015/2016
Scuola Scuola di Ingegneria Industriale e dell'Informazione
Insegnamento 095907 - EMBEDDED SYSTEMS
Docente Fornaciari William
Cfu 5.00 Tipo insegnamento Modulo Di Corso Strutturato

Corso di Studi Codice Piano di Studio preventivamente approvato Da (compreso) A (escluso) Insegnamento

Programma dettagliato e risultati di apprendimento attesi


The goal of the course is to provide the necessary knowledge on design methodologies and tools necessary to develop system and application software for embedded applications.

Despite the presence of embedded systems is almost “invisible” with respect to general purpose computing systems like PCs, they account for around two-thirds of the microprocessors market. Example of such systems are bio-medical devices, automotive electronics, industrial control systems, set-top-boxes and, in general, most of the consumer electronics.

The main topics presented during the course cover: review of documentation and architectures of the SoC for embedded applications, the use of development tool-chains for writing and verifying the embedded software, the development of device drivers, interfacing with external sensors and peripherals and the management of the cores and concurrency as exposed by the operating systems for embedded applications.

During the course some hands-on sessions will be proposed (participation is on a voluntary base) to show how to put in practice the topics covered during the course. The goal is to make the students familiar with STM/ARM development boards provided by the lectures for the realization of small projects. Given their widespread availability, Linux and Android will be the reference for most of the examples.

Note that the course Advanced Operating Systems (AOS) can be followed without the requirement to include also the course Embedded Systems 1. In fact the focus of AOS is on the development of the system and application software, including real-time aspects, while the other course is tailored to present the architectures, design methodologies and toolchains to manage the development of embedded applications.

During the course some meeting with representatives from the industry will be scheduled to propose stages and master thesis.


Detailed program

Introduction and background

General characteristics and roadmaps of the embedded systems

Peculiarities of the applications and system software for embedded systems

Mastering MCU data sheets: programmer's model (ex. ARM, STM32)

Example of main showstoppers: energy of software, system-level power management, memory footprint, reactivity

Management of competition and concurrency

Scheduling of CPU for mono and multi-many core architectures

Frameworks for the run-time management of resources

Access to shared resources: management of deadlock and starvation, primitives for IPC in systems with processes and threads.

Software development for dedicated applications

Main abstractions: assembler, source, libraries, system software, firmware, middleware

Real-time operating systems: general characteristics, limits of traditional schedulers, configuration, user control

CPU startup: Exception vector and Interrupts, C runtime initialization, role of boot loader and kernel initialization (ex. with ARM and STM32)

Interfacing external devices (e.g. UART, Bluetooth), management of interrupts and GPIOs

Software development and management of code (e.g. GIT, GCC, Shell)

Tools for analysis/profiling of embedded code (e.g. STM Studio, Keil)

Examples based on Linux and/or Android

Device drivers

Introduction, sources organization and tools, Loadable modules

Memory management, I/O memory and ports, Char devices and File operations

Concurrency, Advanced Char Drivers and Time management

Processes and scheduling, Sleeping and Interrupt management

Interfacing external sensors

Type and characteristics of commercial sensors

Use of standard protocols (SPI, I2C) with a MCU and interface to the analog world

Examples of interfacing photodiodes using ADC, 3-axes accelerometer via SPI

Management of time and timers


Example of real implementations under Linux and possibly other operating systems (e.g. FreeRTOS, BeRTOS, ...)

In depth analysis of MIOSIX, a lightweight open source operating systems

Some hands (optional) under the supervision of the assistants are foreseen to familiarize the student with the development of application by exploiting real development platforms.

Note Sulla Modalità di valutazione

The exams will follows the official rules of the Politecnico di Milano and more information can be found on the web site of the lecturer. During the course it will be presented a set of possible topics for projects, whose evaluation will be part of the final score.


Mix Forme Didattiche
Tipo Forma Didattica Ore didattiche
laboratorio informatico
laboratorio sperimentale
laboratorio di progetto

Informazioni in lingua inglese a supporto dell'internazionalizzazione
Insegnamento erogato in lingua Inglese
Disponibilità di materiale didattico/slides in lingua inglese
Disponibilità di libri di testo/bibliografia in lingua inglese
Possibilità di sostenere l'esame in lingua inglese
Disponibilità di supporto didattico in lingua inglese
schedaincarico v. 1.6.1 / 1.6.1
Area Servizi ICT