As an Firmware Engineer, you will collaborate in the design, implementation, and verification of new drives for the range, as well as the implementation of new features and maintenance of the entire range. This position requires strong firmware skills and a deep understanding of the physics underlying motion control technology.
Tasks
Primary Responsibilities
Develop and maintain firmware for Novanta servo drives.
- Implement new features for existing products, including additional feedback interfaces, communication protocols, and state-of-the-art motion control algorithms.
- Participate in the design and development of new products for the standard range.
- Implement proofs of concept for novel products or features.
- Develop and maintain continuous integration/development libraries.
- Collaborate closely with the hardware team to assist with component selection and review hardware schematics.
- Work closely with the software team to create engaging libraries and applications for our customers.
- Collaborate closely with the testing team to define test plans for Novanta products.
- Review and improve external documentation (product manuals, datasheets, etc.).
- Improve internal documentation (covering architecture, continuous integration/development, detailed design, etc.).
Requirements
Required Experience, Education and Skills
Proficiency in C, including C in resource-constrained embedded environments.
- Bachelor's degree in Electrical Engineering, Computer Science, Telecommunications, or another related technical discipline.
- Minimum of 1 year working as a Firmware engineer.
- Fluency in software fundamentals, including software design and maintainability.
Proficiency in microprocessor bare-metal development with real-time constraints.
- Hands-on experience in new hardware board bring-up, system debugging, and code optimization.
- Experience with MCU peripherals: I2C, SPI, CAN, UART, GPIO, etc.
- Understanding of schematics, datasheets, and application notes.
- Experience in the use of laboratory instruments.
- Experience with version control software.
- Experience in software testing procedures.
- Fluent written and spoken English.