Embedded Software Developer
Role details
Job location
Tech stack
Job description
We are seeking an Embedded Software Developer to design, develop, and maintain firmware for complex embedded systems, primarily based around STM32 microcontrollers. The ideal candidate will have expertise in real-time operating systems (RTOS), STM32 development environments, and low-level peripheral programming. You will work closely with hardware engineers to bring high-quality, reliable embedded products to market., * Design, implement, and maintain embedded software for STM32 microcontroller-based systems / products.
- Develop applications using STM32CubeIDE, HAL, LL, low-level register programming, and bare-metal programming without an operating system.
- Work with RTOS (e.g. ThreadX or FreeRTOS, or similar) to implement multi-threaded, real-time applications.
- Interface with hardware peripherals for example UART, SPI, I2C, GPIO, ADC/DAC, timers, DMA and PWM.
- Debug complex firmware issues using logic analysers, oscilloscopes, and JTAG/SWD debuggers.
- Optimize code for performance, memory usage, and power efficiency.
- Collaborate with hardware engineers to define requirements, select components, and validate prototypes.
- Write and maintain clear technical documentation, including software design specifications and test procedures.
- Implement software updates, bug fixes, and maintenance of legacy embedded systems.
- Support integration with higher-level systems and communication protocols (SIP, UDP, TCP, TLS and SRTP etc.).
Requirements
Do you have experience in C++?, Do you have a Bachelor's degree?, * Bachelor's degree in computer engineering, Electronics, Embedded Systems, or related subject or can demonstrate years of equivalent embedded programming experience in a full-time role.
- Strong experience /skills in C/C++ for embedded systems.
- Hands-on experience with STM32 microcontrollers and development environments (preferably STM32CubeIDE or Keil, IAR, or similar).
- Solid understanding of RTOS concepts, task scheduling, inter-task communication, interrupt handling and synchronization.
- Experience with peripheral interfaces such as UART, SPI, I2C, CAN, DMA, ADC/DAC, timers, GPIO.
- Familiarity with how to work within a version control system (Git / SVN hosted using Github, etc.) and software development workflows.
- Experience with debugging tools, oscilloscopes, and logic analysers
.
Preferred Experience
- Knowledge of using communication protocols (e.g. TCP/IP) and hardware interfaces Ethernet, WiFi, BLE, SRD.
- Experience in developing firmware for IoT, security / alarm systems.
- Knowledge of low-power embedded design and battery-operated systems.
- Familiarity with unit testing frameworks for embedded systems.
- Basic understanding of safety or regulatory requirements for electronics (e.g., CE, FCC, UL).
- Experience in developing firmware to interface with cellular modules / GPS module and a knowledge of cellular operation would be an advantage
Personal Attributes
- Strong problem-solving and analytical skills.
- Ability to work independently and collaboratively in a multidisciplinary team.
- Attention to detail and commitment to producing high-quality, reliable code.
- Excellent documentation and communication skills.
Benefits & conditions
In addition to a competitive salary, we offer a range of comprehensive benefits, including a generous annual leave package, health and wellbeing programme, subsidised travel, cycle-to-work scheme, pension, and enhanced maternity leave., Job Types: Full-time, Permanent
Pay: £50,000.00-£60,000.00 per year
Benefits:
- Additional leave
- Bereavement leave
- Company events
- Company pension
- Cycle to work scheme
- Enhanced maternity leave
- Enhanced paternity leave
- Free fitness classes
- Free or subsidised travel
- Sick pay
- Store discount