Programming Industrial Embedded Systems

Course Description

This course gives practical knowledge about principles of development of complex industrial real-time embedded systems. Complex embedded systems: hardware and software architecture. State-of-the-art technology overview. Real-time operating systems (RTOS): multitasking, task scheduling, synchronization mechanisms, memory management. Software development environment for embedded systems. Complex embedded software development without RTOS in systems with minimum hardware requirements: file system and networking support example. FreeRTOS: architecture, task scheduling, interrupts, resource and memory management. Embedded Linux: hardware requirements, OS architecture, kernel, device drivers. Builing kernel and target hardware porting. Device drivers and user application development. uCLinux: particularities, hardware requirements, target hardware porting. eCos: architecture, hardware requirements, porting, device drivers and user application development. Practical examples.

General Competencies

Knowledge on particular aspects of hardware and software architecture of complex industrial real time embedded systems. Knowledge on structure of real-time operating systems, procedures of porting OS to target hardware, device driver programming and development of user applications. Fundamentals of porting and using some of the well known operating systems for embedded systems (FreeRTOS, Embedded Linux, uCLinux and eCos).

Learning Outcomes

  1. recognize specific aspects of hardware and software architecture of complex industrial real time embedded systems.
  2. use software development tools for complex embedded systems.
  3. modify chosen OS in order to adapt it to the target hardware (FreeRTOS, Embedded Linux, uCLinux and eCos).
  4. develop device drivers for real-time operating systems.
  5. develop user applications for real-time operating systems.
  6. estimate and choose optimal hardware resources for chosen real-time operating system.

Forms of Teaching


Lectures are focused on theoretical and practical aspects of key course topics (two hours per week).


Continuous evaluation encompasses two written exams (midterm and final exam). Students who do not satisfy at continuous evaluation must undertake both the written and oral exam. Students are questioned at the laboratory exercises and they also obtain the points for a practical project.

Laboratory Work

Students are obliged to take laboratory exercises (15 hours). During the laboratory exercises, students learn about principles of complex embedded software development on practical examples by developing firmware for microcontroller development kits.


Consultations for students are held once per week.


Students develop practical project solutions (in groups of up to three students), following the ideas they propose themselves. They use the insights and knowledge acquired at the lectures and laboratory exercises. They demonstrate the knowledge about principles and guidelines for development of the complex embedded software through the implementation of practical project solutions.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 50 % 10 % 50 % 10 %
Seminar/Project 0 % 10 % 0 % 10 %
Mid Term Exam: Written 50 % 40 % 0 %
Final Exam: Written 50 % 40 %
Exam: Written 50 % 40 %
Exam: Oral 40 %

Week by Week Schedule

  1. Introduction to embedded systems. Examples of embedded systems. Embedded systems architecture and engineering.
  2. Development of complex embedded systems. Embedded hardware architecture. Embedded software architecture. Embedded software development: hosts, targets, toolchains. Real-time operating systems (RTOS).
  3. Review of operating system basics: multitasking, task scheduling, synchronization mechanisms, intertask communication, memory management. RTOS examples.
  4. ARM Cortex hardware architecture. Software development with GNU toolchain.
  5. Complex embedded software development (without RTOS): file system, networking. Embedded web server example.
  6. FreeRTOS operating system. Task management, queue management, interrupt management, resource management, memory management.
  7. FreeRTOS case study: embedded web server. High-level services integration with FreeRTOS: file system, TCP/IP networking, web server. Practical example.
  8. Midterm exam
  9. Embedded Linux overview. Target hardware and distributions. Kernel, bootloader, device drivers, file system, networking, command-line interface (CLI).
  10. Configuring software development environment. Building the toolchain. Kernel configuration. Building the kernel.
  11. Booting with U-Boot. Creating root file system. Target emulation. Application development and debugging.
  12. Device drivers development. Complex application examples.
  13. uCLinux overview. Target hardware. Limitations and differences between uCLinux and standard Linux distributions. Porting uCLinux. Complex application examples.
  14. eCos architecture. Hardware abstraction level (HAL). Kernel. Building eCos system. Booting with RedBoot. Example applications.
  15. Final exam

Study Programmes

University graduate
Control Engineering and Automation (profile)
Specialization Course (3. semester)
Electronic and Computer Engineering (profile)
Specialization Course (3. semester)


A. Silberschatz, P. B. Galvin, G. Gagne (2005.), Operating System Concepts, 7th Edition edition, John Wiley & Sons
R. Barry (2009.), Using the FreeRTOS Real Time Kernel - Standard Edition,
D. Abbott (2006.), Linux for Embedded and Real-time Applications, Newnes
G. Sally (2010.), Pro Linux Embedded Systems, APRESS ACADEMIC
A. J. Massa (2002.), Embedded Software Development with eCos, Prentice Hall

Laboratory exercises

For students


ID 86508
  Winter semester
L1 English Level
L1 e-Learning
30 Lectures
15 Laboratory exercises

Grading System

90 Excellent
75 Very Good
60 Good
50 Acceptable