Embedded Software Engineer
We are seeking a Spacecraft Embedded Software Engineer to support the development, integration, and validation of flight software and payload software for spacecraft platforms. This role combines low-level embedded development, Linux-based system engineering, and hardware-aware debugging with a strong emphasis on testing, reliability, and system integration.
You will work across heterogeneous compute environments within a multi-disciplinary engineering team, collaborating closely with hardware, FPGA, RF, systems, and operations engineers to deliver robust embedded solutions. The role includes payload-facing development for SDR-based instruments, high-throughput data movement, boot flow management, and extensive verification workflows. Hands-on hardware interaction and strong debugging discipline are essential.
Responsibilities
Embedded Software Development
• Develop and maintain embedded software in C/C++ for spacecraft flight and payload subsystems.
• Support payload software development for SDR-based systems using libiio and Linux userspace frameworks.
• Implement device drivers, middleware, and application-layer logic across bare-metal, RTOS, and Linux environments.
• Design and maintain boot flows including FSBL, U-Boot, and OS initialization sequences.
• Implement high-throughput data pipelines and manage DMA-based transfers between programmable logic and processor subsystems.
System Integration & Testing
• Lead and support HIL, SIL, unit, and integration testing workflows.
• Develop automated test frameworks using pytest and scripting in Python.
• Perform system bring-up, debugging, and integration with spacecraft hardware and payload electronics.
• Support verification and validation campaigns across development and qualification phases.
• Collaborate with hardware, FPGA, and algorithm teams to ensure reliable end-to-end system behavior.
Build Systems & Tooling
• Develop and maintain reproducible build environments using CMake, Make, and related build systems.
• Use Git and CI/CD pipelines to support automated builds, testing, and deployment workflows.
• Utilize debugging and profiling tools including gdb, valgrind, and performance instrumentation tools.
• Perform performance profiling and optimization of CPU, disk, and network workloads.
Embedded Linux & RTOS
• Develop and maintain embedded Linux environments using Yocto and PetaLinux.
• Configure device trees, kernel modules, and userspace services.
• Implement RTOS-based solutions using FreeRTOS or Zephyr, and develop bare-metal firmware when required.
• Manage system-level configuration and runtime services in Linux-based spacecraft compute environments.
Hardware Interfaces & Protocols
• Implement and debug digital communication interfaces including: RS-232 / RS-485 / RS-422, I2C, SPI, CAN bus, Ethernet
• Work with hardware engineers to validate interface behavior, timing, and robustness.
• Support board-level debugging and bring-up activities.
Emulation, Simulation & Development Environment
• Utilize QEMU or equivalent virtualization/emulation frameworks for system testing and development.
• Develop simulation-based validation workflows and cross-platform testing environments.
• Use containerization tools such as Docker for development reproducibility and CI environments.
Documentation & Collaboration
• Produce and maintain high-quality technical documentation, including design documents, ICDs, test procedures, and troubleshooting guides.
• Participate in design reviews and cross-functional technical discussions.
• Work effectively within a multi-disciplinary team, coordinating closely with hardware and systems engineering teams throughout development and integration phases.
• Maintain operational runbooks, integration notes, and development guidelines to support long-term maintainability.
Minimum Qualifications
• Bachelor’s degree in Electrical Engineering, Computer Engineering, or related field.
• 2+ years of professional embedded software development experience in C/C++.
• Strong experience with embedded Linux environments and Linux-based development workflows.
• Experience with CMake, Make, and build system design.
• Proficiency with gdb and valgrind for debugging and performance analysis.
• Experience with Git and CI/CD workflows.
• Experience performing unit, integration, and system-level testing, including HIL/SIL environments.
• Hands-on experience working with hardware and performing board bring-up and debugging.
• Understanding of digital communication protocols (RS232/485/422, I2C, SPI, CAN, Ethernet).
• Experience with ARM-based embedded systems and microcontroller platforms.
• Working knowledge of bootloaders and embedded boot sequences (FSBL, U-Boot).
• Familiarity with DMA-based data movement and memory architecture in embedded systems.
• Proficiency in Python for scripting and test automation.
Preferred Qualifications
• Experience with libiio and SDR payload software development.
• Familiarity with QEMU or other emulation environments for embedded testing.
• Experience with Yocto and PetaLinux build environments and device tree configuration.
• Experience with FreeRTOS or Zephyr RTOS and bare-metal firmware development.
• Knowledge of pybind11 for bridging C++ and Python environments.
• Experience with Docker for reproducible development environments and CI integration.
• Understanding of software-defined radio architectures and their operational constraints.
• Basic DSP knowledge relevant to SDR payloads (sampling, IQ data, filtering concepts).
• Experience implementing high-throughput streaming pipelines and optimizing memory bandwidth usage.
• Familiarity with spacecraft or high-reliability embedded systems environments.
Benefits
• Competitive salary and a comprehensive benefits package, including health insurance and fuel support.
• Continued support for candidates currently enrolled in a master's or doctoral program.
• Opportunities for continuous professional growth and skill development.
• Engage in a collaborative and innovative work environment.
• Enjoy a positive and enriching work environment, situated in a desirable location.
