Training: real-time, embedded and concurrent programming

This site contains the material for the ST training in January 2014. Goals are to understand the issues of real-time and how application requirements translate to solutions consisting of tasks that must meet deadlines. In addition, through simulation and measurements, understand that computer actions take time, and that this is non-trivial to understand.


The topics addressed are:


First part (Jan 15-Jan 20)

  1. Days 1-2: Introduction. Real-time tasks. Programming based on a simple task execution model. Implementation and extension of a task oriented kernel. Performance measurements.
  2. Day 3-4: timing and scheduling. Further performance measurements. Understanding how to realize predictability.

Second part (three more days):

3.     A summary of part 1, lessons learned.

4.     Leftover of ‘Day 4’ above.

5.     Timer queue management (improving over the downcounting, and generalizing)

6.     Resource sharing, resource access protocols.


In the ‘First part’ we start from the concept of repetitive real-time tasks and show how a simple kernel can be built around the timer interrupt. We also visit ‘traditional’ RTOS concepts. In the ‘Second part’ (not in January) we examine a real-time kernel that is used in existing products, we see how it works and can be used.

People involved

Specific goals

  1. Study and experience a modern embedded microprocessor.
  2. Understand various implementations and correspondent programming models for real-time task-based systems.
  3. Understand the timing issues involved.
  4. Obtain experience with programming such system.
  5. Obtain experience in performance evaluation.
  6. Understand effects of programming on timing, code size, energy use and memory use.
  7. Obtain experience with tools for such systems.


This course reflects research work we are currently involved in and has some rough edges. The predominant way of learning we see is by doing: designing, programming, measuring. There are many - probably too many -- exercises in the slides.


We have lectures, questions and discussion in the morning (2-3h, somewhat more the first day). The remainder of the time is for practicing. There will always be someone available for questions and feedback.

Students work in pairs on the exercises. We have exercises of varying level and complexity to account for differences in background. Besides the topics mentioned, the training involves working with Linux in a virtual machine, using Linux compile tools and using a hardware simulator.

Write a report in the form of a logbook while you work. It will be judged on two independent metrics: quality and quantity. Indicate in that report what you plan and what the result is. Add explanations, diagrams, photographs, videos and measurements where needed. Hand in a (partial) report at the end of each day on a website or dropbox (i.e., I want to receive a link); grow the report while the course proceeds.



We provide a TI MSP430 microprocessor, as part of the Sensixa BSN.v3 platform (a wireless sensor) or as part of the Crosbow TELOSB platform. We provide a programming environment in the form of a Linux virtual machine with a special C compiler and loader tools. You can either load a binary onto a physical node and use an oscilloscope to perform measurements or use the provided simulator.


The material is found on Source codes for the programs discussed in the course are in principle located in the virtual machine as explained on the above site. They can also be downloaded from below (to ensure a fresh copy). This and further material is listed below.

Rules for the report