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
Examples
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.
|