Embedded Systems
At the edge of resources

Embedded systems today cover a wide range of use cases and types of platforms. Specialized bootloaders combined with software that runs directly on the hardware without an additional operating system is now just one extreme among other architectures. At the same time, established embedded operating systems are increasingly being replaced by customized Linux kernels. The historical dominance of C and C++ as programming languages ​​supported by assembly still exists, but is increasingly being weakened by languages ​​such as Rust and even Python. Embedded systems are fundamentally interesting from the perspective of their scarce resources, but also include challenges in terms of reliability, long lifetimes and integration testing. Embedded software must function smoothly in a variety of sometimes hostile environments, and today it is expected to be able to robustly handle bit flips and not completely deterministic results of operations.

Selection of relevant skills

  • Languages: C, C++, Rust, x86-Erweiterungen und -Intrinsics
  • Compiler: GCC/MingW, Clang/LLVM, Intel- und Microsoft-Compiler
  • Linux on most variations of x86 and ARM
  • Other operation systems such as eCos
  • Broad range of buses for connections in various contexts and uses cases
  • Interaction with custom accelerators and FPGAs
  • Debugging on hardware
  • Integration tests through emulation and mocking of embedded hardware