Senior EmbeddedSoftware Engineer
Role details
Job location
Tech stack
Job description
As Senior Embedded Software Engineer, you will architect, implement, and maintain our hardware-agnostic and OS-agnostic on-board software framework. Your work in collaboration with the AI team will enable integration of any hardware into any bus in less than a day instead of months, ensuring robustness, safety, and performance across Linux and real-time operating systems.
What You'll Do
- Platform & Abstraction
-
Design and develop a hardware-agnostic HAL and middleware stack in C/C++, supporting ARM Cortex-A/R/M, RISC-V, etc.
-
Create OS-agnostic abstraction layers to target Linux (Yocto/Ubuntu) and RTOS (FreeRTOS, Zephyr, RTEMS) with minimal code divergence.
- Driver & Protocol Implementation
-
Implement and maintain bus-protocol drivers (I2C, SPI, UART) with multi-bus and multi-instance support for redundancy.
-
Define and adhere to clear software-to-hardware interface contracts (ICDs/datasheet-driven), ensuring consistent behavior across platforms.
- Architecture & Best Practices
-
Apply OOP principles in C++ and structured design in C to build modular, testable components.
-
Enforce MISRA C/C++ and CERT Secure Coding guidelines; integrate static analysis, code reviews, and Git-based CI pipelines.
- Automation & Testing
-
Develop Python scripts to automate configuration of the on-board software, automate build, flashing, and validation across multiple target boards.
-
Build and maintain hardware-in-the-loop and software-in-the-loop test frameworks to continuously test, validate, and verify the on-board software and platform compatibility.
- Collaboration & Mentorship
-
Collaborate with the Software Lead, AI Engineer and Backend team
-
Mentor junior engineers, share knowledge on cross-platform strategies, and foster an iterative "try, learn, improve" culture.
Requirements
-
Bachelor's or Master's in Electrical Engineering, Computer Engineering, Computer Science, or equivalent
-
5+ years of embedded software development, with emphasis on cross-platform or portable code
-
Expert in C (99/11) and Modern C++ (11/14/17); solid understanding of OOP and procedural design
-
Deep experience with I2C, SPI, UART (multi-bus, multi-device patterns)
-
Proven ability to develop for both Linux (Yocto, Ubuntu) and RTOS (FreeRTOS, Zephyr, RTEMS)
-
Python scripting for coding, build/test automation
-
Familiarity with hardware debugging (JTAG/SWD, logic analyzers, oscilloscopes)
-
Strong version control workflow (Git, GitFlow) and CI/CD integration
Nice-to-Have
-
Background in satellite or aerospace on-board computers (OBCs) and Flight Software Frameworks.
-
Exposure to container-based CI for embedded builds (Docker)
-
Knowledge of additional field buses (CAN/CAN-FD, MIL-STD, etc.)
-
Experience with secure boot or firmware-update mechanisms
-
Prior work on middleware or plugin frameworks