embedded-rust

Configure flashing, debugging, and no_std firmware for embedded Rust projects.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/awfixers-stuff/opencode-config --skill embedded-rust-awfixers-stuff
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: embedded-rust
Source: https://github.com/awfixers-stuff/opencode-config/tree/main/skills/embedded-rust
Command: npx skills add https://github.com/awfixers-stuff/opencode-config --skill embedded-rust-awfixers-stuff

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Embedded Rust development involves many low-level steps—cross-compiling for specific MCU targets, configuring runtime and linker settings, selecting panic handlers, flashing and debugging over hardware probes, and getting efficient logging—this Skill consolidates guidance and best practices so engineers can bring bare-metal Rust firmware from source to running device reliably.

Core Features & Use Cases

  • Flashing and debugging: Step-through guidance for using probe-rs and cargo-embed to program and debug microcontrollers and stream logs.
  • Efficient logging with defmt: Configure defmt transports and derive serialization for low-bandwidth log decoding on host tools.
  • Concurrency and startup: Example patterns for RTIC-based interrupt-driven tasks and cortex-m-rt startup with no_std and no_main firmware.
  • Panic and runtime choices: Recommendations for choosing panic-halt, panic-probe, panic-semihosting, or reset strategies and when each is appropriate.
  • Use case: Flash an STM32F4 release build, stream defmt logs over RTT, and iterate on RTIC tasks while tuning panic behavior for production.

Quick Start

Help me flash and debug my thumbv7em-none-eabihf no_std firmware using probe-rs and stream defmt logs to the host.

Frequently Asked Questions about embedded-rust

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I flash and debug no_std Rust firmware using probe-rs?▼

Configure probe-rs as your cargo runner to flash no_std Rust firmware to ARM Cortex-M or RISC-V targets, start interactive debug sessions, and stream defmt logs over RTT directly to the host.

What is the best way to set up defmt logging for low-bandwidth embedded Rust targets?▼

Configure defmt transports and derive serialization in your no_std firmware to enable efficient low-bandwidth log decoding on host tools, replacing traditional logging for constrained microcontroller environments.

Do I need cortex-m-rt to configure startup for bare-metal Rust microcontroller development?▼

Yes, cortex-m-rt provides the necessary runtime integration and linker script configuration for no_std and no_main firmware, handling startup and interrupt vectors for ARM Cortex-M microcontroller targets.

How do I choose between panic-halt, panic-probe, and panic-semihosting for embedded Rust?▼

Choose panic-halt to simply stop execution, panic-probe to route panic messages over RTT for probe-rs debugging, or panic-semihosting to output via a debugger link, selecting based on your specific production and debug needs.

Can I use RTIC for interrupt-driven concurrency in no_std Rust firmware?▼

Yes, RTIC provides interrupt-driven task scheduling for no_std Rust firmware, enabling safe concurrency on bare-metal ARM Cortex-M microcontrollers without a traditional operating system.

What target triple do I use for cross-compiling embedded Rust to ARM Cortex-M?▼

Use the thumbv7em-none-eabihf target triple for cross-compiling no_std Rust firmware to ARM Cortex-M microcontrollers, ensuring proper cargo and runner setup for probe-rs flashing and debugging.