#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.
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.
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.
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.
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.
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.
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.