Summary: Seeking a Firmware Engineer to plan, design, test, deploy, and maintain firmware for multithreaded, microcontroller-based systems.
Job Requirements:
3+ years of embedded systems development in C/C++, including object-oriented programming and building scripts with CMake
Experience in multi-threaded (RTOS) and bare metal application development and debugging; FreeRTOS experience is a plus
Proficiency with hardware debugging tools (e.g., multimeters, oscilloscopes, logic analyzers) and software debugging techniques (e.g., prototyping, gdb servers)
Familiarity with Git for version control and maintaining software documentation using Doxygen
Hands-on experience with communication protocols such as UART, RS-485, MODBUS, I2C, SPI, and USB
Experience with ARM-based processors, particularly STM32 MCUs
Knowledge of developing automated testing environments and digital/analog circuit development
Experience with PLC ladder logic, GUI creation, and desktop application development using modern programming languages (e.g., Java, Python)
Preferred Skills:
PCB design experience
Job Responsibilities:
Plan, design, test, deploy, and maintain firmware for multithreaded microcontroller-based systems
Maintain documentation on developed software including test procedures and verifications
Develop and run tests to ensure firmware functionality through manual and automated strategies
Collaborate with cross-functional teams to create stand-alone instruments involving basic electrical circuit design
Engage in hands-on development of prototypes to ensure optimal performance of instruments
Design software that runs on PLCs as well as auxiliary software for firmware solutions