Senior Firmware Engineer
About the role
To develop, Develop, optimize, and maintain firmware in C and C++ for 32-bit microcontrollers.
Build applications on top of FreeRTOS and write bare-metal drivers.
Design and implement peripheral drivers and integrations: I2C, SPI, UART, PWM, ADC, and CAN-FD.
Bring up new hardware: validate power rails, clocks, peripherals, and communication buses.
Profile and tune firmware for timing, memory footprint, and power consumption.
Debug complex hardware/firmware issues at the bench using oscilloscopes, logic analyzers and multimeters.
Write clear, testable code with unit tests, on-target tests, and code reviews.
Collaborate with hardware engineers on schematic and layout reviews from a firmware perspective.
Document designs, bring-up procedures, and known issues.
Responsibilities
- Develop, Develop, optimize, and maintain firmware in C and C++ for 32-bit microcontrollers.
- Build applications on top of FreeRTOS and write bare-metal drivers.
- Design and implement peripheral drivers and integrations: I2C, SPI, UART, PWM, ADC, and CAN-FD.
- Bring up new hardware: validate power rails, clocks, peripherals, and communication buses.
- Profile and tune firmware for timing, memory footprint, and power consumption.
- Debug complex hardware/firmware issues at the bench using oscilloscopes, logic analyzers and multimeters.
- Write clear, testable code with unit tests, on-target tests, and code reviews.
- Collaborate with hardware engineers on schematic and layout reviews from a firmware perspective.
- Document designs, bring-up procedures, and known issues.
Requirements
Strong proficiency in C and modern C++ for embedded targets, including understanding of memory layout, linker scripts, startup code, and ISRs.
Hands-on experience building production firmware on FreeRTOS (tasks, queues, semaphores, mutexes, priority inversion, stack sizing) and on bare-metal systems (super-loops, interrupt-driven designs).
Solid working knowledge of I2C, SPI, PWM and ADC.
Practical experience with CAN-FD: frame formats, bit timing, error handling, and integration with higher-layer protocols.
Experience with bootloaders, OTA/firmware updates, and secure boot.
Demonstrated ability to debug hardware/firmware interactions using oscilloscopes and logic analyzers (e.g., Saleae, Keysight, Tektronix).
Comfortable reading datasheets, reference manuals, and schematics.
Proficient with Git, toolchains (GCC/Clang, arm-none-eabi), build systems (CMake/Make), and on-target debuggers (GDB, J-Link, ST-Link, OpenOCD).
Motor control experience: BLDC/PMSM and FOC
Zephyr RTOS: device tree, Kconfig, driver model, and writing out-of-tree modules.
EtherCat and FoE
Qualifications
Motor control experience: BLDC/PMSM and FOC
Zephyr RTOS: device tree, Kconfig, driver model, and writing out-of-tree modules.
EtherCat and FoE
Skills
- Strong proficiency in C and modern C++ for embedded targets, including understanding of memory layout, linker scripts, startup code, and ISRs.
- Hands-on experience building production firmware on FreeRTOS (tasks, queues, semaphores, mutexes, priority inversion, stack sizing) and on bare-metal systems (super-loops, interrupt-driven designs).
- Solid working knowledge of I2C, SPI, PWM and ADC.
- Practical experience with CAN-FD: frame formats, bit timing, error handling, and integration with higher-layer protocols.
- Experience with bootloaders, OTA/firmware updates, and secure boot.
- Demonstrated ability to debug hardware/firmware interactions using oscilloscopes and logic analyzers (e.g., Saleae, Keysight, Tektronix).
- Comfortable reading datasheets, reference manuals, and schematics.
- Proficient with Git, toolchains (GCC/Clang, arm-none-eabi), build systems (CMake/Make), and on-target debuggers (GDB, J-Link, ST-Link, OpenOCD).
- Motor control experience: BLDC/PMSM and FOC
- Zephyr RTOS: device tree, Kconfig, driver model, and writing out-of-tree modules.
- EtherCat and FoE
Benefits
We provide market standard benefits (health, vision, dental, 401k, etc.). Join us for the culture and the mission, not for the benefits.
Pay
The annual compensation is expected to be between $180,000 - $260,000. Exact compensation may vary based on skills, experience, and location
Schedule
Software Engineering
San Francisco, CA