Module B: Programming Embedded Systems

Subject description

This course is part of the Embedded System module B and is closely related to its sibling course Designing Embedded Systems. 

Embedded systems are small microcontroller devices, which are part of a larger control system. Why do some large computer controlled systems need smaller subsystems? Is there not enough computation power? In fact, the problem is not the computation power, it's the sheer number of relatively simple tasks demanding real-time control. This means the system must concurrently run a large number of programs with a specified functionality as well as a specified execution speed. The limiting factor is logistics rather than pure computation power. The solution is a distributed computer system where smaller embedded subsystems are responsible for the timeline. 

Students are already familiar with coding in C language. In this course, they discover techniques for developing real-time programs. These are programs which must fulfill certain specifications with a certain speed. Suppose you want to make an elliptic cut into sheet wood. The program must control three stepper motors to describe an elliptic motion. However, the speed of the cutting head is crucial as well. If it's too fast, the drill bit will break, if it's is too slow the wood will overheat.

The subject is taught in programs

Electrical engineering 1st level

Objectives and competences

Understanding the specifics of programming embedded systems: demands of concurrent execution of several tasks in real time. Fundamental time slicing techniques of programming and solving of typical synchronization problems. Developing practical skills during project oriented laboratory work in combination with course 64136.

Teaching and learning methods

Lectures, discussion groups, laboratory project work (group and individual).

Expected study results

Upon successful completion of this course, the students should be able to:

  • calculate the worst case execution time of any written C function
  • calculate the maximal stack requirements for any C program code
  • select a suitable heap management scheme for a given real time problem
  • calculate the schedulability of any given priority based scheduling problem
  • Detect a potential dead lock or life lock situation
  • Employ synchronization primitives and semaphores

Basic sources and literature

  1. TUMA, Tadej. Programming Embedded Systems. Zapiski predavanj 2024 (PDF datoteka), 58 str. 
  2. PUHAN, Janez, TUMA Tadej. Uvod v mikrokrmilniške sisteme : zgradba in programiranje. 2. dopolnjena izd. Ljubljana: Založba FE, cop 2011, 206 str. 

Stay up to date

University of Ljubljana, Faculty of Electrical Engineering Tržaška cesta 25, 1000 Ljubljana

E:  dekanat@fe.uni-lj.si T:  01 4768 411