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.
Stand Out From the Crowd
Upload your resume and get instant feedback on how well it matches this job.
Job Type
Full-time
Career Level
Mid Level
Education Level
No Education Listed
Number of Employees
5,001-10,000 employees