Operating Systems for Embedded Computers

Course Description

Embedded computers are very different from other computer systems. Many of them manage the processes in which the timed actions are of the utmost importance. Therefore, the device drivers and the rest of the system must be adapted to meet such constraints. Such systems are usually not under the constant supervision, and are expected of them to work independently for longer periods, which require high reliability and embedded recovery mechanisms. The principal goal of the course is to use simple operating system examples for demonstrating the methods for building the system, its components and device drivers for embedded computers, and in that process develops an understanding of used mechanisms as well as to learn the building process.

Learning Outcomes

  1. explain features required from embedded computer systems
  2. identify embedded system implementation problems
  3. describe operating principles for operating system kernel components
  4. modify operating system kernel components
  5. use tool chain to create software for embedded computers
  6. employ advanced features from C programming language
  7. select suitable algorithms when creating software for embedded computers

Forms of Teaching

Lectures

Lectures are organized through two cycles: first last seven weeks and second six weeks. After first cycle is scheduled mid term exam and after second cycle comes final exam. Each week there are two hour lecture. Within some lectures students will be tested with short tests.

Independent assignments

Homework includes solving of the given problems (published in the first week): design and implementation accompanied by a short documentation. Result should be then uploaded and later presented for grading.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Homeworks 50 % 30 % 50 % 0 %
Quizzes 0 % 10 % 0 % 0 %
Mid Term Exam: Written 0 % 30 % 0 %
Final Exam: Written 50 % 15 %
Final Exam: Oral 15 %
Exam: Written 50 % 50 %
Exam: Oral 50 %

Week by Week Schedule

  1. Embedded system design techniques, Programming for embedded systems, OS design for embedded system
  2. Development environment for building operating systems for embedded computers. Building a system for bare metal. Tools, procedures, settings. Booting the system.
  3. Compiling source code from multitude of files. Layering in the source code. Makefile. Linker script, preparing the code and data to be loaded and used from specific memory locations. Sections in output file.
  4. Input-output devices. Interrupts.
  5. Dynamic memory management.
  6. Time subsystem. Counters, alarms, clocks.
  7. Preparing device drivers using unified interface. Keyboard, serial interface.
  8. Midterm exam
  9. Command shell. Advanced usage of Makefile.
  10. Multithreading: thread context, context switching, scheduling.
  11. Synchronizations and communication mechanisms: semaphores, monitors, message queues. Signals.
  12. Protection with a mechanism called process. Calling kernel functions through interrupts. Separate source code for kernel and programs. Running programs in user mode.
  13. Logical and physical addresses. Preparing kernel code for physical address space, programs for logical. Process management.
  14. Overview of free and commercial operating systems for embedded computers.
  15. Final exam

Study Programmes

University graduate
[FER3-HR] Audio Technologies and Electroacoustics - profile
Elective Courses (2. semester)
[FER3-HR] Communication and Space Technologies - profile
Elective Courses (2. semester)
[FER3-HR] Computational Modelling in Engineering - profile
Elective Courses (2. semester)
[FER3-HR] Computer Engineering - profile
Elective Course of the profile (2. semester)
Elective Courses (2. semester)
[FER3-HR] Computer Science - profile
Elective Courses (2. semester)
Elective Courses of the Profile (2. semester)
[FER3-HR] Control Systems and Robotics - profile
Elective Courses (2. semester)
Elective Courses of the Profile (2. semester)
[FER3-HR] Data Science - profile
Elective Courses (2. semester)
[FER3-HR] Electrical Power Engineering - profile
Elective Courses (2. semester)
[FER3-HR] Electric Machines, Drives and Automation - profile
Elective Courses (2. semester)
[FER3-HR] Electronic and Computer Engineering - profile
Elective Courses (2. semester)
[FER3-HR] Electronics - profile
Elective Courses (2. semester)
[FER3-HR] Information and Communication Engineering - profile
Elective Courses (2. semester)
[FER3-HR] Network Science - profile
Elective Courses (2. semester)
[FER3-HR] Software Engineering and Information Systems - profile
Elective Courses (2. semester)
[FER2-HR] Computer Engineering - profile
Specialization Course (2. semester)
[FER2-HR] Electronic and Computer Engineering - profile
Specialization Course (2. semester)

Literature

Leonardo Jelenković (2021.), Operacijski sustavi za ugrađena računala, online
Leo Budin, Marin Golub, Domagoj Jakobović, Leonardo Jelenković (2010.), Operacijski sustavi,
Abraham Silberschatz, Greg Gagne, Peter B. Galvin (2018.), Operating System Concepts, Wiley
André M. van Tilborg, Gary M. Koob (2012.), Foundations of Real-Time Computing: Scheduling and Resource Management, Springer Science & Business Media
Alexander D. Stoyenko (2012.), Constructing Predictable Real Time Systems, Springer Science & Business Media
Jean Labrosse (2002.), MicroC/OS-II, CRC Press

For students

General

ID 240698
  Summer semester
5 ECTS
L1 English Level
L1 e-Learning
45 Lectures
0 Seminar
0 Exercises
10 Laboratory exercises
0 Project laboratory

Grading System

90 Excellent
75 Very Good
60 Good
50 Sufficient