← Tags

#eeg

7 posts

DC Mini Part 7: Developer Ergonomics — xtask, Nix, and the Prelude

Build orchestration with xtask, reproducible toolchains with Nix flakes, and a prelude pattern for managing imports in a complex embedded workspace.

rustembeddedeegopen-sourcenixdeveloper-experience

DC Mini Part 6: Multi-Priority Executors, DFU, and a PWM Neopixel

Interrupt-driven task prioritization with embassy, a watchdog-protected dual-bank bootloader, and driving WS2812 LEDs with DMA — the infrastructure glue of DC Mini.

rustembeddedeegopen-sourceembassydfuneopixel

DC Mini Part 5: One Protocol, Two Transports

How DC Mini defines its RPC interface once and serves it identically over USB and BLE — with code generation for Python and Rust clients.

rustembeddedeegopen-sourcebleusbrpc

DC Mini Part 4: Event-Driven Orchestration with derive(From)

How DC Mini uses a central event bus and inversion of control to keep async sensor tasks decoupled — and why adding a new sensor is just a match arm.

rustembeddedeegopen-sourceasyncembassy

DC Mini Part 3: The Bus Manager — Power-Aware Peripheral Sharing Without Alloc

Building a generic bus lifecycle manager in no_std Rust that lazily initializes, reference-counts, and tears down shared peripherals — all without a heap.

rustembeddedeegopen-sourceno_std

DC Mini Part 2: Typed Resource Bundles and the BSP Pattern

How DC Mini uses Rust's type system to enforce pin allocation at compile time, preventing an entire class of embedded bugs.

rustembeddedeegopen-sourceembassy

DC Mini Part 1: Designing Firmware for a Wearable EEG

A look at the architecture behind DC Mini — an open-hardware 16-channel EEG wearable built with Rust, embassy-rs, and a three-crate firmware design.

rustembeddedeegopen-source