Firmware Engineer C RTOS
Firmware Engineer C RTOS position — see original posting for full details.
Firmware Engineer
Candidate Profile (Must Have)
Experience: 5+ years of commercial experience in embedded projects (bare metal or RTOS).
Language & Tools: Strong C skills; CMake/Make; GCC/Clang or MCU vendor toolchains; Git; debugger tools (J-Link / ST-Link); trace and profiling tools.
Microcontrollers: ARM Cortex-M (e.g. STM32 / NXP / Infineon) or equivalent; ability to read and apply datasheets and reference manuals.
HAL / Drivers: Design and modification of low-level drivers (GPIO, ADC, PWM, I2C, SPI, UART, watchdog, timers) as well as drivers for external peripherals (e.g. EEPROM).
Communication: CAN bus (filters, masks, bitrates, transceivers, termination); basic knowledge of SocketCAN (Linux); design of application-level communication protocols.
Bootloader / Firmware Update: Experience in bootloader implementation, firmware updates (e.g. via CAN), integrity verification (CRC), rollback mechanisms and secure update strategies.
Measurements & Protections: Design and validation of current, voltage and temperature measurements (ADC, oversampling, calibration) and protection mechanisms (thresholds, hysteresis, time-based debouncing).
Software Architecture: Design of modular software architecture: clear layer separation (HAL/Drivers, Services, Protocol, Application), state machines, event loops, interface abstractions.
Quality & Testing: Integration testing, functional verification, error logging and tracing; ability to develop Linux-based test tools (SocketCAN).
Documentation: Technical specifications (drafting, review), block diagrams, in-code documentation, changelogs, and environment setup instructions.
Nice to Have
RTOS experience (FreeRTOS / Zephyr)
MISRA C
Unit testing (Ceedling / Unity)
Continuous Integration (GitHub Actions / GitLab CI)
Static analysis (clang-tidy, cppcheck)
Experience with safety-critical systems (e.g. automotive, industrial)
EMC / ESD awareness
Knowledge of UDS / ISO-TP, CANopen / J1939
Environment & Tools (Required)
Repository & Branching: Git with pull requests, code reviews, and commit conventions (e.g. Conventional Commits).
Build System: CMake/Make or IDE-based toolchains; per-target configurations (Debug / Release).
Debugging: J-Link / ST-Link, SWD, OpenOCD; flashing scripts (e.g. make flash).
Linux Test Rig: SocketCAN (can0, cangen, candump); custom CLI test application for Control Board simulation.
Documentation: Markdown / AsciiDoc; diagrams in draw.io / PlantUML; test checklists.
Issue Tracking: JIRA or GitHub Issues with linkage to commits and pull requests.
Posted June 9, 2026