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