We are seeking an Embedded Software Engineer with hands-on C/C++ programming skills and good systems engineering or signal processing experience. This person will be developing a next-generation molecular diagnostic system platform.
ESSENTIAL JOB RESPONSIBILITIES:
Be a key contributor on the software engineering team that leads development efforts for embedded software for commercial products and in-house research.
Prototype, design, implement and maintain software applications.
Develop embedded software driver modules for hardware components.
Work on projects that will involve robotics/hardware interfacing and control, factory automation, mathematical data analysis and data acquisition and storage.
Participate in cross-functional project teams with scientists, technical support and other engineers to resolve software issues.
Work with multi-discipline teams on new production introduction project while adhering to software development and source control processes.
Develop, design, and implement embedded software for robots and other automation equipment.
Document software; write technical specifications for interfaces and testing.
3-6 years of relevant professional experience required
BS or MS in Computer Science or Electrical Engineering with a specialization in real-time embedded systems, or equivalent combination of education and experience to perform at this level.
KNOWLEDGE AND SKILLS:
Experienced C, C++ programmer with experience in real-time / embedded system design, debug, and testing in an Embedded Linux / RTOS environment.
Experience in developing embedded applications for ARM, X86 architectures is required.
Experience in embedded interfaces like USB, SPI, I2C, UART is required.
Strong debugging skills and familiarity in using debuggers, scopes/logic analyzers are required.
Working knowledge of robotics (mechanical controls for fluidics), interfacing stepper/servo motor control, and system engineering along with architectural design experience.
Solid understanding of communications such as CAN, TCP/IP, UDP, serial or strong experience with MATLAB
Solid understanding of concurrency, threading and data structures.
Ability to work with existing systems and process to optimize and innovating.
Signal Processing experience
Medical device or regulated industry experience is a plus
Experience working with web, cloud, and/or mobile application is a plus