* Develop firmware for our core technology, from concept through to implementation, test and support in production.
* Write high-quality C for ARM microcontrollers (STM32), focusing on robust, maintainable and testable code.
* Work closely with electronics, mechanical and software engineers, plus biologists, to understand system needs and turn them into clear firmware requirements.
* Collaborate in a fast-moving, cross-discipline environment where you can influence design decisions at every stage.
* Support and occasionally develop custom test equipment for internal use, helping the wider team move faster.
* Debug embedded systems using tools such as debug probes, oscilloscopes, multimeters and logic analysers, getting to the root cause of tricky issues.
* Bring a pragmatic, can do mindset, choosing the right level of engineering rigour for the stage of development we are in.
Depending on your experience, you may also:
* Apply good software engineering practices, such as test-driven development and continuous integration to embedded systems.
* Use higher level languages such as Python, C# or Java to build supporting tools and simple GUIs for debugging, test or internal users.
* Contribute to electronics design, working closely with hardware engineers to shape interfaces and overall system architecture.
* Develop and optimise hard real time algorithms for motion control, sensing or safety critical functions.
* Use Docker and containers to create reliable, repeatable development and test environments.
* Work with Linux as a development environment and as part of the wider system.
#J-18808-Ljbffr