Responsibilities:
Design, code and implement software for embedded devices and systems with operator-controlled Networked Power Systems (DDS).
Debug, troubleshoot, and isolate software issues.
Ability to read schematics and use standard debugging equipment: oscilloscope, logic analyzer, multimeter.
Participate in design and peer reviews for solutions.
Maintain high standards of software quality with the team by adhering to good practices and habits of configuration control.
Develop and perform tests and test procedures to verify embedded system functionality.
Required:
Proficiency in C/C++ with strong software development, optimization, user & kernel mode debugging skills.
Working knowledge of git version control system for code release and development.
OS fundamentals and system architecture understanding like low-level interfaces such as buses, controllers, interrupts etc.
Working experience on any one major Linux distro like Ubuntu, RedHat, SUSE, etc.
Working experience on any one major real-time controller development system/OS like Texas Instruments/Segger/FreeRTOS/VxWorks.
Strong interpersonal & communication skills working with cross-functional engineering teams (mechanical, electrical) to deliver high-quality systems.
Bachelor's degree in computer engineering, electrical engineering or related (or equivalent experience) with 2+ years of relevant experience.
Ways to Stand Out From the Crowd:
Practical knowledge of Python and CAN bus / J1939 & associated tools like CANalyzer or other CAN analysis and debugging tools.
Experience in HW & SW stack bring up of both custom and off-the-shelf controller designs.
Previous experience around hardware interfaces such as PCIe, SPI, I2C/I3C etc
Linux A/B download & secure boot solutions on x86 & ARM class platforms.
Embedded boot solutions on real-time TI controller class platforms
Experience in programmable logic solutions using VHDL or similar.