Embedded Software (Firmware) Engineer
Zenno creates scalable technology for sustainable space exploration.
We're currently developing fuel-free systems for satellite attitude control and propulsion based on our invention of superconducting electromagnets for space applications.
At full maturity, we expect Zenno products to range from novel spacecraft components to on-board services.
The Role
You will report directly to the Head of Engineering and solve a broad range of problems in your R&D process by applying your software and firmware programming skills.
Your work will centre on a number of interrelated responsibilities:
Taking ownership (design, implement, test, document and support) firmware projects that enable research, production and mission activities at Zenno. Part of this work will be developing firmware requirements in coordination with systems engineering, hardware engineering, software engineering and subsystem owners, You will be responsible for producing, maintaining and executing unit and integration tests relating to your firmware project.
Role requirements:
- Ability to understand and break down complex technical challenges
- Take ownership of your firmware products, including verification testing and writing documentation.
- Strong knowledge of modern C++ in an embedded environment
- Basic knowledge of Git
- Basic knowledge of agile (preferable Scrum).
- A proven ability to produce complex firmware for embedded, including debugging and testing, both with and without an RTOS.
- Familiar with many of the following parts interacting with them from a firmware context: ADCs, DACs, OpAmps, power supplies (linear, LDO, DC/DC), FPGAs, microcontrollers, processors, memory and MOSFETs
- Knowledge of common communication methods such as RS232, RS422, I2C, SPI, LVDS, Ethernet, CAN or PCIe
- Hardware debug experience, including familiarity with tools such as the oscilloscope, logic analyser etc.
- Strong skills in debugging, performance optimisation and unit testing
- Develop firmware requirements in coordination with systems engineering, hardware engineering, software engineering and subsystem owners
Role preferences:
- Strong knowledge of modern C, C++, Java, Rust and μPython.
- Strong knowledge of the typical microprocessors (MSP430, Cortex M4) and their associated tools, IDEs and debuggers.
- Knowledge of FreeRTOS.
- Familiarity with GCC in an embedded context.
- Familiarity with developing using Windows and Ubuntu.
- An ability to produce internal, high-quality documentation for software projects.
- Familiarity with Make and/or Gradle build systems
- Familiarity with Bluetooth
- A knowledge of the impacts of a space environment on software requirements (reliability, maintenance, safety, radiation resistance)
- Knowledge and/or interest in Satellite design, attitude determination and control, FPGAs
We don't expect you to be an expert but you'll need to be comfortable trying out new things.
Our culture
We expect you to love what you do.
As a small start-up, you will need to work with some independence: this will be your area and you will become the expert in it. You'll have a large and rewarding part to play. We all work closely and everyone feels free to ask for help (and admit ignorance). We do things efficiently and avoid bureaucracy.