The purpose of this course is to allow the student to understand and be able to manage the mechanisms underlying the operation and implementation of an operating system: levels of abstraction, synchronous / asynchronous event management, clock management, peripheral management, communication, concurrency primitives, management and communication between processes, security of hardware components. The "theoretical" exposure of the various topics will be accompanied by laboratory lessons during which students will have the opportunity to experience the concepts acquired on a commercial micro controller (STM32 Nucleo) made available to students, for the duration of the course only, by the ST Microelectronics company. The laboratory lessons will also represent an opportunity for students to: deepen C programming, learn how to use an integrated development environment for a commercial embedded system, master the FreeRTOS operating system.
Expected learning outcomes
1. Understanding of the main mechanisms underlying an operating system. 2. Understanding of the operating mechanisms of an embedded system. 3. Managing the FreeRTOS operating system 4. Designing and implementing a driver for I / O management 5. Understanding and modifying an interrupt handler 6. Design and implementing a real-time scheduler 7. Designing and implementing a sensor based application with the use of the STM32 8. Understanding side channel attacks 9. Perform elementary side channel attacks
During the course the following topics will be addressed: - architectures and components of embedded systems - the micro controller STM32 - hardware-software interfaces - memory architecture - software design methodology - communication primitives - embedded operating systems - real-time scheduling - shared resources - low consumption and low energy consumption design, - synthesis of the hardware architecture - Side channel attacks.
The laboratory topics covered will be: A. The STM32 micro controller B. Bare Metal programming C. The management of the UART interface (polling and interrupt) C1. The management of the SPI interface (optional) D. Interrupt management and DMA E. The use of FreeRTOS F. The management of task scheduling G. Writing applications with FreeRTOS
Prerequisites for admission
Knowledge of the C language can speed-up the comprehension of some of the arguments which will be treated in the course.
The teaching will be carried out in the presence, the lessons will alternate the theory part with the laboratory activity. The laboratory part will be carried out with the aid of an STM32 micro controller based on an ARM Cortex-M processor, and related development environment. The micro controller will be made available to students, who must undertake to return it intact at the end of the course. As the laboratory activity will take place in the classroom, students must be equipped with a PC on which the development environment for the micro controller must be installed. There will also be seminars and interventions by experts from the world of work and research.
Edward A. Lee and Sanjit A. Seshia: Introduction to Embedded Systems, A Cyber-Physical Systems Approach, Second Edition, MIT Press, ISBN 978-0-262-53381-2, 2017.
The final exam will consist of the development of a project that can be carried out in groups of at most 2 people. The project will consist of a feasibility study as well as the practical realization of a system "driven" by an STM32 board or other micro controller chosen by the student. The project can be carried out both in bare programming or with the support of FreeRTOS. The project will be evaluated following the following criteria: 10 points for the originality of the project 15 points for the complexity in terms of code size and implementation difficulties that had to be overcome 5 points completeness of the documentation presented to support the project 3 points effectiveness of the project exposure