Embedded Software Engineer
Newport News, VA, VA
Full Time
Experienced
Position Summary
ivWatch is seeking an Embedded Software Engineer to design, develop, test, and maintain embedded software for our medical device products. This role will work closely with software, electrical, systems, clinical, and product teams throughout the product development lifecycle.The ideal candidate has strong experience developing embedded systems in C/C++, working directly with microcontrollers and hardware, and building reliable, maintainable software for resource-constrained systems.
Responsibilities
Embedded Software Engineer duties include, but are not limited to:- Participate in the architecture, design, implementation, testing, and maintenance of reliable, high-quality embedded software for ivWatch medical devices.
- Develop embedded software in C and/or C++ for microcontroller-based systems.
- Perform register-level programming and develop or integrate low-level peripheral drivers, including SPI, I2C, UART, GPIO, timers, ADCs, DMA, and other MCU peripherals.
- Design and debug interrupt-driven and real-time embedded software.
- Develop software using FreeRTOS or similar real-time operating systems.
- Build, cross-compile, and debug firmware for microcontroller platforms, including ARM Cortex-M.
- Read and interpret electrical schematics to understand hardware interfaces, signal paths, component connections, and MCU configurations in support of firmware development and debugging.
- Use laboratory equipment such as oscilloscopes, logic analyzers, multimeters, and signal generators to troubleshoot hardware and software interactions.
- Participate in software architecture, design, and peer code reviews.
- Develop modular, maintainable, and testable software using established software engineering practices.
- Develop unit tests in C/C++ and apply best practices, including boundary and edge-case testing.
- Develop Python-based tools and automated tests to support development, verification, debugging, and data analysis.
- Use Git for version control and collaborative software development.
- Investigate and correct software defects identified during development, verification and validation, and in commercialized products.
- Ensure software development activities comply with applicable regulatory requirements, internal procedures, and software engineering best practices.
- Contribute to the collaborative and fast-moving engineering culture of a growing medical device company.
Required Qualifications
- Bachelor's degree in Computer Engineering, Electrical Engineering, Computer Science, Software Engineering, or a related technical discipline.
- Professional experience developing embedded software using C and/or C++.
- Ability to read and understand electrical schematics and apply them to firmware development and hardware/software troubleshooting.
- Strong debugging, problem-solving, and analytical skills.
Preferred Qualifications
- Understanding of microcontroller architecture and register-level programming.
- Experience with interrupt handling, concurrency, timing, and real-time embedded systems.
- Experience with embedded peripherals and communication interfaces such as SPI, I2C, UART, GPIO, timers, DMA, and ADCs.
- Experience debugging embedded systems using oscilloscopes, logic analyzers, multimeters, and other laboratory equipment.
- Experience with embedded software build systems and cross-compilation toolchains.
- Familiarity with CMake.
- Experience writing unit tests in C/C++, including boundary and edge-case testing.
- Experience developing test automation or engineering tools using Python.
- Familiarity with FreeRTOS or other real-time operating systems.
- Proficiency with Git and collaborative version control workflows.
- Experience developing software for regulated products or medical devices.
Salary Range: $75,000 - $82,000
Apply for this position
Required*