Job Description: Firmware / Embedded Software Engineer
Role Overview
We are looking for a skilled Embedded Software Engineer to design, develop, and maintain firmware for microcontroller-based embedded systems. The role involves low-level programming in Embedded C, working with RTOS, and implementing communication protocols while interfacing with various hardware peripherals.
Key Responsibilities
- Design, develop, and debug embedded firmware using Embedded C
- Develop and maintain applications on RTOS-based systems (FreeRTOS, ThreadX, Zephyr, etc.)
- Implement and maintain communication protocols such as UART, SPI, I2C, CAN, USB, Ethernet, MQTT, or Modbus
- Work with microcontrollers (ARM Cortex-M, STM32, NXP, TI, Microchip, etc.)
- Configure and interface peripherals: GPIO, Timers, ADC, DAC, PWM, Watchdog, DMA
- Perform board bring-up and low-level driver development
- Debug using JTAG/SWD, logic analyzers, oscilloscopes
- Optimize firmware for performance, memory, and power consumption
- Collaborate with hardware, QA, and system teams
- Follow coding standards, documentation, and version control (Git)
Required Skills & Qualifications
- Strong proficiency in Embedded C
- Hands-on experience with RTOS concepts (tasks, scheduling, semaphores, mutexes, queues, interrupts)
- Experience with microcontroller architectures
- Solid understanding of embedded peripherals and registers
- Experience implementing communication protocols
- Familiarity with bare-metal and RTOS-based firmware
- Debugging skills using hardware and software tools
- Understanding of memory management, linker scripts, and boot process
Good to Have
- C++ for embedded systems
- Embedded Linux exposure
- Bootloaders and firmware update mechanisms (OTA)
- Low-power design techniques
- Safety or automotive standards (MISRA, ISO 26262)
- Experience with CI/CD for embedded systems
Education
- Bachelor's degree in Electronics, Computer Engineering, or related field
Experience Level (Customize)