Actively hiringPosted today

Firmware Engineer (Embedded C / RTOS / STM32)

RecruitKarbengaluru

Skills we’re looking for

Embedded CSTM32RTOSFreeRTOSARM Cortex-MUARTSPII2CCANEmbedded SystemsC++

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