Remote job
Senior Embedded Software Engineer
Job details
About this role
Role overview
Build and evolve embedded software for autonomous transit vehicles, where dependable firmware is a core part of system safety. You will own important areas of the embedded platform, guide complex work across hardware and software teams, and help establish engineering practices for production systems.
Responsibilities
- Design, prototype, test, and maintain firmware for safety-critical vehicle systems. - Develop real-time applications and tune latency, throughput, memory use, power consumption, and reliability on constrained hardware. - Define communications between microcontrollers, sensors, and main compute using protocols such as SPI, UART, I2C, CAN, and TCP/UDP. - Lead board and SoC bring-up, including bootloaders, drivers, and low-level diagnostics, working with electrical and software engineers to move prototypes toward production. - Build automated unit, integration, and system test frameworks with platform and test teams. - Mentor colleagues, review code, and help shape team standards and tools.
Requirements
- Typically 7+ years developing embedded software for production systems, including substantial experience with safety-critical or highly reliable platforms. - Expert C and/or C++ skills for embedded development. - Experience with real-time operating systems, such as embedded Linux with pthreads, QNX, VxWorks, or RTEMS. - Strong knowledge of low- and higher-level communication protocols, including SPI, UART, I2C, CAN, and TCP/UDP. - Experience with bootloaders, device drivers, and bringing up new boards or SoCs. - Understanding of firmware deployment across multiple devices and of embedded development practices such as code review, CI, and automated testing.
Nice to have
- Safety-critical development experience using ISO 26262 or similar processes. - Automotive or transit experience, or work with safety MCUs such as NXP S32K3, Infineon AURIX, or TI TMS570. - Knowledge of kernel internals, deterministic timing or networking, and CAN tooling or DBC workflows. - Comfort debugging hardware with test equipment and scripting in Python for automation.