Job Title: Embedded Software Developer
Location: Plymouth, MI
Duration: Long Term
Client: Cognizant
Job Summary
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
- Renesas RH850
- Similar automotive MCU platforms
- 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.
- Battery charging/discharging management.
- 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 | Infineon AURIX, NXP S32K/S32G, Renesas RH850 |
Debugging Tools | Lauterbach TRACE32, Vector CANoe, CANalyzer, CANape |
Model-Based Development | MATLAB, Simulink, Stateflow |
Functional Safety | ISO 26262, ASPICE, MISRA C/C++ |
Testing | Unit Testing, SIL, HIL, Integration Testing |
Configuration & ALM | Git, GitLab, Jenkins, Jira, Polarion, IBM DOORS |
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.