Software Engineer, Embedded
- Company
- Kela
- Location
- San Francisco, CA · Los Angeles, CA +1 more
Embedded Software Engineer — Munition System
About the project
We're building a small, safety-critical kinetic munition delivered by an FPV-class airframe. The compute side is an electro mechanical safe and arm device (EMSAD).
The current codebase is Rust-on-Embassy, but we're language-agnostic on the role we're language-agnostic on the role — strong C, C++, or Rust embedded engineers are equally welcome.
What you'll do
Own firmware end-to-end: drivers, state machine, communication protocols, command surface, bring-up, qualification, OTA / programming flow.
Build the host-testable simulation surface. The state machine should be testable on a laptop without flashing a board — and stay that way.
Work shoulder-to-shoulder with the HW engineer on bring-up, register-map ergonomics, and timing. You will be debugging real boards on the bench.
Carry the firmware through environmental qualification (thermal, EMC, vibration) — you'll be the person on the test bench when something is acting weird at - 20°C.
Define and enforce the firmware-side safety case: what we test, what we prove, what's allowed to ship.
Required
5+ years of professional embedded firmware on ARM Cortex-M (or comparable) — in C, C++, or or Rust. Show us something you shipped or fielded.
Deep comfort with the bare-metal stack: interrupts, DMA, clocks, timers, low-power modes, linker scripts, memory maps. Datasheets do not scare you.
Strong with peripheral protocols — I²C, SPI, UART, USB CDC — and with debugging them on a scope / logic analyzer when the abstraction layer is lying.
Built and reasoned about state machines for real-world hardware. You know why guard conditions exist and why timers are part of the safety case.
Discipline around testability: pure-logic code separated from HAL, host tests for everything that doesn't strictly need the target.
Working English, written and verbal.
Nice to have
Rust embedded experience — Embassy, embedded-hal, defmt, probe-rs, RTIC, no_std ecosystem.
Modern C++ embedded (C++17/20 in firmware, freestanding builds).
Async firmware experience (Embassy, Zephyr, FreeRTOS with event loops, bare-metal cooperative schedulers).
Safety-critical / fail-safe firmware background: defense (MIL-STD-882), automotive (ISO 26262 / MISRA), aerospace (DO-178C), medical (IEC 62304), industrial (IEC 61508).
Bootloader / DFU / secure-boot work; provisioning and factory programming flows.
FPV / small-UAV firmware: Betaflight, MSP, MAVLink, INAV.
C FFI / SDK bindings (cbindgen, manual extern "C") — the project ships a C SDK to host integrators.
How we work
Small team, weekly hardware iterations, real boards on every desk. You'll have a bench, a stack of dev kits, and direct line to the HW and mech engineers — meaning you'll get asked to defend your timing assumptions, but you'll also be in the room when the next board spin is decided. We expect you to write code that's terse, testable, and obvious about its safety story.