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.
Qualifications
- 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 (C99/C11) and Modern C++ (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