About This Role
This role involves leading the development and support of all firmware within the Electrical Engineering group, eventually becoming the group's firmware owner. The engineer will act as a technical bridge between sales, customers, and the engineering team, providing support and training, while also implementing firmware changes on legacy products and supporting the development of new electronic boards.
Responsibilities
- Lead the development and support of all firmware in the Electrical Engineering group
- Act as the technical bridge between sales, customers, and engineering
- Provide pre and post sales support
- Train customers to interface with equipment
- Implement firmware changes on legacy products still in production, including analysis of older designs with limited documentation
- Support the development of new electronic boards, from pin definition through firmware delivery
- Develop bare metal C/C++ firmware for STM32H7 microcontrollers, from pin assignment and board bring up with hardware engineers through peripheral drivers and debugging (JTAG, oscilloscopes, logic analyzers, etc.)
- Develop and improve the advanced PC based C++ graphical user interface, which supports multiple communication interfaces (Ethernet, CAN, serial), command and scripting operation, and real time graphing
- Create and maintain documentation: initial design requirements, firmware architecture and design documents, interface specifications (command sets and protocols), test plans and results, release notes, and customer interface guides
- Write clean, well structured, well commented code, managed in Git with full traceability of changes to requirements and releases
Requirements
- Strong analytical skills and sound engineering judgment under ambiguity
- Ability to quickly learn and take ownership of existing code bases, including those with limited documentation
- Self directed, able to work as the group's sole firmware engineer and set priorities across multiple projects
- Clear communication with customers and internal teams, including teaching customer engineers to use interfaces
- Commitment to technical excellence, documentation, and knowledge transfer
- Customer oriented thinking and ability to represent the company in technical discussions
- Bachelor's degree in electrical engineering, computer engineering, or a related field (MS desired)
- Minimum of 8 years of experience in firmware development and application support for complex electromechanical systems / control systems
- Strong proficiency in C and C++, including Windows application development
- Experience with bare metal firmware on STM32 or similar ARM Cortex M microcontrollers
- Understanding of microcontroller architecture and digital circuit design