Software Engineer V

Duration:  12 Months

We are seeking a highly skilled and experienced Firmware Software Engineer to join our team. In this role, you will be responsible for designing, developing, and testing firmware for cutting-edge embedded systems projects. The ideal candidate will have a strong background in C/C++ programming, real-time operating systems (RTOS), and extensive experience with various peripherals and communication protocols. As a Firmware Software Engineer, you will collaborate with cross-functional teams, gather and translate customer requirements into actionable tasks, and ensure the delivery of high-quality firmware solutions.

Key Responsibilities:

- **Firmware Development:** Architect, design, implement, and thoroughly test firmware using C/C++ languages under real-time operating systems (RTOS) for a variety of embedded systems projects.

- **Requirements Gathering:** Collaborate with customers and cross-functional teams to gather requirements and translate them into detailed and actionable tasks for firmware execution.

- **Unit Testing:** Create comprehensive unit tests to maintain high software quality standards and ensure the reliability of firmware solutions.

- **Collaboration and Mentoring:** Work closely with Electrical, Firmware, and Software engineers to define innovative solutions. Provide support, constructive feedback, and mentorship to junior team members.

- **Peripherals and Communication Protocols:** Utilize extensive experience with peripherals such as USB, SPI, MIPI CSI/DSI, I2C, UART, and GPIO. Familiarity with wireless and wired communication protocols, including USB, TCP/IP, Ethernet, Bluetooth, and 802.11.

- **Integration:** Integrate software with FPGAs, custom ASICs, and micro-controllers, ensuring seamless communication and functionality.

- **Troubleshooting:** Demonstrate outstanding troubleshooting skills, utilizing tools such as oscilloscopes and logic analyzers for hardware troubleshooting and validating firmware solutions.

- **Software Lifecycle:** Apply expertise in the entire software development lifecycle, ensuring the production of fail-safe firmware for low-power real-time system control.

- **Version Control and Collaboration:** Proficiently use version control systems like Git and collaborate effectively within a team environment, ensuring high coding standards and best practices.

Qualifications and Skills:

- Bachelor’s degree in computer science, Software Engineering, Electrical Engineering, or related field. A master’s degree is a plus.

- 6+ years of hands-on experience in embedded firmware development using C/C++ languages and extensive expertise in real-time operating systems (RTOS) such as μC/OS-II and others.

- Strong proficiency in working with various communication protocols including USB, SPI, MIPI CSI/DSI, I2C, UART, GPIO, as well as wireless and wired communication protocols like TCP/IP, Ethernet, Bluetooth, and 802.11.

- Experience in integrating software with FPGAs, custom ASICs, and micro-controllers, ensuring seamless functionality and communication.

- Exceptional troubleshooting skills, attention to detail, and ability to make necessary system changes to validate firmware solutions.

- Proficiency in version control systems like Git and extensive experience with Linux, Bash, and command-line tools.

- Excellent verbal and written communication skills, with the ability to gather and translate customer requirements into actionable firmware tasks.

- Strong mentoring skills, providing support, feedback, and guidance to junior team members.

Top 3 must-have HARD skills:

• C/C++ experience

• Experienced writing code for embedded targets

• Experience with peripherals such as USB, SPI, MIPI CSI/DSI, I2C, UART, GPIO etc.

Good to have skills:

• Ability to work on a team

• Able to take high-level requirements and break them down into tasks

• Good communication skills