First engineering hire owning embedded no_std Rust firmware for a software-defined BMS platform. Rust is the primary language for the embedded firmware, with responsibilities from implementation through certification.
no_std Foundations
required122 repos of evidenceEverything on-target starts here: the corpus's firmware shares heapless data structures and defmt logging as its baseline.
- build and flash a no_std binary to real hardware
- size data structures from a memory budget
- debug on-target with defmt/RTT instead of hope
Real no_std projects — startup code, panic handlers, and memory budgets you can copy.
Blink an LED the honest way: bare no_std project, linker script understood, defmt logs streaming — write up the toolchain setup.
HALs & Peripherals
required42 repos of evidenceembedded-hal is the trait layer the whole Rust embedded corpus organizes around — driver work against it is the portfolio unit that counts.
- drive SPI/I2C/UART peripherals from a datasheet
- write interrupt handlers that share state safely
- map a register layout to a typed API
The HALs themselves — how register blocks become safe typed APIs, chip by chip.
Write and publish an embedded-hal driver crate for a cheap sensor — with docs, an example, and CI building for a target triple.
Async on Hardware
recommended44 repos of evidenceEmbassy is the corpus's fastest-growing embedded pattern — async task models replacing hand-rolled state machines on MCUs.
- understand async with zero threads and one core
- structure firmware as tasks instead of hand-rolled state machines
- serialize structured messages over constrained links
embassy-based firmware — executors, timers, and drivers in the corpus's fastest-growing embedded pattern.
Build a sensor node on embassy: async sampling task, postcard frames over serial, host-side Rust decoder — one repo, both ends.
Host Tools & The Bridge
recommended61 repos of evidenceEmbedded teams hire people who improve the loop: the corpus's probe-rs ecosystem shows Rust owning the flash-debug-test pipeline itself.
- own the flash-debug-test loop, not just the firmware
- build host-side tools that talk to your hardware
- automate hardware tests so they run on every commit
The probe-rs ecosystem — debug probes, flashing, and RTT as Rust code you can extend.
Build a host CLI for your sensor node: live plotting or logging over serial, a --flash subcommand, and a HIL smoke test in CI.
Reliability & Rigor
differentiator18 repos of evidenceFirmware that ships must survive the field. This leg is thin on crates and heavy on judgment — the corpus's mature firmware shows both.
- design firmware that survives watchdogs, brownouts, and bad flash
- design a safe OTA/rollback scheme
- think in field failure modes, not demo conditions
Bootloaders, OTA systems, and watchdog-disciplined projects — firmware built for hostile reality.
Add a watchdog, a reboot-reason register, and a crash-count report to your node — then document the failure modes you now survive.
Organizations building with this stack in the open:
Open roles matching this destination right now:
Rerun is the data layer for Physical AI, using Rust for core performance-critical code. They are hiring for multiple roles including Rust Backend Engineers.
Building a dynamic runtime on top of the Linux BPF sub-system. Looking for Rust developers with deep interest in Linux internals, distributed systems, and systems programming.
Confirmed active on oxide.computer/careers. Rust explicitly required: 'Read and write code in Rust (Propolis).' Compensation $250,000 USD flat regardless of location.