Eingebettete Systeme
An der Grenze der Ressourcen

Embedded-Systeme umfassen heute eine große Bandbreite an Anwendungsfällen und Arten an Plattformen. Spezialisierte Bootloader kombiniert mit Software, die direkt ohne zusätzliches Betriebssystem auf der Hardware läuft, ist heute nur noch ein Extrem neben anderen Architekturen. Gleichzeitig werden auch etablierte Embedded-Betriebssysteme zunehmend durch angepasste Linux-Kernel verdrängt. Die historische Dominanz von C sowie C++ als Programmiersprachen unterstützt von Assembler ist zwar nach wie vor gegeben, wird aber zunehmend durch Sprachen wie Rust und sogar Python aufgeweicht. Embedded-Systeme sind grundsätzlich aus Sicht ihrer knappen Ressourcen interessant, schließen aber auch Herausforderungen hinsichtlich Zuverlässigkeit, hoher Lebenszeiten und Integrationstest ein. Embedded-Software muss dabei in einer vielzahl von teils feindlichen Umgebungen reibungslos funktionieren, wobei heute erwartet wird, mit Bit-Flips und nicht vollkommen deterministischen Ergebnissen von Operationen robust umgehen zu können.

Auswahl relevanter Kenntnisse

  • Sprachen: C, C++, Rust, x86-Erweiterungen und -Intrinsics
  • Compiler: GCC/MingW, Clang/LLVM, Intel- und Microsoft-Compiler
  • Linux auf den meisten Varianten von x86 und ARM
  • Andere Betriebssysteme wie eCos
  • Große Auswahl an Bussen für Verbindungen in verschiedenen Kontexten und Anwendungsfällen
  • Interaktion mit Beschleunigern und FPGAs
  • Debugging auf Hardware
  • Integrationstests durch Emulation und Mocking von eingebetteter Hardware