Embedded Systems Programming Laboratory

The goal of this laboratory is to teach the students programming methods which are targeted towards programming embedded systems with hard real-time constraints or deadlines. The C language does not provide support for expressing real-time constraints at the language level. Instead, it requires the programmer and the system developer to configure the operating system and its scheduler appropriately (e.g., by assigning suitable priorities to tasks) in order to ensure that all tasks meet their deadlines.

After attending this lab, the students will know FreeRTOS, a popular real-time operating system (RTOS) which is widely used in industry. This RTOS will be used to program an application which will be announced during the course. The hardware platform for this lab is based on an STM32F429i Dicovery kit. A major challenge of the project will be to synchronize the software between two of those boards via UART in real-time.


The course is devided into three phases:

  1. Lecture: This phase gives you an overview of real-time systems, the internal structure of an operating system and how to use it. The lecture usually takes up the first session (attendance mandatory).
  2. Introductory exercises: You will learn how to access the hardware and how to use the FreeRTOS API. It is mandatory to deliver the introductory exercises to start with the project.
  3. Project: As mentioned above, the students have to program a more complex application based on the knowledge they have gathered during the introductory phase. The project should be completed in groups of two.

Required Knowledge

At least basic knowledge of the C programming language is required for the course. Further, you should have a basic understanding of how microcontrollers work.

Introductory Event

The introduction will take place in Room 3999. Please see tumonline for the time and date! Attendance is mandatory as the final place assignment will take place at that event and the maximum number of seats is limited to 20. Please also attend this event, if you are on the waiting list!

In case the schedule has not yet been updated on this page for the current semester, please it look up in tumonline and contact the supervisor. 

Administrative Information

  • This is a 6-credit BA practical course
  • Laboratory time (Preliminary): Wednesdays 13.15 hrs to 16.30 hrs


Course Material

Reading material, lecture slides and exercises will be available on moodle.


Alex Hoffman