Department of Information Technology

Programming embedded systems - 1DT056


  • 2011/12/15: The next re-exam is on January 13th, 2012; again, it will have the same format as the first exam.
  • 2011/08/08: The re-exam on August 20 will have the same format as the first exam.
  • 2011/07/26: Please note that a course evaluation is waiting for being filled out on the student portal

About the course

This course in VT 2011 provides a background on programming for embedded systems and microcontrollers. The course focusses on software aspects and introduces, in particular, real-time operating systems (RTOS) and a variety of low- and high-level programming languages common for embedded systems. The course runs through the whole spring 2011 and consists of

  • Part 1 (January - March): lectures, exercises, and labs on programming embedded systems;
  • Part 2 (March - May): project on implementing embedded systems.

After taking this course, students will ...

  • understand which features and properties of OSs are relevant for real-time and embedded systems
  • be able to implement embedded applications with the help of RTOSs
  • be familiar with important paradigms of programming languages used in embedded systems, including imperative languages, data-flow approaches, synchronous languages, and state charts
  • be able to select RTOSs and programming languages that are suitable for particular embedded systems projects
  • be able to test and debug embedded software and understand the use of contracts and assertions for static and dynamic verification.

Course grading

The course consists of the following parts:

Part Credits Grading
Assignments + labs 3 U, G (pass/fail)
Project 4 U, G (pass/fail)
Theory + exam 3 U, 3, 4, 5

To pass the course, better than "U" must be achieved in each component. Information on the exam is given here.

The overall course grade of a student is derived from the performance in the project and in the exam. To this end, we will internally mark the work of each project group (considering the solution and presentation) in the "U, 3, 4, 5" scheme. The overall grade of a student is computed as the (un-weighted) average of the exam and the internal project grade, rounding upwards.


Lecture Time, place Material
1 Introduction to the course Jan 17, 10:15, Pol_1211 Course overview, C recap
2 FreeRTOS by example Jan 19, 13:15, Pol_1245 uVision project, Examples, Chapter 1 of the FreeRTOS book, generic CORTEX M3 edition
3 Ports, Pins, Switches, inter-task communication Jan 24, 15:15, Pol_1245 Examples, Chapter 2 and 3 of the FreeRTOS book, generic CORTEX M3 edition
4 Solutions for assignment 1; hardware timers Jan 26, 13:15, Pol_1245 Assignment 1, Examples
5 Interrupts; multi-tasking Jan 31, 10:15, Pol_1211 Slides, examples
6 Handling of real-valued data Feb 2, 13:15, Pol_1311 Slides, examples
7 Solutions for assignment 2 Feb 7, 10:15, Pol_1311 Solutions
8 Overview of testing concepts Feb 9, 13:15, Pol_1311 Slides
9 Solutions for assignment 3; fault tolerance Feb 14, 10:15, Pol_1311 Slides, examples
10 An intro to the synchronous dataflow language Lustre Feb 16, 15:15, Pol_1111 Slides, Lustre examples (including simulation files and Luke binaries)
11 Verification of Lustre programs Feb 21, 10:15, Pol_1311 Slides, Lustre examples (including simulation files), Lustre resources
12 (lecture cancelled) Feb 23, 13:15, Pol_1311
13 Solutions for assignment 4; memory management Feb 28, 10:15, Pol_1311 Slides
14 Wrap-up of lab; more on Real-time Java Mar 2, 13:15, Pol_1311 Real-time Java resources:,
15 (lecture cancelled) Mar 7, 10:15, Pol_1245
16 Introduction to projects; solutions for assignment 5 Mar 23, 15:15, Pol_2446 Slides
17 Project topics Mar 28, 13:15, Pol_1311 Slides
18 Solutions for assignment 6; general discussion about the projects April 6, 13:15, Pol_2247
19 Information on project + grading April 14, 10:15, Pol_1245
Guest lecture by Jakob Engblom, Technical Marketing Manager, Wind River May 5th, 10:15, Pol_1311 Full-System Simulation in Embedded Systems, Slides


Topic Deadline
1 Basic C and FreeRTOS programming Jan 26th, 13:15
2 Peripherals, scheduling, concurrency Feb 3rd
3 Interrupts, arithmetic Feb 9th
4 Testing Feb 18th
5 Fault tolerance and Lustre Mar 14st
6 A/D converters and PID controllers Mar 30th

Assignments are done by students individually (not in groups), and are graded pass/fail. To pass the course, 4 out of the 6 assignments have to be handed in and passed.

For implementation questions, you can use this uVision project as a starting point.

Solutions to this assignment are to be submitted before the lecture on the specified day of deadline. You can bring a printout of your solution to the lecture, or send it by email to Othmane Rezine. No solutions will be accepted after the lecture.

Supervised lab sessions

Time Place
Friday Jan 21st, 8:15 - 10:00 1313
Friday Jan 28th, 8:15 - 10:00 1313
Friday Feb 4th, 8:15 - 10:00 1313
Friday Feb 11th, 8:15 - 10:00 1313
Friday Feb 18th, 15:15 - 17:00 1313
Friday Feb 25th, 15:15 - 17:00 1313
Friday Mar 4th, 15:15 - 17:00 2315D
Friday Mar 11th, 15:00 - 17:00 1313

Recommended reading material


For general questions, a forum for the course has been set up at Studentportalen (you have to log in to access the forum). Please use this forum for all course-related questions.

Updated  2011-12-15 15:29:04 by Philipp Rümmer.