Work location: Southfield, MI
Responsible for the design, implementation, integration test and debug of embedded C/C++ software for microcontrollers running on Advanced Driver Assistance Systems (ADAS) controllers. Responsible for early board bring-up and hardware/software (hw/sw) debugging of ADAS controllers. Develop low level device drivers, Board Support Package development for microcontroller real time operating system (RTOS). Develop software in compliance with a formal ASPICE/CMMi based global product engineering process (GPEP). Develop and debug BSPs, bootloader software and device drivers for microcontrollers. Develop and analyze requirements, design, implement, integrate and test C code for automotive production embedded electronic module in the vehicle environment. Develop portable, reusable and modular software compliant to automotive requirements and design guidelines. Implement customer and application specific requirements in the automotive software. Review schematics and work closely with hardware team for early board bring up and debugging sw/hw issues. Develop low level drivers for complex SOC including Flash, DDR and peripherals. Integrate SDKs from vendors like TI, NXP, Renesas and Nvidia (Bullet point should not exceed one line). Development of video pipeline interfaces for GMSL/FPD-based cameras across various SoCs. Set operational specifications and formulate and analyze software requirements. Modify existing software to correct errors, to adapt it to new hardware, or to upgrade interfaces and improve performance. Advise customer about, or perform, maintenance of software system. Analyze information to determine, recommend, and plan installation of a new system or modification of an existing system. Consult with engineering staff to evaluate interface between hardware and software, develop specifications and performance requirements, or resolve customer problems. Direct software programming and development of documentation. Store, retrieve, and manipulate data for analysis of system capabilities and requirements. Confer with data processing or project managers to obtain information on limitations or capabilities for data processing projects. Consult with customers or other departments on project status, proposals, or technical issues, such as software system design or maintenance. Coordinate installation of software system. Prepare reports or correspondence concerning project specifications, activities, or status.