Ing - Civ (Mag.)(ord. 270) - MI (495) GEOINFORMATICS ENGINEERING - INGEGNERIA GEOINFORMATICA
*
A
ZZZZ
095903 - ADVANCED OPERATING SYSTEMS
095907 - EMBEDDED SYSTEMS
Ing Ind - Inf (Mag.)(ord. 270) - CR (263) MUSIC AND ACOUSTIC ENGINEERING
*
A
ZZZZ
095903 - ADVANCED OPERATING SYSTEMS
Ing Ind - Inf (Mag.)(ord. 270) - MI (476) ELECTRONICS ENGINEERING - INGEGNERIA ELETTRONICA
*
A
ZZZZ
095907 - EMBEDDED SYSTEMS
Ing Ind - Inf (Mag.)(ord. 270) - MI (481) COMPUTER SCIENCE AND ENGINEERING - INGEGNERIA INFORMATICA
*
A
ZZZZ
095903 - ADVANCED OPERATING SYSTEMS
095907 - EMBEDDED SYSTEMS
Obiettivi dell'insegnamento
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 goal of the course is to provide the necessary knowledge on design methodologies and tools needed to develop system and application software for the embedded platforms.
During the course, some hands-on sessions will be suggested (participation is voluntary) to show how to put the topics covered during the course into practice.
Note that the course Advanced Operating Systems (AOS) can be attended 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 and energy aware aspects, while the other course is tailored to present the architectures, design methodologies and toolchains to manage the development of embedded applications.
Risultati di apprendimento attesi
At the end of the course, students will be capable of designing embedded applications, mainly from the software viewpoint.
This includes the use of real-time operating systems and the familiarization with the typical approaches for structuring the application code and writing device drivers as well as using commercial development boards for prototyping.
During the course, students will also learn how to design embedded applications, such as the comparative analysis of architectural aspects, the use of industrial design flows and toolsets and the main strategies for power/energy optimization.
A significant expertise in the development of embedded systems and application programming will be acquired by students selecting a practical project work among those proposed during the course.
Knowledge and understanding (DdD 1)
The student will have a clear view of the steps needed to realize an embedded application.
The student will be capable of understanding the requirements and methodologies for developing concurrent applications, following an approach based on design patterns.
The student will be capable of understanding the structure of an operating system for embedded applications.
The student will become aware of the main standards and tools for the development and debugging of embedded software.
Apply knowledge and understanding (DdD 2)
The student will be capable of writing the requirements of an embedded application, in terms of timing, memory footprint, performance and energy.
The student will be able to read technical documentation and application notes regarding microcontrollers and sensors used for embedded applications.
Students will be capable of using tools for the development, versioning and debug of software.
Students will be capable of writing concurrent software for embedded applications that can run on multi-core embedded platforms.
Students will be capable of writing device driver software to interface with hardware peripherals, in environments that have and that lack an operating system.
The student, depending on the choice of the project work, will be capable of designing embedded software using market-available technologies, possibly constrained by energy and performance requirements.
Making Judgements (DdD 3)
Students will be asked to work on a project related to the design of an embedded system. They will select the most suitable platform, the operating system (or bare metal programming) and the tools, based on the application requirements and by adopting best industrial practices. This includes also the choice of a suitable design pattern and the evaluation of the non-functional properties of embedded software, with respect to power efficiency and time determinism.
Lifelong learning skills (DdD 5)
The student will become capable of coordinating the use of different skills and technologies in order to identify the best solution under a large variety of aspects such as flexibility, standardization, cost, size, power dissipation and performance as well as the methodological aspects related to the flow of the design.
The student will be capable of navigating autonomously in the state-of-the-art and market-ready technologies suitable for the design of the software for embedded applications.
Argomenti trattati
Main topics presented during the course will include the followings: review of documentation and architectures of the SoC for embedded applications, use of development tool-chains for writing and verifying the embedded software, development of device drivers, interfacing with external sensors and peripherals and management of the cores and concurrency as exposed by the operating systems for embedded applications.
One of the goals is to make the students familiar with STM/ARM development boards provided by the Lecturer for the realization of small projects (on a voluntary basis). Given their widespread availability, Linux will be the reference for most of the examples presented during the course.
Introduction and background
General characteristics and roadmaps of the embedded systems.
Peculiarities of the applications and system software for embedded systems.
Reading technical documentation of microcontrollers and peripherals with the aim of developing device drivers.
Example of main showstoppers: energy of software, system-level power management, memory footprint, reactivity.
Management of contention and concurrency
Scheduling of CPU for single 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.
Design patterns and common pitfalls in concurrent programming, using the C++11 threading API as a reference.
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.
System boot: 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.
Device drivers
Memory management, I/O memory and ports, the unix filesystem as an abstraction to access peripherals: char devices and file operations.
The interaction of time management and process scheduling with the development of device drivers.
Interrupt management.
Examples based on Miosix RTOS.
Some hands-on (optional) experiments using an STM32 board under the supervision of the assistants are foreseen to familiarize the student with the development of applications, by exploiting real development platforms.
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.
Prerequisiti
Basic courses (Bachelor level) in the fields of computer architectures, operating systems and high-level programming.
Modalità di valutazione
The examination procedure follows the official rules of the Politecnico di Milano and more information can be found on the Lecturer’s personal website. In general, it is foreseen a mandatory written test with open theoretical questions and possibly some exercises. In addition to this step, during the course it will be presented a set of possible topics for projects/desk-based studies, whose evaluation will be part of the final score. The goal is to check the skill of the student to realize software for embedded applications exploiting the concepts presented during the course and to cooperate with other students to the development of representative case studies.
Bibliografia
Slides and papers available on the BEEP platformM. Mitchell, J. Oldham, and A. Samue, Advanced Linux Programming, Editore: New Riders Publishing, Anno edizione: 2001 Note:
freely available on the web
J. Corbet, G. Kroah-Hartman, A. Rubini, Linux Device Drivers, 3rd Edition, Editore: O'Reilly, Anno edizione: 2005 Note:
freely available on the web
S. Venkateswaran, Essential Linux Device Drivers, Editore: Prentice Hall Open Source Software Development Series, Anno edizione: 2008 Note:
available on the web
P. Marwedel, Embedded System Design, Editore: Springer, Anno edizione: 2011, ISBN: 978-94-007-0257-8
Carlo Brandolese, William Fornaciari, Sistemi Embedded, Editore: Pearson, Anno edizione: 2007
Software utilizzato
Nessun software richiesto
Forme didattiche
Tipo Forma Didattica
Ore di attività svolte in aula
(hh:mm)
Ore di studio autonome
(hh:mm)
Lezione
30:00
45:00
Esercitazione
20:00
30:00
Laboratorio Informatico
0:00
0:00
Laboratorio Sperimentale
0:00
0:00
Laboratorio Di Progetto
0:00
0:00
Totale
50:00
75:00
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