Principal Software Engineer
About the role
Werfen is a growing, family-owned, innovative company founded in 1966 in Barcelona, Spain. We are a worldwide leader in specialized diagnostics in the areas of Hemostasis, Acute Care Diagnostics, Transfusion, Autoimmunity, and Transplant. Through our Original Equipment Manufacturing (OEM) business line, we research, develop, and manufacture customized assays and biomaterials. We operate directly in 30 countries, and in more than 100 territories through distributors. Our Headquarters and Technology Centers are located in the US and Europe, and our workforce is more than 7,000 strong. Our success comes from a specific focus in these rapidly evolving diagnostic areas, our commitment to customers, and our dedication to innovation and quality. We’re passionate about providing healthcare professionals the most valuable and complete solutions to improve hospital efficiency and enhance patient care. Annual revenue is approximately $2 billion and more than 7,000 employees around the world comprise our Werfen team. www.werfen.com
We are seeking a Principal Embedded Software Engineer with deep expertise in motion control systems, real-time embedded software, and low-level firmware development. This role focuses on designing, developing, and optimizing firmware for microcontroller-based systems that interface with motors, sensors, and real-time peripherals. The ideal candidate works comfortably at the boundary of hardware and software and has strong hands-on debugging skills.
Responsibilities
- Design, develop, and maintain embedded firmware for motion control systems using microcontrollers
- Develop software on bare-metal and RTOS-based systems with strict real-time constraints
- Implement and optimize stepper motor control, sensor interfaces, and deterministic control loops
- Design and implement low-level drivers, including: DMA drivers, Interrupt service routines (ISRs), Timer, GPIO, and peripheral drivers
- Architect and debug RTOS-based systems, including task scheduling, synchronization, memory usage, and ISR interactions
- Collaborate closely with hardware engineers to: Read and interpret schematics and datasheets, Perform hardware bring-up and board-level debugging, Interface with and debug embedded peripherals such as: SPI, I²C, CAN bus, UART, PWM, GPIO
- Apply strong knowledge of computer architecture, including: CPU pipelines, cache behavior, memory hierarchies, Microcontroller buses and peripheral architectures
- Perform advanced debugging using: JTAG-based debuggers, Oscilloscopes, Logic analyzers, Function generators
- Optimize firmware for performance, reliability, and real-time determinism
- Create and maintain technical documentation, including design descriptions and test procedures
- Mentor junior engineers and participate in technical design and code reviews
Qualifications
- Bachelor's Degree plus a minimum of 10 years of related experience or Master's Degree plus a minimum of 8 years of related experience or waiver based on experience.
- Degree should be in a technical discipline such as Chemistry, Math, Physics, Engineering, or Computer Science.
- Proficiency with a personal computer and software packages.
- Ability to administer software engineering tools; configuration management, requirements management, and defect management.
- Ability to operate instrumentation.
- Possesses strong written and oral communications skills.
- Ability to work in a team environment of software developers and testers.
- Proficient in code languages found in product development.
Skills
- Proficiency with a personal computer and software packages
- Ability to administer software engineering tools; configuration management, requirements management, and defect management
- Ability to operate instrumentation
- Possesses strong written and oral communications skills
- Ability to work in a team environment of software developers and testers