We are looking for an Embedded Software Engineer to join our team. You will be responsible for the realization of a high performance embedded computing architecture to support our flight software in space. Working close to the hardware/software boundary you will deliver a wide spectrum of software components ranging from low-level, bare-metal, real-time operating systems, Linux based distributions with state-of-the-art packages to support onboard computation.
Within a continuous integration environment, you will contribute to the entire software lifecycle with a focus on the specification, design, deployment, test, integration and maintenance of software features. Improving and developing new features to shared libraries, adding additional capabilities to existing platforms, will also be a key part of this. Through these activities and by working with the key stakeholders in the development process you will deliver exciting new features and directly support ongoing spacecraft operations.
Tasks and Responsibilities:
- Contribute to the entire software lifecycle, focusing on requirements elicitation, coding, debugging and integration with the flight hardware
- Validation of features including integration with software-in-the-loop and hardware-in-the-loop test suites
- Scouting of the latest technologies within embedded software development and driving their adoption within the group
- Contributing to the continuous improvement of the team's processes and methodologies
- Support to AIV activities and spaceflight operations
- Additional duties may be assigned as needed
Qualifications and Requirements:
You will have at least some of the following skills...
Experience deploying embedded Linux distributions and associated toolchains, such as Buildroot or Yocto
Knowledge of modern data processing concepts and tools, such as containerization, orchestration and workflows
Knowledge of real-time operating systems (such as RTEMS or FreeRTOS) and/or general-purpose operating systems targeted for embedded applications (such as embedded Linux)
Knowledge of typically embedded communication interfaces such as USART, SPI, I2C, CAN, Ethernet
Experience using and configuring build toolchains or similar development environments (such as ANT, WAF, Makefile, Visual Studio etc.)
Familiarity with typical software development methodology and release versioning processes
Familiarity with Git versioning system or any similar DVCS
Experience with test-driven development
Capability of working in autonomy
Resilience and ability to work in a fast-paced environment
Ability to work hard in a team setting to meet tight schedules
Ability to communicate technical concepts clearly and effectively
- Bachelor or higher engineering degree, in any relevant area such as aerospace engineering, electronic engineering, computer science or automation.
- Full professional proficiency in the English language is mandatory.