Embedded Software Engineer - Vehicle Software
Develop and test real-time embedded software for autonomous battery-electric rail vehicles, integrating sensors, hardware interfaces, and control systems. The early-career role requires systems programming experience, embedded or real-time familiarity, and a bachelor's degree or equivalent practical experience.
About the job
Responsibilities
- Develop and maintain embedded software for bare-metal and RTOS-based systems.
- Implement and test digital communication protocols including SPI, I2C, UART, and CAN.
- Contribute to state machines and command/control software for autonomous vehicle systems.
- Write reliable, memory-conscious embedded software, primarily in Rust.
- Integrate, debug, and validate hardware-software interfaces with hardware engineers.
- Develop unit and integration tests using hardware test stands.
- Debug software with standard embedded development tools and techniques.
- Participate in code reviews, design discussions, documentation, and continuous improvement of engineering practices.
Requirements
- Bachelor's degree in Computer Engineering, Electrical Engineering, Computer Science, Robotics, or a related technical field, or equivalent practical experience.
- Programming experience in C, C++, Rust, or another systems programming language through coursework, internships, projects, or professional experience.
- Familiarity with embedded systems, microcontrollers, or real-time software development.
- Understanding of digital communication protocols such as SPI, I2C, UART, or CAN.
- Familiarity with state machines, interrupts, memory management, and hardware interfaces.
- Hands-on experience debugging technical systems through academic projects, internships, student teams, personal projects, or professional work.
- Strong problem-solving skills and interest in working directly with hardware.
- Willingness to learn Rust and modern embedded software development practices.
Nice-to-haves
- Internship, co-op, research, or project experience developing embedded software.
- Bare-metal or RTOS-based development experience.
- Familiarity with oscilloscopes, logic analyzers, debuggers, or other hardware debugging tools.
- Experience with robotics, autonomous systems, automotive, aerospace, industrial automation, or similar hardware-focused projects.
- Exposure to control systems, PID controllers, or motion control.
- Coursework or project experience in electrical engineering or digital electronics.
- Rust experience or interest in developing production embedded software in Rust.
Compensation
- Target salary range: $132,000–$152,000 USD.
Skills
Rust, C, C++, Embedded Systems, Microcontrollers, Rtos, Spi, I2C, Uart, Can, State Machines, Interrupts, Memory Management, Oscilloscopes, Pid Controllers
Similar jobs
Embedded Engineering jobsDesigns and integrates C++ autonomy software with UAV hardware, autopilots, sensors, and communication systems, supporting SIL/HIL validation and live flight testing. Requires 3+ years of robotics integration experience, U.S. citizenship, and security-clearance eligibility.
Integrates autonomy and robotic software with UAV hardware, sensors, autopilots, and communication systems across SIL, HIL, and live flight-test environments. Requires a relevant bachelor’s or master’s degree, 3+ years of robotics integration experience, C++, Linux, and U.S. citizenship with clearance eligibility.
Develops, deploys, and maintains software for autonomous vehicles, integrating sensors, autopilots, and perception modules with hands-on field testing. Requires 5+ years experience or MS/PhD, C++/Python/Linux proficiency, and robotics knowledge.
Integrates satellite flight software and hardware with mission management and Command & Control platforms. The role requires strong debugging and software integration skills, relevant engineering education, and at least three years of experience with satellite systems or similarly complex hardware-software integrations.
Develops reliable embedded software and custom device solutions, integrating vendor components, sensors, operating systems, and communication interfaces. Requires a bachelor's degree and at least three years of relevant experience with C/C++, embedded Linux, debugging, and CI/CD tools.