Key Responsibilities
- Design, develop, and test high-performance and scalable software solutions.
- Create and maintain technical documentation including requirement specifications, design documents, API specifications, and user guides.
- Develop and optimize multithreaded applications for performance and reliability.
- Design and implement software APIs and interfaces.
- Work on low-level programming, including device drivers and register-level interfaces.
- Develop software for embedded systems and multiple platforms such as x86 and RTOS.
- Integrate and customize open-source software components.
- Collaborate with hardware teams to interface with embedded subsystems.
- Debug and troubleshoot issues at device and board level using tools like JTAG debuggers.
- Ensure software quality through rigorous testing and validation.
Required Skills & Qualifications
- Strong proficiency in C and C++ programming.
- Experience with multithreaded software development in Linux environments.
- Solid understanding of software design, data structures, and algorithms.
- Experience in API design and development.
- Hands-on experience with low-level driver development and register programming.
- Familiarity with bootloaders (e.g., U-Boot).
- Experience working with embedded IP subsystems such as Ethernet, PCIe, SPI, I2C, USB, GPIO, DDR, SDRAM, and DMA.
- Strong debugging skills, including hardware-level debugging using JTAG.
- Experience with x86 and RTOS-based systems.