Embedded C++ Developer
Role details
Job location
Tech stack
Job description
- Design, develop, test, and maintain embedded software using Embedded C++ and C.
- Develop firmware for microcontroller platforms such as ARM Cortex-M, STM32, NXP, TI, AVR, and PIC.
- Design and implement low-level device drivers and hardware abstraction layers (HAL).
- Develop embedded applications for real-time systems using RTOS (FreeRTOS, VxWorks, ThreadX, etc.) or bare-metal programming.
- Interface with hardware peripherals including sensors, actuators, displays, and communication modules.
- Implement communication protocols such as SPI, I2C, UART, CAN, USB, Ethernet, and other serial interfaces.
- Debug firmware using tools including JTAG, SWD, oscilloscopes, logic analyzers, and protocol analyzers.
- Collaborate with hardware engineers during board bring-up, validation, and troubleshooting.
- Optimize firmware for performance, memory utilization, and power efficiency.
- Participate in code reviews, unit testing, integration testing, and documentation.
- Maintain source code using Git and support CI/CD processes for embedded software development.
- Follow embedded software development best practices, coding standards, and quality processes.
Requirements
-
Bachelor''s or Master''s degree in Computer Science, Computer Engineering, Electronics Engineering, or a related field.
-
3+ years of hands-on experience in Embedded Software/Firmware Development.
-
Strong programming skills in Embedded C++ and Embedded C.
-
Experience with ARM Cortex, STM32, NXP, TI, AVR, PIC, or similar microcontroller platforms.
-
Strong understanding of embedded system architecture and hardware-software interaction.
-
Experience developing low-level drivers and firmware.
-
Hands-on experience with communication protocols:
-
SPI
-
I2C
-
UART
-
CAN
-
USB
Experience with RTOS or bare-metal embedded development.
Strong debugging and troubleshooting skills using embedded development tools.
Knowledge of memory management, interrupts, timers, DMA, and bootloaders.
Experience using Git or similar version control systems.