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