Eingebettete Betriebssysteme (2021/22)

Prof. Dr. Andreas Polze
Projektbetreuung: Arne Boockmeyer, Robert Schmid, Lukas Pirl, Lukas Wenzel, Daniel Richter
Termine: mittwochs, 11:00-12:30 Uhr, HS2; donnerstags, 13:30-15:00 Uhr, HS3

Im Wintersemester 2021/2022 findet eine Vorlesung zum Thema "Eingebettete Betriebssysteme" statt. Der Umfang der Lehrveranstaltung beträgt 4 SWS. In die Bewertung der Vorlesung (6 benotete Leistungspunkte) geht die Note einer mündlichen Prüfung zu 100% ein. Eine erfolgreiche Teilnahme am Praktikum ist Prüfungsvoraussetzung.

Die Verbreitung eingebetteter Systeme stieg in den letzten Jahren rasant. Bei der Softwareentwicklung für eingebettete Systeme treten Aspekte in den Vordergrund, die bei Desktopsystemen nur eine untergeordnete Rolle spielen:

  • vorhersagbares zeitliches Verhalten (Echtzeit)
  • Verwaltung von knappen Ressourcen (Speicher, Netzwerk),
  • verlässliche Kommunikationsprotokolle
  • Energieverwaltung,
  • Entwurf von Nutzerschnittstellen (headless operation)
  • Systemkonfiguration
  • Programmiersprachen und Programmiermodelle

In der Veranstaltung werden Entwurfsentscheidungen moderner eingebetteter Betriebssysteme an Hand von Bespielszenarien erläutern und ein Einblick in aktuelle Standardisierungsprozesse gegeben.

In der Vorlesung werden Algorithmen zur Verwaltung von Ressourcen wie Speicher, CPU, Netzwerk u.a. vorgestellt, an die durch viele Einschränkungen von eingebetteten Systemen besondere Anforderungen gestellt werden. Aber auch aufkommende Konzepte wie die Konfigurierbarkeit von Betriebssystemen und anwendungsspezifische Betriebssysteme werden vorgestellt. Die Lerninhalte werden für die individuelle Stofferarbeitung im Selbststudium vorher bereitgestellt. Fragen, die in der Vorbereitung aufkommen, werden dann gemeinsam geklärt und diskutiert (siehe "Termine").

Die Schwerpunkte der Praktika liegen bei Betriebssystemen für eingebettete Systeme, verteilten Echtzeitsystemen, Echtzeitsteuerung, Firmware-Programmierung und systemnaher App-Programmierung. Die Praktikumsaufgaben werden im Rahmen der Vorlesung erläutert, diskutiert und können durch die Interessen der Teilnehmenden mitgestaltet werden.

Themen - Vorlesung

Folgend finden sich Unterlagen zu den Vorlesungen, die laufend ergänzt werden. Zur vertiefenden Lektüre finden sich auch Verweise auf Inhalte, die über das in der Vorlesung gezeigte Material hinausgehen.

Buch "Computers as Components"

Folien "Embedded System Design"
Embedding a computer | Examples | Early history | Microprocessor varieties | Application examples | Automotive embedded systems | BMW 850i brake and stability control system | Characteristics of embedded systems | Functional complexity | Real-time operation | Non-functional requirements | Design teams | Why use microprocessors? | The performance paradox | Power | Platforms | The physics of software | What does “performance” mean? | Characterizing performance | Challenges in embedded system design | Design methodologies | Design goals | Levels of abstraction | Top-down vs. bottom-up | Stepwise refinement | Requirements | Functional vs. nonfunctional requirements | Our requirements form | Example: GPS moving map requirements | Specification | Architecture design | GPS moving map block diagram | GPS moving map hardware architecture | GPS moving map software architecture | Designing hardware and software components | System integration | Summary

Folien "Case Study"
Purposes of example | Model train setup | Requirements | Requirements form | Digital Command Control | DCC documents | DCC electrical standard | DCC communication standard | DCC packet types | Conceptual specification | Basic system commands | Typical control sequence | Message classes | Roles of message classes | Subsystem collaboration diagram | System structure modeling | Major subsystem roles | Classes, roles & class descriptions | Control input sequence diagram | Formatter operate behavior | Panel-active behavior | Setting the speed | Sequence diagram for setspeed command | Controller operate behavior | Refined command classes | Summary

Folien "Embedded Lifecycle"

Warum halte ich heute diesen Vortrag? | Disclaimer | Produktlebenszyklus - Entwicklungs-Phase 0: Bevor es losgeht | Zertifizierungen | Hardwareplanung first, Software second | Realistische Zahlen für Projekte | Eval Board | SOM – System on a Module | Kundenanforderungen | Produktlebenszyklus - Entwicklungs-Phase 1: Zu wenig Prototypen | Software-Stack Typische Architektur | Architekturen “Der Klassiker” | Von der Hardware bis zum eigenen Code | Produktlebenszyklus - Entwicklungs-Phase 2: Kunde sieht Produkt zum 1. Mal | Alles ändert sich | Entwicklungsalltag | Entwicklungsalltag OS: Yocto Project | Produktlebenszyklus Entwicklungs-Phase 3: Start of Production SOP | SOP naht – Die Stunde der Performanceprobleme | Erfahrung: 5 Jahre Performance Consulting | Die Klassiker | Das Werkzeug #1: Linux Perf & Flamegraphs | Sonstige Alltägliche Werkzeuge | Produktlebenszyklus - Entwicklungs-Phase 4: Erste Hardware Beim Endkunden | Ängste | Gerät wird zum “Brick” | Strategien gegen Bricks | Updates | Crashes im Feld | Verschiedenes | Security: Das ‘S’ in IOT steht für Sicherheit | Datum und Zeit | Lizenzen | End Of Life

Tools: Der Star - Hotspot, Für Memory - Heaptrack, Qt auf dem Gerät debuggen - Gammaray

Folien "Einführung in die sicherheitskritische SW-Entwicklung" & "Segregation von Anwendungen"
Einführung in die sicherheitskritische SW Entwicklung | Einführung Object Controller | Phasen | Beispiel | SIL x | Organisatorische Massnahmen | V-Modell | Segregation von Anwendungen | Wann ist es erforderlich Anwendungen zu segregieren? | Hardware basierte Segregation | Software basierte Segregation | Beispiel aus der Luftfahrt

Folien "Performance Maße für Echtzeitysteme"
Performancemaße für Echtzeitysteme | Darstellung von Zeichen auf dem Bildschirm | Applikation bestimmt Bewertung eines Systems | Vernünftig klingendes Performancemaß kann fehlleiten | Eigenschaften für Performancemaße | Traditionelle Maße | 3-fach redundantes, fehlertolerantes System: TMR + voting | Performability | Beispiel: Landung eines Flugzeuges | Abschätzung von Programmlaufzeit | Quellcodeanalyse | Berücksichtigung von Pipelining | Zweistufige Pipeline | Caches | Virtual Memory

Folien "Performance Measures"
Introduction & Vocabulary | Task Value Functions | Hard vs. Soft Real-time Systems | Vocabulary | Mission Statement | Performance Measures | Problems of RT Computing | Structure of a Real-time System | Data Rates | Task Classes | Areas of Interest | Misconceptions | Real-time vs. Parallel Computing | Misleading Performance Measures | The Art of Real-Time Programming | RT Systems Engineering | Nothing new? | Guarantees are incomplete? | The Environment | The Ariane 5 Failure | A Space Shuttle Incident | Further Reading

What really happened on Mars
The Mars Pathfinder mission was widely proclaimed as “flawless” in the early days after its July 4th, 1997 landing on the Martian surface. Successes included its unconventional “landing” — bouncing onto the Martian surface surrounded by airbags, deploying the Sojourner rover, and gathering and transmitting voluminous data back to Earth, including the panoramic pictures that were such a hit on the Web. But a few days into the mission, not long after Pathfinder started gathering meteorological data, the spacecraft began experiencing system resets. The press reported these failures in terms such as “software glitches” and “the computer was trying to do too many things at once”. Read What really happened on Mars? Also, be sure to read this follow-up message from Glenn Reeves of JPL, who led the software team for the Mars Pathfinder spacecraft.

Folien "Scheduling & Task Assignment"
Scheduling for Real-Time Systems | Task Assignment and Scheduling | Task Dependency Graph | Periodicity | Feasibility of a Schedule | Preemptive vs. non-preemptive Scheduling | Uni-processor Scheduling | Multiprocessor Scheduling | Scheduling Problems | Rate Monotonic Scheduling (RMS) | RMS Schedulability | Discussion of RMS Schedulability | Example for RMS Schedulability | Graphical Representation of RMS-Schedulability | Sporadic Tasks | Transient Overload | Earliest Deadline First (EDF) | EDF Schedulability | Critical Sections | Priority Inheritance Protocol | Priority Ceiling Protocol | Requirements for a RT OS | Further Reading

Folien "Scheduling for Real-time Systems"
scheduling for real-time systems | terminology | periodic, sporadic, aperiodic | motivation | scheduling | offline vs. online | static vs. dynamic priorities | preemptive vs. non-preemptive | optimization problems - task dependency graph | uniprocessor scheduling | rate-monotonic scheduling (RMS) | earliest deadline first (EDF) | shortcomings | multiple task versions | IRIS tasks | multiprocessor scheduling | utilization balancing | next fit | myopic | focused addressing and bidding | with precedence | challenges | priority inversion | priority inheritance protocol | priority ceiling protocol

Folien "Memory Management"
Memory Management for Embedded Systems | Motivation & Background | Segmentation | Segment Table | Paging | Paging Hardware | Virtual Memory | Virtual Memory with Swapping/Paging | Problems of classical approaches used in Embedded Systems | Real Time with Virtual Memory Memory Locking / Pinning | Real-Time Programming with Virtual Memory | Real-Time Memory Management | Memory Mapping | Memory Allocation | Static Memory Allocation | Dynamic Memory Allocation in Embedded Systems | Memory Management with Linked Lists | Implementing malloc() using a static allocation array | Finding Free Blocks Quickly | Free Operation | Memory Management with Bitmaps | Fragmentation | Dynamic Memory Allocation Buddy Systems | Buddy System Algorithm | Allocation in bounded time | Buddy System Deallocation | Fixed-size Memory Management Segregated Free Lists | Blocking vs. Non-Blocking Memory Functions | Implementation of a blocking malloc() | Real Time Automatic Garbage Collection | Literature | QNX | Windows CE VirtualAlloc() | RTLinux | Palm OS | Memory Access | Harvard vs. von Neumann | Effects of Caches | Memory Devices Random Access Memory | Timing of a SRAM Chip | Synchronous DRAM | Memory Device Characteristics | Mapping Executable Images to Target Systems | Mapping Executables | Memory Functional Testing | Memory Faults | March Memory Testing | Zero-One Test Pattern | Checkerboard Pattern | Galloping (ping-pong) pattern (GALPAT) | Functional Memory Tests

Folien "Memory Management in Embedded Operating Systems" | Demo-Quellen
Motivation | Classical Memory Management Techniques | Virtual Memory, Memory Management Unit | Segmentation | Paging | Memory Management and Real Time Programming | Problems in Real Time Systems | Avoid Memory Management | Memory Locking | Real Time Java | Real Time Java Memory Classes | Memory Mapping | Dynamic Memory Allocation | Static vs. Dynamic Allocation | Bitmaps | Linked Lists | Linked Lists: Allocation Strategies | Buddy System | Buddy System: Example | Segregated Free Lists | Blocking and Non-blocking memory functions | Real Time Garbage Collection | Examples: Memory Management in selected Real Time Systems - QNX, Windows CE, Windows 10 (IoT) with RTX, Real Time Linux, | almOS, FreeRTOS, embOS | Memory Access | Harvard vs. von Neumann Architecture | Caches | Memory Types | Functional Tests

Folien "Real-Time Communication"
Characteristics of RT Comm | Categories of RT communication | Example: multi hop network | Model for Real-Time Communication | RT Traffic Model | Performance Metrics for RT Comm. | Communications media | Passive star topology | Network topologies | Meshes and toruses | Hypercubes | Embedding a hypercube in a passive star - wavelength allocation | Multistage network | Sending Messages | Media access | Media Access - physical problems | Protocols | VTCSMA | Operation of VTCSMA | Variations of VTCSMA | VTCSMA Example | Window protocol | Window protocol - algorithm | Window protocol - discussion | Token-based protocols | Operation of timed token protocol | Claim token protocol | Token ring protocol | Operation of token ring protocol | Schedulability Criterion for token ring protocol | Token ring protocol - example | Hierarchical round robin protocol

Folien "Echtzeitkommunikation"
Echtzeitkommunikation | Merkmale | Kategorien | Echtzeitkommunikation – Modell | Datenverkehrsmodell | Performance-Metriken für Echtzeitkommunikation | Übertragungsmedien | Passive Sterntopologie | Netzwerktopologien | Netz- und Ringtopologien | Hyperwürfel | Multistage Netzwerk | Nachrichtenvermittlung | Medien-/Kanalzugriff | Medien-/Kanalzugriff – physikalische Probleme | Protokolle | VTCSMA | VTCSMA Beispiel | 802.5 – Token Ring | Token Aufbau | Access Control - Priorität | ZigBee | Feldbusse | Feldbus-Standards (Auswahl) | Echtzeit Ethernet

Folien "Feldbusse"
Eigenschaften mobiler und eingebetteter Systeme: Feldbusse | Architektur eines Echtzeitsystems | Feldbusse | Beispiel: CAN | Funktion | Protokoll | Arbitrierung | Bitstuffing | Harte Echtze | Fixed Priority Scheduling | Scheduling | Längste Übertragungszeiten | Längste Wartezeit (Queuing Time) | Blocking Time | Längste Queuing Time und Latency | Beispiel | Fehlererkennung | Fehlerbehandlung | Fault Confinement | Beispiel: TTP/A | Protokoll | Fehlerbehandlung | Beispiel: ByteFlight | Ideen | Systemüberblick | Protokoll | Nachrichtenformat

Folien "Clock Synchronization"
Motivation | Examples | Time Keeping | Time Measurement | Coordinated Universal Time (UTC) | Skew between computer clocks in a distributed system | Modes of synchronisation | Algorithms for clock synchronisation | Cristian algorithm (1989) | Berkeley algorithm (1989) | Network Time Protocol (1985) | NTP message exchange | Accuracy of NTP | Logical time and logical clocks | Lamport Logical Clocks (1978) | Lamport Timestamps | Vector Clocks | Vector Timestamps | Summary: Clock Synchronization

IoT-Betriebssysteme: FreeRTOS, Contiki & Cooja, RIOT

Folien "RT Linux"
Real-Time Extensions for Linux | RTLinux History | RTLinux Overview | Motivation for a Real-Time Linux | Linux Architecture | RTLinux Architecture | Basic Concept: Interrupt Emulation | Interrupt Emulation: Soft Interrupts | Interrupt Emulation: S_IRET Macro | Interrupt Emulation: Interrupt Handler | RTLinux Modules | Threads | Threads Scheduling | Scheduler Implementations | RTLinux Inter Process Communication | Real-Time FIFOS API | Synchronisation: Mutex | Synchronisation: Semaphores | Physical Memory and I/O Port Access | Interrupt Handling: Soft Interrupts | Interrupt Handling: Hard Interrupts | Timing API | Implementing RTLinux Applications | Higher Striker - Real-Time Linux and Periodic Threads | Installing RTLinux | Real-Time Linux Implementations | Real-Time Application Interface (RTAI) | Typical Performance | FSMLabs RTLinuxPro 2.0 Features | RTLinuxPro FIFOs | RTLinuxPro Example: A Real-Time Thread | RTLinuxPro Example: Main | Low Latency Kernel Patches | CPU-Shielding - Real-Time for SMP

Folien "RIOT-OS"
Internet of Things: Which OS? | The Internet of Things (IoT) | IoT: The operating system question | RIOT: The friendly IoT operating system | RIOT in a nutshell | RIOT: Positioning | RIOT: Fact sheet | RIOT: IoT development made easy | RIOT already runs on a wide range of IoT hardware | RIOT: Built to connect | Minimized Hardware-Dependent Code | RIOT APIs | RIOT user and developer evolution | RIOT Origins | RIOT stats | Join the RIOT | Potential Projects

Folien "The ARM processor"
ARM - A short History | ARM Products | RISC vs. CISC | The ARM Architecture | ARM Instruction Pipeline | Registers ARM7 | Load and Store Architecture | Current Processor Status Register (CPSR) | ARM Data Processing Instruction | Instruction Mnemonics | Conditional Execution | Condition Codes | Conditional Execution: Example | Data processing instructions | Addressing Modes - Offset Addressing | Addressing Modes - Pre-Index Addressing | Addressing Modes - Post-Index Addressing | Load and Store Multiple Operands | Status register transfer instructions | Arithmetic and Logic Instructions | Branch instructions | Branching and Subroutines | Subroutines - Example | The frame pointer | I/O Operations | Thumb Mode | How to change to Thumb mode and back | Thumb Mode vs. ARM Mode | Useful tools for targetting ARM | GNU Assembler | GNU ARM Assembler Example | Assembler Directives | Elf-Format Sections | Debugging Lego NXT | The Lego NXT-Platform | The Atmel AT91SAM7S256 | AT91SAM7S256 Memory Controller (MC) | Interrupts and Exceptions | Execution Modes and Registers | ARM Bootloader | Lego EV3

Folien "What is Ada?"
This is not yet another Ada tutorial | Ada origins and history | Ada overview | Some Ada concepts | Ada runtime systems | Ravenscar | SPARK Appendix | A personal journey with Ada | Getting started with Ada | Projects of interest for Railergy

Folien "Ada"
Ada history | Ada - the name | Significant Language Features | Hello World in Ada | Packages - another example | Multitasking in Ada | Tasks - an example | Task types and task objects | Programming with tasks | Ada Rendezvous | Callee may control rendezvous | Guarded select | Select at a glance | Caller may control select | Priorities on task entries | Protected Objects | Support for Interrupts | Package Ada.Interrupts | Priorities | Task Dispatch - Standard Policy | Scheduling Scenario - Preemption | Priority Ceiling Locking | Priority Ceiling Protocol | Entry Queuing Policies | Dynamic Priorities | The Notion of Time | Synchronous Task Control | Asynchronous Task Control | Example: Periodic Task | Example: Interrupt-driven Task | The Ravenscar Profile | Conclusions - Ada for RT Systems

Folien "Speicherprogrammierbare Steuerungen"
Motivation | Früher… | Einsatz | Aufbau | Verfügbare Arten | ABB AC500 PM595 | Siemens SIMATIC S7 | Fischertechnik + Beckhoff | Ansprechen einzelner Kontakte | Kommunikation | Programmierung | Programmabarbeitung | Eingabeprachen IEC 1131-1/3 | Anweisungsliste AWL | Kontaktplan KOP | Funktionsbausteinsprache FBS | Strukturierter Text ST | Ablaufsprache AS | Programmorganisation | Übertragbarkeit | Wann welche Sprache? | Heizungssteuerung mit SPS

Folien "RT Java"
History | Motivation | Real Time Specification for Java (RTSJ) | RTSJ: Major Specification Features | RTSJ Scheduling | Threads | RealTimeThread | Periodic Threads | Scheduler | Asynchronous Event Handling | AynchEvent Class | Interrupt Handling Example | Time | Timers | Timer Example | Asynchronous Transfer of Control | Asynchronously Interrupted Exception | Memory Management | Scoped Memory | Scoped Memory - Types | ScopedMemory Example | Nested Scoped Memory | Immortal Memory | Budgeted allocation | Assignment restrictions | Memory Area - Classes | Garbage Collection | Real-time garbage collection | Incremental Collector - Tri-Color Marking | Automatic garbage collection in RTSJ | Physical Memory Access | Synchronization | Priority Inversion | Handling Posix-Signals | Realtime Security | Realtime System | RTSJ Implementations | jRate – Overview - Precompilation | JamaicaVM – aicas GmbH | J Consortium | RTJWG View of the Core | The Core Registry | Core Deployment | Distributed RTSJ

Themen - Projektarbeit

Im Rahmen der Lehrveranstaltung stellen externe Partner ihre Arbeiten im Gebiet der eingebetteten Systeme vor und bieten auch Themen für die Projektarbeit an.

Eigene Projektvorschläge von Teilnehmenden sind selbstverständlich auch möglich. Dazu können sehr gern die vorhandenen Geräte der IoT-Labs/der IoT-Vitrine am Fachgebiet verwendet bzw. auf Anfrage auch neue Hardware angeschafft werden.

Leistungserfassung

Die Endnote wird in einer abschließenden mündlichen Prüfung ermittelt. Voraussetzung für die Zulassung zur Prüfung ist die regelmäßige Lösung der Aufgaben im Praktikum und der Übung.