rt
EBS · RTOS
Lerntool · Klausur SS 2026
HSBI · IFM‑2 · SS 2026 · Prof. Otto

Echtzeit &
Betriebssysteme

Alles aus Vorlesung und Praktikum — der RTOS‑Simulator rtos‑edu, animiert erklärt: Build‑Pipeline, Simulator‑Architektur, Tracing — plus vollständige Lösungen zu allen Aufgaben.

6 Kapitel 4 Aufgaben gelöst Animiert Glossar
~/os26mi/rtos‑edu/build
$ make -j$(nproc)
[ 42%] Building CXX object … lvgl
[ 88%] Building CXX object … core/hal
[100%] Built target tasks
$ src/demos/tasks/tasks
01

Überblick — was ist rtos‑edu?

Ein Simulator für ein Echtzeitbetriebssystem, der auf dem PC läuft. Der Kern ist FreeRTOS (Scheduler + Tasks), die grafische Oberfläche zeichnet LVGL in ein Wayland‑Fenster, Threads werden über pigweed (pw::thread) gestartet, gebaut wird mit CMake. Die Demos zeigen Tasks, die per Slider eine LED steuern — und lassen sich mit Perfetto aufzeichnen.

Architektur — von oben nach unten
Demos — deine Programme
tasks · tasks_trace · temperature ✱
HAL — Hardware‑Abstraktion
Display · Panel · Led · Bar · Slider · Chart ✱
FreeRTOS
Scheduler · Tasks · Timers
pigweed
pw::thread (Threads)
LVGL — GUI
Widgets · Work Queue (Zeichnen im UI‑Thread)
Wayland — Fenster/Display‑Backend
CMakeMakeBinary
Für die Klausur wichtig
  • Die Architektur verstehen: FreeRTOS · LVGL · pigweed · Wayland
  • Die 10 Build‑Schritte und wozu jedes Tool dient
  • Tracing: aufnehmen → dekodieren → in Perfetto lesen
  • Tasks ergänzen & ein Chart‑Widget bauen (A3/A4)
✱ = von dir zu bauen (Aufgabe 4)
02

Build‑Pipeline — die 10 Schritte

Von der heruntergeladenen .tar.gz bis zum laufenden Simulator — genau der Weg aus Aufgabe 1. Klick einen Schritt an oder spiel alle ab; das Terminal tippt jeden Befehl live.

bash — {{ buildCwd }} Schritt {{ buildNum }}
user@rtos:{{ buildCwd }}$ {{ buildCmdShown }}
{{ line }}
{{ buildTool }} {{ buildTitle }}

{{ buildWhy }}

03

Trace & Profiling mit Perfetto

Das zeitliche Verhalten der Tasks aufzeichnen und analysieren — Aufgabe 2. Drei Schritte: aufnehmendekodieren → in Perfetto ansehen. Unten kannst du die Timeline abspielen oder mit dem Regler durchscrubben.

1Aufnehmen

Trace‑Demo starten, im Task Monitor ► Record klicken, kurz warten, ■ Stop.

build/src/demos/tasks_trace/tasks_trace
→ 29682 Events · /tmp/trace.bin
2Dekodieren

Binärdatei mit dem Python‑Skript in lesbares JSON umwandeln.

python3 scripts/decode_trace.py \
  tasks_trace /tmp/trace.bin \
  /tmp/trace.json
3Analysieren

Open trace file/tmp/trace.json laden und Zeitstrahl lesen.

https://ui.perfetto.dev
trace.json — ui.perfetto.dev
{{ traceTimeLabel }}
{{ tr.name }}
{{ sl.label }}
Aktive Events an dieser Position
— nichts aktiv (Lücke im Trace) —
{{ ev.track }}·{{ ev.label }}
Was du im Trace erkennst

Die Spuren LVGL und swdraw sind die Render‑Threads (ständiges switch), IDLE läuft im Leerlauf. In Task_1 siehst du genau die Schleife: LED_ToggledRead_Slider_ValueLED_Is_OnGoing_To_SleepThread_Sleeping. Die lange Schlafphase (≈ 985 ms bei Slider = 800 ms, wegen for_at_least) dominiert — ein RTOS‑Task schläft die meiste Zeit.

Die 5 Trace‑Event‑Typen (pw_trace)
PW_TRACE_SCOPE
Misst automatisch die Dauer eines C++‑Blocks (oder PW_TRACE_FUNCTION für die ganze Funktion). Bsp: Read_Slider_Value.
PW_TRACE_START / END
Definiert manuell den Start und das Ende eines Intervalls. Bsp: LED_Is_On, Thread_Sleeping.
PW_TRACE_INSTANT
Ein punktueller Zeitpunkt ohne Dauer. Bsp: LED_Toggled, Going_To_Sleep.
PW_TRACE_INSTANT_DATA
Hängt einem Event Daten an — als Counter/Graph dargestellt. Bsp: Slider_Position = 800.
Async (trace_id)
START/END mit trace_id gruppiert Events über Schlafphasen und Threads hinweg. Bsp: Task_1_Life_Cycle.
04

Aufgaben‑Lösungen

Vollständige, lauffähige Lösungen zu allen vier Aufgaben des Übungszettels — mit Erklärung und kopierbarem Code. Wähle eine Aufgabe:

{{ solTitle }}

Ziel: {{ solGoal }}

{{ solIntro }}

Was war schon da · was ist die Aufgabe

{{ solContext }}

+ von dir ergänzt NEUE DATEI ganz neu angelegt ERGÄNZT bestehende Datei Blocktitel klicken zum Ein-/Ausklappen
{{ f.lang }} {{ f.name }} {{ f.badgeTxt }}
i {{ b.expl }}
{{ ln.no }} {{ ln.mark }} {{ ln.a }}{{ ln.b }}
Hinweise & Prüfung
  • {{ n }}
05

Glossar

Bash‑Befehle und Fachbegriffe — englisch mit deutscher Übersetzung und kurzer Erklärung. Tippen zum Filtern.

Bash‑Befehle
{{ c.name }}
{{ c.de }}
{{ c.ex }}
Fachbegriffe
{{ t.en }} {{ t.tag }}
{{ t.de }}
{{ t.def }}
Keine Treffer für „{{ glossQueryVal }}“.
06

Spickzettel & Selbsttest

Die wichtigsten Merksätze auf einen Blick — und ein kurzer Selbsttest, um dich vor der Klausur abzufragen.

Merksätze
{{ m.k }}
{{ m.v }}
Selbsttest
{{ quizScoreLabel }}
{{ qq.n }} {{ qq.q }}
Erklärung: {{ qq.expl }}