Back to jobs
Job Description
Purpose
The Firmware Developer is responsible for owning the design, development, and delivery of embedded firmware for hardware-based systems, ensuring solutions are reliable, efficient, and fit for purpose. As the primary firmware point of contact, the role operates with a high degree of autonomy across the full development lifecycle, from initial design through to validation and field deployment.
Working within a cross-functional engineering environment, the Firmware Developer collaborates with hardware, software, and quality teams to define requirements, resolve technical challenges, and ensure successful system integration. The role is accountable for firmware quality, performance, and compliance, while also driving improvements in development practices, testing approaches, and overall product robustness.
Responsibilities
Firmware Engineering & Technical Delivery
Design, develop, and maintain robust embedded firmware for microcontrollers and hardware platforms, with a focus on performance, reliability, and maintainability.
Debug, test, and validate firmware on target hardware using tools such as oscilloscopes, logic analyzers, and debuggers.
Implement and optimise hardware interfaces and communication protocols, including UART, SPI, I2C, CAN, and Ethernet.
Develop and maintain low-level drivers and board support packages (BSP), supporting system integration across hardware and software components.
Own firmware design and architectural decisions for assigned systems, making informed technical trade-offs to meet performance, resource, and project constraints.
Create and maintain clear technical documentation, including design specifications, interface definitions, and test procedures.
Project Support & Collaboration
Collaborate effectively with hardware engineers, software teams, and project managers to define requirements and deliver integrated solutions.
Take full ownership of firmware components or features, ensuring timely delivery against project milestones.
Lead by example in code quality, contributing to and reviewing code to maintain consistency and robustness across the codebase.
Quality, Standards & Compliance
Apply coding standards (e.g., MISRA C) and embedded best practices to produce reliable, maintainable code.
Ensure firmware complies with relevant safety, regulatory, and cybersecurity standards.
Identify, drive, and implement improvements to development, testing, and integration processes.
Learning & Mentorship
Continue developing expertise in embedded systems, including RTOS, embedded Linux, and modern toolchains.
Provide guidance and informal mentorship to Engineers where applicable, including knowledge sharing and code reviews.
Contribute to reusable components, internal tools, and documentation to enhance team efficiency.
Health, Safety & Environment (HSE)
Adhere to all HSE policies, procedures, and safe working practices.
General Responsibilities
Support field deployment, integration, and troubleshooting of firmware, including diagnosing and resolving issues in operational environments.
Competence requirements
Essential
Bachelor’s degree (or equivalent experience) in Electronic Engineering, Embedded Systems, Computer Engineering, or a related discipline.
Proven experience (typically 2–5 years) in embedded firmware or low-level software development, with the ability to work independently on assigned systems.
Strong proficiency in C/C++ for embedded systems, with solid understanding of memory management, concurrency, and direct hardware interaction.
Hands-on experience with microcontrollers and embedded platforms, including both bare-metal and RTOS-based development.
Practical experience implementing and debugging hardware communication protocols such as UART, SPI, I2C, CAN, and Ethernet.
Experience of PID for BLDC motor control.
Strong debugging and diagnostic skills, using tools such as JTAG/SWD debuggers, oscilloscopes, and logic analyzer to resolve hardware–firmware issues.
Experience with version control systems (e.g., Git), build systems, and structured testing/validation approaches.
Good understanding of the embedded software development lifecycle, including integration, verification, and deployment to target hardware.
Ability to take ownership of firmware components, manage priorities, and deliver solutions aligned to project timelines.
Strong problem-solving skills and ability to collaborate effectively within cross-functional engineering teams.
Desirable
Experience with real-time operating systems (RTOS) and/or embedded Linux environments.
Familiarity with coding standards (e.g., MISRA C) and development in safety-critical or regulated environments.
Experience of STM32 & ESP32 microcontrollers.
A working knowledge of Protobuf.
Exposure to hardware-in-the-loop (HIL) testing and automated test frameworks.
Experience supporting firmware in field deployments or operational environments.
