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