domain-embedded

Use when developing embedded/no_std Rust. Keywords: embedded, no_std, microcontroller, MCU, ARM, RISC-V, bare metal, firmware, HAL, PAC, RTIC, embassy, interrupt, DMA, peripheral, GPIO, SPI, I2C, UART, embedded-hal, cortex-m, esp32, stm32, nrf, 嵌入式, 单片机, 固件, 裸机

By actionbook · 2,351 installs

npx skills add actionbook/rust-skills --skill domain-embedded

Source repository · Upstream listing

Project Context (Auto Injected) Target configuration: ! cat .cargo/config.toml 2 /dev/null echo "No .cargo/config.toml found" Embedded Domain Layer 3: Domain Constraints Domain Constraints → Design Implications Domain Rule Design Constraint Rust Implication No heap Stack allocation heapless, no Box/Vec No std Core only ![no std] Real time Predictable timing No dynamic alloc Resource limited Minimal memory Static buffers Hardware safety Safe peripheral access HAL + ownership Interrupt safe No blocking in ISR Atomic, critical sections Critical Constraints No Dynamic Allocation Interrupt Safety Hardware Ownership Trace Down ↓ From constraints to design (Layer 2): Layer Stack Layer Examples Purpose PAC stm32f4, esp32c3 Register access HAL stm32f4xx hal Hardware abstraction Framework RTIC, Embassy Concurrency Traits embedded hal Portable drivers Framework Comparison Framework Style Best For RTIC Priority based Interrupt driven apps Embassy Async Complex state machines Bare metal Manual Simple apps Key Crates Purpose Crate Runtime (ARM) cortex m rt Panic handler panic halt, panic probe Collections heapless HAL traits embedded hal Logging defmt Flash/debug probe run Design Patterns Pattern Purpose Implementation no std setup Bare metal ![no std] + ![no main] Entry point Startup [entry] or embassy Static state ISR access Mutex<RefCell<Option<T Fixed buffers No heap heapless::Vec<T, N Code Pattern: Static Peripheral Common Mistakes Mistake Domain Violation Fix Using Vec Heap allocation heapless::Vec No critical section Race with ISR Mutex + interrupt::free Blocking in ISR Missed interrupts Defer to main loop Unsafe peripheral Hardware conflict HAL ownership Trace to Layer 1 Constraint Layer 2 Pattern Layer 1 Implementation No heap Static collections heapless::Vec<T, N ISR safety Critical sections Mutex<RefCell<T Hardware ownership Singleton take().unwrap() no std Core only ![no std], ![no main] Related Skills When See Static memory m02 resource Interior mutability m03 mutability Interrupt patterns m07 concurrency Unsafe for hardware unsafe checker