Firmware Engineer
Location: Bangalore, India
Workplace Type: Onsite
About the Role
We are seeking a highly motivated and experienced Firmware Engineer to join our dynamic team in Bangalore. As a Firmware Engineer, you will be responsible for designing, developing, and testing firmware for embedded systems. You will work closely with hardware and software engineers to ensure the seamless integration of firmware into our products. This role requires a strong understanding of systems and BIOS, excellent programming skills, and experience with RTOS and Linux environments. The ideal candidate will have a passion for embedded systems and a proven track record of delivering high-quality firmware solutions.
Key Responsibilities
- Develop, test, and debug firmware for embedded systems.
- Collaborate with hardware and software engineers to integrate firmware into products.
- Write clean, efficient, and well-documented code in C and assembly language.
- Design and implement multi-threaded applications.
- Develop kernel modules/drivers for Linux (preferably embedded) and RTOS/FreeRTOS.
- Debug and analyze core dumps in Linux and RTOS environments.
- Work with communication protocols such as I2C, SPI, and UART.
- Implement TCP/IP socket programming in an RTOS or Linux environment.
- Participate in code reviews and contribute to improving code quality.
- Troubleshoot and resolve firmware-related issues.
- Stay up-to-date with the latest trends and technologies in embedded systems.
- Contribute to the development of BSP and drivers.
Required Skills & Qualifications
- 5 to 7 years of experience in firmware development, with a solid understanding of systems and BIOS.
- Excellent programming skills in C, RTOS, data structures, algorithms, and assembly language.
- Strong experience in multi-threaded programming.
- Proficiency in operating system internals, including synchronization primitives, memory management, and multi-threaded applications.
- Expertise in developing kernel modules/drivers, and debugging and analyzing core dumps in Linux (preferably embedded) and RTOS/FreeRTOS.
- Exposure to assembly coding and a good understanding of processor architectures such as ARM, X86, or Xtensa.
- Solid knowledge and experience with any RTOS.
- Strong concepts in IPC mechanisms, OS concepts, tasks, scheduling, and memory management.
- Experience with communication protocols like I2C, SPI, and UART.
- Proficiency in TCP/IP socket programming in an RTOS or Linux environment.
- Experience with BSP and driver development is preferred.
- Strong debugging skills and knowledge of the embedded software development lifecycle.
- Good interpersonal communication skills and experience working in a team.
- Bachelor's degree in Computer Science, Electrical Engineering, or a related field.