Firmware Engineer (Embedded C / RTOS / STM32)
RecruitKarbengaluru
Skills we’re looking for
About this role
Job Overview
We are looking for a skilled Firmware Engineer to design, develop, debug, and maintain embedded firmware for microcontroller-based products. The ideal candidate should have strong hands-on experience in Embedded C, STM32 microcontrollers, RTOS, and peripheral interfacing, along with a good understanding of embedded systems and debugging.
Key Responsibilities
Design and develop embedded firmware for STM32-based microcontroller systems.
Develop efficient, reliable, and maintainable firmware using Embedded C/C++.
Work with RTOS for task scheduling, inter-task communication, synchronization, and resource management.
Develop and integrate drivers for peripherals such as UART, SPI, I2C, GPIO, ADC, PWM, Timers, CAN, etc.
Configure and work with STM32 MCU peripherals using STM32CubeIDE/CubeMX or equivalent tools.
Debug firmware using JTAG/SWD, logic analyzers, oscilloscopes, and other debugging tools.
Perform root-cause analysis of firmware, hardware-interface, and system-level issues.
Develop and execute unit, integration, and system-level testing for embedded firmware.
Optimize firmware for memory usage, performance, power consumption, and real-time response.
Collaborate with hardware, electronics, systems, and testing teams during product development.
Participate in code reviews and maintain technical documentation.
Support firmware integration, validation, and product releases.
Required Skills & Experience
Bachelor's degree in Electronics, Electrical, Instrumentation, Computer Engineering, or a related field.
2–5 years of hands-on experience in embedded firmware development.
Strong programming skills in Embedded C.
Good experience with STM32 microcontrollers and ARM Cortex-M architecture.
Practical experience with at least one RTOS, preferably FreeRTOS.
Strong understanding of microcontroller peripherals and communication protocols:
UART
SPI
I2C
CAN
GPIO
ADC/PWM/Timers
Experience with interrupts, DMA, timers, watchdogs, memory management, and low-level programming.
Hands-on experience with firmware debugging and troubleshooting.
Familiarity with Git/version control and embedded development workflows.
Good understanding of embedded systems concepts, including real-time constraints, concurrency, and state machines.
Good to Have
Experience with STM32 HAL/LL libraries and STM32CubeMX/CubeIDE.
Knowledge of bootloaders, firmware updates, and OTA updates.
Experience with CAN/CAN-FD, Modbus, USB, Ethernet, or other industrial/automotive protocols.
Familiarity with MISRA-C, static analysis, and coding standards.
Experience with Embedded Linux or other embedded platforms.
Exposure to automotive, industrial automation, IoT, consumer electronics, or robotics products.
Understanding of hardware schematics and ability to work closely with hardware engineers.
Candidate Profile
The ideal candidate should have:
Strong problem-solving and debugging skills.
Good understanding of hardware–software interaction.
Ability to analyze issues at both firmware and system level.
Strong attention to code quality and reliability.
Good communication and teamwork skills.
Ability to work independently as well as collaboratively in a product development environment.
Key Technologies
Embedded C | STM32 | ARM Cortex-M | RTOS | FreeRTOS | STM32CubeIDE | STM32CubeMX | UART | SPI | I2C | CAN | GPIO | ADC | PWM | DMA | JTAG/SWD | Git
Employment Details
Experience: 2–5 Years
Job Type: Full-time
Work Mode: remote
Location: Bengaluru