5-7 years experience in aerospace software development
Proficiency in C/C++ and scripting languages like Shell or Bash
Experience with embedded and multi-core platforms
Familiarity with communication protocols (UART, CAN, SPI, I2C)
Expertise with Git or similar version control systems
Knowledge of debugging tools like JTAG and GDB
Bachelor's or Master's degree in Computer Science or Electronics Engineering preferred
Responsibilities
Architect, design, and maintain software for real-time embedded systems
Implement communication protocols and specifications for space software
Design and implement Ethernet networks for spacecraft communication
Manage application integration on customized platform software
Implement efficient memory and process management
Develop automated testing frameworks for embedded systems
Support debugging of real-time and critical faults
Benefits
Collaborative global team environment
Opportunities for further training and professional growth
Commitment to equal opportunities
Engagement with cutting-edge IoT and embedded tech
Flexible working arrangements may be available
Full Job Description
We are seeking a highly skilled and motivated FSW/Embedded Software Developer to design, develop, and optimize software for customized embedded devices, with a strong emphasis on space-related software and algorithms. The role involves designing and developing software for bare-metal, RTOS, and real-time Linux environments, real-time performance, system reliability, and implementing robust recovery mechanisms. You will also contribute to testing and automation.
What you will be doing:
Core Development
Embedded Software Development: Architect/Design, write, debug, and maintain efficient software for real-time embedded systems, including mission critical Flight Software and communication with other space-specific software subsystems/modules, such as TTC (CCSDS protocol), Power, Thermal, GNC, FDIR, CFDP.
Communication Protocols and Specifications: Implement protocols used in space-grade software such as UART, CAN, SpaceWire, SPI, I2C, and Ethernet. Experience with Linux bridging, DSA (Distributed Switch Architecture), and L2 protocols such as RSTP/MSTP, HSR, or FRER for redundant network fabrics is highly valued
Networking and Avionics Fabrics: Design and implement L2 Ethernet networks for inter-board communication on spacecraft, including switch bring up, PHY configuration, and topology design. Configure and debug L2 redundancy protocols (RSTP, HSR, FRER) for fault-tolerant fabrics. Implement deterministic networking using TSN features where mission profiles require bounded latency.
Application Integration: Integrate and manage provided applications on top of the customized platform software. Design and bring up Ethernet-based avionics networks, including PHY/MAC initialization, switch configuration, and L2 redundancy protocols.
Operational Management: Design and implement efficient memory management, process management, software updates, reprogramming and power saving modes for embedded systems. Experience with multi-board Ethernet fabrics (mesh, ring, or tree topologies) for inter-subsystem communication is a plus.
Testing and Support
Test Framework Development: Create and maintain automated testing frameworks for embedded systems, including HIL, SIL, PIL.
Support: Provide support for debugging of real-time and critical faults.
Debugging and Validation: Use tools like oscilloscopes, logic analyzers, and protocol analyzers to test and debug embedded software and hardware interfaces.
Collaboration and Documentation
Hardware Interaction: Work closely with global software teams to contribute to the new designs and ensure seamless software-hardware integration.
Documentation: Prepare and maintain technical documentation.
What you bring to this role:
Hands-on: Proven record of designing and developing significant working software in aerospace applications.
Programming Languages: Proficiency in C/C++ and scripting languages like Shell or Bash; familiarity with Python.
Embedded Systems: Experience with embedded and multicore platforms and their toolchains. Experience with Yocto is a big plus.
Communication Protocols: Knowledge of key hardware and software protocols such as UART, CAN, SPI, I2C. TCP and UDP.
Upgrades: Experience with secure firmware updates and reprogramming mechanisms.
Debugging Tools: Proficiency with debugging tools like JTAG, GDB, and serial debuggers.
Version Control: Expertise with Git or similar version control systems.
Bonus points:
Education: Bachelor's or Master's degree in Computer Science, Electronics Engineering, or a related field.
Familiarity with wireless communication technologies (e.g., Wi-Fi, Bluetooth, Zigbee, LoRa).
Familiarity with hardware simulation tools and flatsat environments for testing.
Familiarity with CI/CD pipelines and automated build/test workflows.
Key Attributes
Strong analytical and debugging skills.
Passion for quality and attention to detail in software development and testing.
Ability to work collaboratively in cross-functional and global teams.
Commitment to staying updated with the latest in IoT, embedded systems, and testing automation technologies.
A willingness to undertake further relevant training.
An understanding and commitment to equal opportunities.
Time management, self-reliance and willingness to learn.