Embedded Software Engineer
Role details
Job location
Tech stack
Job description
We are looking for an experienced Senior Embedded Software Engineer to design, develop, and enhance embedded software for advanced electro-mechanical products used in global industrial applications. This role is hands-on and technical, contributing to firmware development across the full product lifecycle while collaborating closely with hardware, electronics, and systems teams. This is an ideal position for an engineer who enjoys solving real-time, hardware-integrated problems and delivering high-quality embedded code in a structured engineering environment., Embedded Software Development
-
Design and develop embedded firmware in C/C++ for ARM-based microcontrollers (e.g., STM32).
-
Work with real-time environments - RTOS or bare-metal.
-
Implement drivers, peripherals, communication buses, sensor interfaces, motor control, timers, and control loops.
-
Write reliable, maintainable, well-structured embedded code. Hardware Interaction
-
Collaborate with electrical and systems engineering teams to define requirements and interface specifications.
-
Use oscilloscopes, logic analysers, debuggers (e.g., JTAG/SWD) to diagnose and resolve issues.
-
Support integration, bring-up, and testing of new hardware and prototypes. Software Quality & Processes
-
Contribute to code reviews, unit testing, and documentation.
-
Use version control systems (Git) and structured SDLC processes.
-
Follow embedded software best practices (MISRA or similar desirable). Team Collaboration
-
Mentor less experienced engineers where appropriate.
-
Work closely with cross-functional teams to deliver features, diagnose field issues, and improve existing firmware.
-
Participate in technical discussions and contribute to continuous improvement of tools and processes.
Requirements
Essential
-
Strong professional experience developing embedded systems in C/C++.
-
Experience with ARM Cortex-M microcontrollers (e.g., STM32).
-
Good understanding of embedded hardware: peripherals, ADCs, interrupts, timers, PWM, bootloaders.
-
Experience in real-time systems (RTOS or bare-metal).
-
Strong debugging skills using both software tools and physical lab equipment.
-
Communication protocols: SPI, I²C, UART, CAN (at least two).
-
Experience in full lifecycle firmware development within a structured engineering environment. Desirable
-
Experience with industrial products, robotics, machinery, pumps, sensors, or motor control.
-
Control algorithms or DSP understanding.
-
Experience with Python or scripting for tooling/test automation.
-
Familiarity with safety, reliability, or IEC/ISO engineering standards.
-
Experience with continuous integration and automated test frameworks for embedded systems.