This web page functions both as a course description sheet and as a medium for distribution of new information regarding the course. The information will be updated dynamically, so please visit this web page regularly (or follow our Twitter profile). For general information regarding the course please consult the syllabus page at the Student Portal.
An embedded system is a computer system
designed to perform one or a few dedicated functions. It is embedded in
the sense that it is part of a complete device, often including
electrical hardware and mechanical parts. For reasons of safety and
usability, some embedded systems have strict constraints on
non-functional behavior such as computational delay and periodicity.
Such systems are referred to as real-time systems. Examples of real-time
systems are control systems for cars, aircraft and space vehicles as
well as computer games and multimedia applications. This course is
intended to give basic knowledge about methods for the design and
analysis of real-time systems.
After the course the students shall be able to:
Due to the extremely high costs associated
with late discovery of problems in embedded systems, it is important to
follow a good design methodology during the development of the software
and hardware. One means for that is to use a system architecture that
offers good component abstractions and facilitates simple interfacing of
components. The course gives an overview of some state-of-the-art system
architectures being used in the design of embedded systems, for example,
EAST-ADL, AUTOSAR and AADL.
The system architecture philosophy dictates that the software of an
embedded system is organized into multiple concurrently-executing tasks,
where each task (or group of tasks) implements a specific functionality
in the system. This approach allows for an intuitive way of decomposing
a complex system into smaller software units that are simple to
comprehend, implement and maintain. The software environment used in the
course is based on the C programming language, enhanced with a software
library that provides support for programming of concurrent tasks with
timing (delay and periodicity) constraints. To that end, a main
objective of the course is to demonstrate how the enhanced C programming
language is used for implementing communication/synchronization between
tasks, resource management and mutual exclusion. Since other programming
languages uses monitors or semaphores to implement these functions, the
course also contains a presentation of such techniques. In addition, the
course demonstrates how to use low-level programming in C to implement
interrupt-driven interaction with hardware devices. To demonstrate the
general principles in real-time programming, the course also gives
examples of how these techniques are implemented in other programming
languages, such as Ada and Java.
In order to execute a program containing concurrent tasks there is a
run-time system (real-time kernel) that distributes the available
capacity of the microprocessor(s) among the tasks. The course shows how
a simple run-time system is organized. The run-time system determines
the order of execution for the tasks by means of a scheduling algorithm.
To that end, the course presents techniques based on cyclic time-table
based scheduling as well as scheduling techniques using static or
dynamic task priorities. In addition, protocols for the management of
shared hardware and software resources are presented. Since many
contemporary real-time applications are distributed over multiple
computer nodes, the course also presents topologies and medium access
mechanisms for some commonly-used communication networks.
The real-time kernel determines the order of execution for the processes
by means of a scheduling algorithm. To that end, the course presents
techniques based on cyclic time-table based scheduling as well as
scheduling techniques using static or dynamic process priorities. In
addition, protocols for the management of shared hardware and software
resources are presented.
In real-time systems, where tasks have strict timing constraints, it is
necessary to make a pre-run-time analysis of the system schedulability.
The course presents three different analysis methods for systems that
schedule tasks using static or dynamic priorities: utilization-based
analysis, response-time analysis, and processor-demand analysis. In
conjunction with this, the course also gives an account on how to derive
the maximum resource requirement (worst-case execution time) of a task.
| Tue | Jan 17 | : | First lecture, 10.00 - 11.45 in HA3 | |
| Tue | Mar 6 | : | Written exam, afternoon, Johanneberg | |
| Fri | Mar 16 | : | Deadline, Laboratory report | |
| Fri | Apr 6 | : | Final approval deadline, Laboratory assignment |
The course is organized as a series of lectures where fundamental theories and concepts are presented. Lectures are given at two occasions per week (except study week 1, 2 and 3 where there are extra lectures on Wednesday):
| Tue | 10.00 - 11.45 | HA3 | |||||
| Wed | 10.00 - 11.45 | HC1 | (week 1, 2 and 3) | ||||
| Thu | 13.15 - 15.00 | HC3 |
As a complement to the lectures, there will be exercise sessions on the specific topics covered during the main lectures. At each session, a course assistant gives a mini lecture on selected parts of the course contents, and also discusses selected problems from the exercise compendium. The remaining time is for discussing solutions to the selected problems or the laboratory assignment. Exercise sessions are offered on one occasion per week:
| Thu | 15.15 - 17.00 | HC3 |
Preliminary schedule: TimeEdit
Detailed information on the lectures will appear here.
Alan Burns and Andy Wellings, Real-Time Systems and Programming Languages, 4th edition, Addison-Wesley, 2009, ISBN 978-0-321-41745-9
For the purpose of course evaluation, we ask volunteers to act as student representatives. Their role includes giving the teachers some feedback on the course. Please send them an email if you have comments or suggestions for improvements regarding the course.
The student representatives are:
| Daniel Modrack (MPEES) | |
| Shovan Kumar Paul (MPNET) | |
| Sigursteinn Haukur Reynisson (MPEES) | |
| Simon Strömberg (MPIES) | |
| Christoffer Nilsson (MPEES) | |
| Bartolomeus Jankowski (GU) |
Minutes from mid-quarter course evaluation meeting can be found here.