The course will be composed of the following parts: ¿ Introduction to embedded systems: Challenges of embedded systems, embedded system design process, Modelling of real-time embedded systems ¿ Linux operating system: strengths and weaknesses of Linux in embedded systems, Linux embedded market overview, Linux filesystem overview, configuring, (cross)compiling and booting a Linux kernel, toolchain generation tools, Linux tools for embedded systems (bootloaders, optimized libraries, Busybox) ¿ Setting a simple Buildroot-based embedded Linux: toolchain configuration, package selection, system configuration, kernel and bootloader configuration, building root filesystem image, customization. ¿ Real-time solutions for Linux: real-time patchs, Xenomai architecture. ¿ Designing autonomous embedded systems: hardware and software components of an autonomous system, harnessing ambient energy for embedded systems ¿ Classical approaches to minimize energy consumption in embedded systems: dynamic power management, DVFS (Dynamic Voltage Frequency Scaling) ¿ Real-time scheduling and power management in autonomous systems that rely on renewable energy harvesting