
Senior Embedded Software Engineer
INOVIO Pharmaceuticals, Inc.
Job description
Job summary
The Senior Embedded Software Engineer is responsible for the design, development, verification, maintenance, and sustaining support of safety-critical embedded software for electroporation and drug delivery medical devices. This role focuses on embedded C++ development, platform software, device drivers, electromechanical control, drug delivery, pulse generation, motor control, UI/display systems, battery powered systems, cybersecurity, hardware bring-up, and compliance with IEC 62304 and other applicable medical device standards.
Essential job functions and duties
-
Design and implement electromechanical control systems, including motor control, battery management, board bring up, bootloaders, firmware updates, diagnostics, and inter-processor communications
-
Design, develop, and maintain safety-critical embedded software for medical devices using modern C++ on microcontroller, RTOS, Embedded Linux, and Android platforms.
-
Develop platform software, BSPs, middleware, and device drivers supporting SPI, I2C, UART, USB, ADC/DAC, PWM, timers, displays, touchscreens, motors, sensors, and communication interfaces.
-
Develop embedded UI/display applications and system-level software features
-
Design and implement software controlling electroporation therapy delivery.
-
Develop deterministic real-time software supporting therapy delivery, closed-loop control systems, safety monitoring, and precision timing requirements
-
Develop and maintain software lifecycle documentation, including requirements specifications, software designs, risk controls, verification protocols, and test reports.
-
Perform code reviews, static analysis, unit testing, integration testing, and software verification activities.
-
Implement cybersecurity controls, including secure boot, authentication, encryption, vulnerability management, and secure software update mechanisms
-
Develop firmware, manufacturing test software, diagnostic tools, and engineering utilities to support product development, verification, manufacturing, debugging, compliance testing, and field service activities
-
Troubleshoot hardware and software issues using oscilloscopes, logic analyzers, and other laboratory equipment
-
Collaborate with systems, electrical, mechanical, quality, regulatory, and cybersecurity teams
-
Participate in system requirements development, architecture definition, hazard analysis, risk control implementation, and allocation of system requirements to software components
-
Support CI/CD pipelines, automated build systems, configuration management, and continuous software process improvements initiatives
-
Provide sustaining engineering support for released products, including issue investigations, root cause analysis, field corrections, cybersecurity updates, and design improvements
-
Complete other engineering duties and responsibilities as assigned.
Minimum requirements
-
BS or MS in Computer Engineering, Electrical Engineering, Computer Science, or a related technical field
-
7+ years of experience in embedded software development, including development of complex real-time embedded systems using modern C++.
-
Experience developing embedded applications on ARM Cortex-M processors, Linux, and/or Android platforms
-
Strong experience developing real-time embedded applications using RTOS frameworks such as ThreadX, FreeRTOS, RTX, Micrium OS, or similar operating systems.
-
Proven experience developing platform software, Board Support Packages (BSPs), hardware abstraction layers, and device drivers.
-
Experience working with electromechanical systems, motor control, battery-operated devices, displays, touchscreens, and sensor integration
-
Experience developing embedded GUI/UI applications
-
Strong debugging and troubleshooting skills across applications, middleware, operating system, and driver layers.
-
Ability to read electrical schematics, hardware design documentation, and component datasheets
-
Hands-on experience with oscilloscopes, logic analyzers, protocol analyzers, and other hardware test equipment
-
Experience with embedded development tools including Keil, IAR, GCC, Visual Studio, Android Studio, and Linux toolchains
-
Knowledge of embedded cybersecurity principles, including secure coding practices, threat modeling, vulnerability assessment, encryption, authentication, and secure firmware/software updates
-
Experience with source control, automated builds, issue tracking systems, and unit test frameworks
-
Experience developing safety-critical or regulated software
-
Strong working knowledge of IEC 62304, IEC 81001-5-1, ISO 14971, IEC 60601, FDA cybersecurity guidance, software risk management, design controls, verification and validation, and requirements traceability
-
Experience developing connected devices with wireless communications, cloud connectivity, and secure data exchange
-
Familiarity with C#, Python, automated test frameworks, and manufacturing test systems