Firmware Engineer C/RTOS

Infotree Global SolutionsSwoyersville, PA
6d

About The Position

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.

Requirements

  • 5+ years of commercial experience in embedded projects (bare metal or RTOS).
  • Strong C skills
  • CMake/Make
  • GCC/Clang or MCU vendor toolchains
  • Git
  • Debugger tools (J-Link / ST-Link)
  • Trace and profiling tools
  • ARM Cortex-M (e.g. STM32 / NXP / Infineon) or equivalent
  • Ability to read and apply datasheets and reference manuals
  • 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).
  • CAN bus (filters, masks, bitrates, transceivers, termination)
  • Basic knowledge of SocketCAN (Linux)
  • Design of application-level communication protocols
  • Experience in bootloader implementation, firmware updates (e.g. via CAN), integrity verification (CRC), rollback mechanisms and secure update strategies
  • Design and validation of current, voltage and temperature measurements (ADC, oversampling, calibration) and protection mechanisms (thresholds, hysteresis, time-based debouncing)
  • Design of modular software architecture: clear layer separation (HAL/Drivers, Services, Protocol, Application), state machines, event loops, interface abstractions
  • Integration testing, functional verification, error logging and tracing
  • Ability to develop Linux-based test tools (SocketCAN)
  • Technical specifications (drafting, review)
  • Block diagrams
  • In-code documentation
  • Changelogs
  • Environment setup instructions
  • Git with pull requests, code reviews, and commit conventions (e.g. Conventional Commits)
  • CMake/Make or IDE-based toolchains; per-target configurations (Debug / Release)
  • J-Link / ST-Link, SWD, OpenOCD; flashing scripts (e.g. make flash)
  • SocketCAN (can0, cangen, candump); custom CLI test application for Control Board simulation
  • Markdown / AsciiDoc
  • Diagrams in draw.io / PlantUML
  • Test checklists
  • JIRA or GitHub Issues with linkage to commits and pull requests

Nice To Haves

  • 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

Stand Out From the Crowd

Upload your resume and get instant feedback on how well it matches this job.

Upload and Match Resume

What This Job Offers

Job Type

Full-time

Career Level

Mid Level

Education Level

No Education Listed

Number of Employees

5,001-10,000 employees

© 2024 Teal Labs, Inc
Privacy PolicyTerms of Service