Embedded Software Engineer
Position Description
The Embedded Software Engineer will design, develop, test, and maintain embedded software for next-generation products. The ideal candidate will have strong C/C++ programming skills, experience developing embedded Linux software, and a solid understanding of hardware/software integration. This role will work closely with electrical, mechanical, systems, and test engineers to translate product requirements into reliable, production-ready embedded software.
Essential Duties & Responsibilities
- Design, develop, debug, and maintain embedded software for microcontroller- and processor-based systems.
- Develop software primarily in C/C++, including low-level drivers, hardware interfaces, application code, and system services.
- Develop, configure, customize, and maintain embedded Linux systems and associated build tools.
- Integrate and configure real-time operating systems (RTOS), middleware, communication stacks, and third-party software components.
- Develop and maintain firmware for interfaces such as SPI, I²C, UART, USB, Ethernet, and GPIO.
- Collaborate with hardware engineers to bring up new circuit boards and troubleshoot hardware/software integration issues.
- Analyze system requirements and translate them into robust software architectures and implementation plans.
- Perform unit testing, integration testing, debugging, and performance optimization.
- Use embedded debugging tools, oscilloscopes, logic analyzers, and other laboratory equipment to diagnose system-level issues.
- Use Git for source-code management, branching, merging, and code collaboration.
- Use JIRA to track software development tasks, defects, requirements, and project progress.
- Use development tools like Visual Studio Code (VS Code) and others to implement and debug embedded software.
- Participate in code reviews, design reviews, and software development process improvements.
- Develop and maintain technical documentation, including software specifications, design documentation, and test procedures.
- Support product verification, validation, manufacturing, and field-deployment activities.
- Identify and resolve software defects and contribute to continuous improvement of product reliability and performance.
PM21