Role Overview
We are looking for an Embedded Firmware Engineer to design, build, and test production firmware for automotive electronic control units (ECUs). You will work across the full product lifecycle — from device bring-up through validation, manufacturing, and deployment — on microcontroller platforms running real-time operating systems. The role combines hands-on low-level firmware development with system-level diagnostics, self-test, and fault-handling work that keeps safety-critical hardware dependable in the field.
Responsibilities
- Design, prototype, implement, and test production embedded firmware for automotive ECUs on 32-bit microcontrollers.
- Develop and optimize firmware in a RTOS environment, managing timing, concurrency, and resource constraints.
- Build diagnostic and self-test functionality, including power-on self-tests (POST) and memory built-in self-tests (BIST).
- Implement fault-detection and safe-state handling, including monitoring supply voltages and raising DTCs.
- Develop CPU, communication, and memory-load generation and stress-test functions via CAN, Ethernet, or diagnostic interfaces.
- Implement and monitor communication interfaces including SPI, UART, I2C, and CAN.
- Write firmware to interact with TCP/UDP and UDS diagnostics.
- Debug at the hardware level using standard test equipment.
Requirements
- 3–8 years of hands-on embedded firmware development experience.
- Expert-level C or C++ for resource-constrained, real-time systems.
- Strong experience with 32-bit ARM Cortex-M class microcontrollers; familiarity with NXP S32G / S32K families.
- Practical experience with low-level RTOS development (e.g., FreeRTOS).
- Solid grasp of communication protocols: SPI, UART, I2C, CAN, TCP/UDP, and UDS.
- Working knowledge of Python for tooling and automation.
- Hardware-debugging skills with oscilloscopes and multimeters.
Nice to Have
- Experience with ISO 26262 and ASPICE.
- Exposure to SafeRTOS, QNX, AUTOSAR, or OSEK.
- Time-synchronization protocols (PTP / IEEE 1588).
Skills
- C/C++
- RTOS
- CAN/Ethernet
- ARM Cortex-M
- Python