Department of Information Technology

Programming embedded systems - 1DT056


  • 2012/06/06: The second half of the course evaluation (covering the project and exam) is now online on the student portal; we would be grateful if you could provide answers by June 15th!
  • 2012/05/17: Results for the 5th and 6th home assignments are now on the student portal. Corrected copies can be picked up from a small white box at the window next to the mailboxes wall, 4th floor, house 1.
  • 2012/05/14: Groups can book time slots for project presentations next week on this Doodle page. In case your group won't be able to finish the project by next week, please get in contact with the course teachers.
  • 2012/05/07: The main exam for the course takes place on May 25th, 8-10. You have to register for the exam two weeks in advance! More information, and a list of the course topics relevant for the exam are given here.
  • 2012/05/03: Solutions for all exercises are now online.
  • 2012/03/26: Feedback on the elevator lab is now available in the files "comments.txt" uploaded to the file area on the student portal. For most solutions there is very little to change, mostly problems related to the safety requirements. Generally, in case anything is unclear about the lab or the provided comments, please drop us an email!
  • 2012/03/26: There is now a page with information about the project
  • 2012/03/26: Please note that the lecture slot today 13:15 - 15:00 won't be used, no lecture today. There is a lab session tomorrow 15:15 - 17:00 in room 1313.

About the course

This course in VT 2012 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 2012 and consists of

  • Part 1 (January - March): lectures, exercises, and lab 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 and synchronous languages
  • 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 + lab 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.

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 Lecturer Material
1 Introduction to the course Jan 16, 13:15, Pol_1245 PR Course overview, C recap
2 FreeRTOS by example Jan 18, 10:15, Pol_1212 PR Project template, Examples, CMSIS, STM32F10x reference manual, STM32F10x programming manual
3 I/O, communication, synchronisation Jan 23, 13:15, Pol_1245 PR Examples
4 Communication, timers, PWM Jan 25, 13:15, Pol_1146 PR Examples
5 CANCELLED Jan 31, 10:15, Pol_1145 CANCELLED
6 Timers, interrupts, multi-tasking Feb 1, 13:15, Pol_1245 PR Slides, PWM example, interrupt examples
7 Handling of real-valued data Feb 6, 8:15, Pol_1145 PR Slides on multi-tasking, Arithmetic, examples
8 Arithmetic, testing Feb 8, 13:15, Pol_1245 PR Slides on intervals, slides on testing
9 Fault tolerance Feb 13, 15:15, Pol_1212 PR Slides on testing, slides on fault tolerance, watchdog example
10 An intro to Lustre Feb 15, 13:15, Pol_1245 PR Exercise in memory fault injection (not to be handed in, solutions are included), Slides on Lustre, Lustre examples (including HTML tracers)
11 Lustre verification Feb 20, 13:15, Pol_1245 PR Slides on Lustre verification, Lustre examples (including HTML tracers)
12 An intro to Real-Time Java Feb 22, 13:15, Pol_1245 PR Slides on real-time Java, lecture examples
13 Memory management; more on Real-Time Java Feb 27, 13:15, Pol_1145 PR Slides on memory management, RTSJ example with scoped memory
14 RTSJ example, wrap-up elevator lab Feb 29, 13:15, Pol_1245 PR Merge-sort example in RTSJ
15 Principles of RT OS Mar 5, 15:15, Pol_1245 KL Principles of RT OS (Part 1), Principles of RT OS (Part 2)
16 RT-Linux: RTAI Mar 7, 13:15, Pol_1245 KL RT-Linux: RTAI (Part 1), RT-Linux: RTAI (Part 2)
(no lecture) Mar 12, 13:15, Pol_1245
(no lecture) Mar 15, 13:15, Pol_1245
17 Start of the project; solutions assignment 6 Mar 21, 13:15 - 15:00, Pol_1311 PR Slides about project, more information


Assignments are done by students individually.
Several students handing in the same assignment solution will be considered as cheating, and reported accordingly.
Each assignment solution will be corrected by us, and given a grade between 0 points and 20 points.
To pass the course, it is necessary to achieve at least 12 points in at least 4 of the 6 assignments.

Topic Deadline
1 Basic C and FreeRTOS programming Jan 27th, 8:15
2 Peripherals, concurrency Feb 2nd, 10:15
3 Interrupts, scheduling, arithmetic Feb 17th, 8:15
4 Testing Feb 23rd, 10:15
5 Lustre and Real-time Java Mar 2nd, 10:15
6 ADC and PID controllers Mar 19th, 13:15

Solutions to the assignments are to be submitted via email to Othmane Rezine.


The exercise sessions are used to discuss solutions for the home assignments. Apart from this, no new material is presented during the exercises.

Time, place
Discussion of assignment 1 Jan 27, 8:15 - 10:00, Pol_1245
Discussion of assignment 2 Feb 2, 10:15 - 12:00, Pol_1245
Discussion of assignment 3 Feb 17, 8:15 - 10:00, Pol_1245
Discussion of assignment 4 Feb 23, 10:15 - 12:00, Pol_1245
Discussion of assignment 5 Mar 2, 10:15 - 12:00, Pol_1245
Discussion of assignment 6 Mar 21, 13:15 - 15:00, Pol_1311

Recommended reading material


Please note that 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 course-related questions whenever possible, instead of mailing any of the teachers directly.

Updated  2012-08-24 16:43:29 by Philipp Rümmer.