Title: Embedded Software Developer – Battery Management Systems (BMS)
Location: Plymouth, MI (Onsite)
Industry: Automotive / Electric Vehicles (EV)
Job Overview
We are seeking an experienced Embedded Software Developer with expertise in Battery Management Systems (BMS) to design, develop, integrate, and validate embedded software for automotive battery management applications used in Electric Vehicles (EVs) and Hybrid Electric Vehicles (HEVs).
The ideal candidate will have strong hands-on experience in Embedded C/C++, automotive microcontrollers, CAN/CAN FD communication, ECU diagnostics, and real-time embedded software development. Experience with EV battery management, battery monitoring, protection mechanisms, and functional safety is highly preferred.
Key Responsibilities
- Design, develop, and maintain embedded software for automotive Battery Management Systems (BMS).
- Develop software functions for battery monitoring, State of Charge (SOC), State of Health (SOH), State of Power (SOP), cell balancing, and battery protection.
- Implement battery safety features, fault management, contactor control, high-voltage interlock, and thermal management interfaces.
- Develop production-quality embedded software using C/C++.
- Develop and integrate low-level drivers, middleware, application software, and hardware abstraction layers.
- Implement communication protocols including CAN, CAN FD, LIN, SPI, I2C, and UART.
- Implement automotive diagnostics using UDS (ISO 14229), DTCs, and ECU diagnostic services.
- Integrate software with battery monitoring ICs, sensors, actuators, and vehicle ECUs.
- Perform debugging and troubleshooting using Vector CANoe/CANalyzer, Lauterbach TRACE32, oscilloscopes, and logic analyzers.Support unit testing, software integration, SIL, HIL, and vehicle-level validation.
- Perform root-cause analysis and resolve software defects.
- Follow automotive software development standards, including AUTOSAR Classic, ASPICE, and ISO 26262.
- Participate in software architecture reviews, code reviews, requirements analysis, and technical documentation.
Required Qualifications
- Bachelor's or Master's degree in Electrical Engineering, Electronics, Computer Engineering, Computer Science, or a related field.
- Strong hands-on programming experience in Embedded C/C++.
- Experience developing software for automotive embedded controllers or ECUs.
- Experience with automotive microcontrollers such as:
- Infineon AURIX
- NXP S32K/S32G
- Strong understanding of real-time embedded systems, interrupts, timers, memory management, ADC, PWM, GPIO, watchdogs, and boot initialization.
- Hands-on experience with CAN/CAN FD and automotive communication protocols.
- Knowledge of UDS, DTCs, diagnostic sessions, and ECU diagnostics.
- Experience with embedded software debugging and automotive network analysis tools.
Preferred BMS Experience
Candidates with experience in the following areas will be strongly preferred:
- Automotive Battery Management Systems (BMS) for EV/HEV/PHEV applications.
- Lithium-ion battery architectures and battery pack management.
- Cell voltage, current, and temperature monitoring.
- SOC, SOH, and SOP algorithms.
- Cell monitoring and balancing.
- Contactor and pre-charge control.
- High-voltage safety and isolation monitoring.
- Battery thermal protection and management.
- Over-voltage, under-voltage, over-current, and short-circuit protection.
- BMS diagnostics and fault management.
Technical Skills & Tools
Category
Technologies
Programming
Embedded C, C++, Python
Automotive
AUTOSAR Classic, UDS, CAN, CAN FD, LIN
Communication
SPI, I2C, UART
Microcontrollers
Model-Based Development
MATLAB, Simulink, Stateflow
Functional Safety
ISO 26262, ASPICE, MISRA C/C++
Testing
Unit Testing, SIL, HIL, Integration Testing
Configuration & ALM
Preferred Skills
- Experience developing safety-critical automotive embedded software.
- Understanding of ASIL-oriented software development and functional safety concepts.
- Knowledge of MISRA C/C++ coding guidelines and static code analysis.
- Experience with MATLAB/Simulink and model-based software development.
- Knowledge of bootloaders and ECU flashing.
- Familiarity with automotive ECU cybersecurity.
- Strong debugging, troubleshooting, and root-cause analysis skills.
- Ability to work collaboratively with hardware, systems, controls, validation, and functional safety teams.
Ideal Candidate Profile
We are looking for an Embedded Software Engineer with strong automotive ECU development experience and preferably direct hands-on BMS development experience. Candidates with EV battery management, Embedded C/C++, CAN/CAN FD, automotive microcontrollers, and functional safety backgrounds will be given preference.