Design, implement, debug and maintain embedded C and C++ firmware for safety-related vehicle control ECUs
Develop firmware from requirements through released, verified software
Implement and maintain vehicle communication interfaces including CAN 2.0A/B, J1939, higher-layer CAN protocols and serial links
Develop I/O and actuation software for digital and analogue inputs, PWM and proportional outputs, sensor signal conditioning, scaling, calibration and plausibility checking
Implement diagnostics, fault detection and fail-safe behaviour, including watchdogs, monitors, fault classification and safe-state transitions
Contribute to migrating and modernising the production firmware platform onto current hardware
Develop against decomposed, traceable requirements and maintain bidirectional traceability
Author and maintain design documentation, interface specifications and verification records
Perform and participate in peer design and code reviews
Build and maintain automated embedded unit, integration and hardware-in-the-loop tests
Extend CI/CD pipelines for embedded builds, static analysis, automated tests, versioning and release artefact packaging
Work with Linux-based coprocessors and services for data logging, connectivity, remote diagnostics and observability
Support bench, vehicle and field commissioning and investigate integration-test issues
Collaborate with hardware and electrical engineers, system architects, functional safety engineers, application software teams and product management
Requirements:
Bachelor’s or Master’s degree in Electrical or Electronic Engineering, Computer Engineering, Mechatronics, Computer Science or a closely related discipline; or equivalent demonstrable experience
10+ years of professional embedded software development
At least 2 years delivering production firmware on 32-bit microcontrollers
Expert-level embedded C and working proficiency in C++
Experience with fixed-point and bounded-resource programming and codebases where dynamic memory allocation is prohibited
Bare-metal and/or RTOS development, including interrupt handling, priority design, scheduling, cyclic task structure, timing and latency analysis, and multicore considerations
Ability to read hardware schematics, MCU datasheets and reference manuals and derive peripheral, driver and I/O configuration
Hands-on CAN experience: CAN 2.0A/B plus J1939 or comparable higher-layer protocol
Experience defining and maintaining message sets and signal databases
Bus analysis and fault-finding with standard CAN tooling
Practical use of debug probes, oscilloscopes, logic analysers and bus loggers
Experience developing to an enforced coding standard such as MISRA, with static analysis
Comfortable in Linux development environments, Git-based workflows, code review and CI/CD pipelines
Experience with TCP/IP networking and embedded Linux device-to-cloud connectivity on Arm-based processors
Desired: multicore automotive-grade microcontrollers and commercial safety-certified ECU platforms
Desired: containerised build environments and self-hosted CI runners
Desired: Yocto or Buildroot BSP/layer maintenance, kernel and device-tree configuration
Desired: requirements management tooling and Jira / Confluence or equivalent
Desired: formal, traceable requirements and interface control documents
Desired: Python and shell scripting for test automation, tooling and data analysis
Ability to submit a resume and cover letter
Benefits:
Remote work: can telecommute / work remotely 100% of the time
10% or less travel
Environment of growth and learning
Diverse workforce and equal opportunity workplace
Tags
Carta de presentación
Inicia sesión para generar una carta de presentación para esta vacante.