awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
embassy-rs avatar

embassy-rs/embassy

0
View on GitHub↗
8,813 stars·1,380 forks·Rust·apache-2.0·13 viewsembassy.dev↗

Embassy

Embassy is an asynchronous framework for microcontrollers that provides a runtime for cooperative multitasking. It enables the execution of multiple concurrent tasks to maximize energy efficiency and CPU usage, utilizing an async executor that puts the processor to sleep when idle.

The framework includes a comprehensive set of embedded components, featuring a hardware abstraction layer for peripherals like GPIO, SPI, I2C, and UART, alongside a TCP/IP network stack and a USB device stack. It also provides a Bluetooth Low Energy host stack for wireless communication and a bootloader framework that supports external flash and power-fail-safe firmware updates with automatic rollbacks.

Additional capabilities cover task scheduling with priority-based preemption and deadline-based algorithms, direct memory access for high-throughput data transfer, and system health monitoring via watchdog timers. The system also integrates security and reliability features such as hardware random number generation and memory protection unit stack guards.

Features

  • Embedded Async Executors - Provides an asynchronous runtime for cooperative multitasking that puts the processor to sleep when idle.
  • Embedded Rust - Provides an asynchronous runtime for microcontrollers using Rust to manage multitasking and power efficiency.
  • Cooperative Schedulers - Provides a cooperative async executor that allows tasks to yield control and maximizes energy efficiency.
  • Bootloaders and Updates - Handles the process of updating and loading new software images onto a microcontroller.
  • Embedded Async Multitasking - Executes multiple concurrent tasks on microcontrollers using asynchronous programming to optimize CPU and energy usage.
  • Bluetooth Connectivity - Manages Bluetooth Low Energy hosts and controllers to enable wireless communication on microcontrollers.
  • USB Class Implementations - Implements standard USB classes including Serial ports, Ethernet, HID, and MIDI for device communication.
  • Microcontroller Abstraction Layers - Provides standardized abstraction layers for interacting with microcontroller peripherals like GPIO, SPI, and UART.
  • USB Device Communication - Controls device-side USB stacks with support for common classes like CDC ACM and HID.
  • USB Device Frameworks - Implements USB devices with asynchronous support for composite configurations, suspend, resume, and remote wakeup.
  • Hardware Abstraction Layers - Implements hardware abstraction layers providing safe APIs to interact with microcontroller capabilities without raw register manipulation.
  • TCP/IP Stacks - Implements an asynchronous TCP/IP stack providing Ethernet, IP, TCP, UDP, ICMP, and DHCP connectivity.
  • Static Task Allocation - Prevents runtime memory exhaustion by using static allocation for asynchronous task management.
  • Flash Storage Managers - Provides interfaces for reading and writing data to on-chip non-volatile flash memory.
  • Deadline-Based Scheduling - Prioritizes tasks using an Earliest Deadline First algorithm to meet soft-realtime timing requirements.
  • USB Device Descriptors - Provides a builder for creating USB device and interface descriptors.
  • Custom Hardware Drivers - Implements trait-based drivers to enable support for a wide variety of Ethernet and WiFi chips.
  • External Flash Booting - Executes large programs from QSPI flash chip families using a second-stage bootloader.
  • Power-Fail-Safe Update Mechanisms - Manages firmware updates with power-fail-safe mechanisms, trial boots, and automatic rollbacks.
  • BLE Host Stacks - Provides a Bluetooth Low Energy host stack for wireless communication between microcontroller hosts and controllers.
  • Hardware Interfacing - Interfaces with Ethernet, WiFi, and USB-CDC NCM hardware peripherals to transmit and receive network packets.
  • USB Device Stack Implementations - Implements a USB device stack with support for common classes like HID and Serial using asynchronous configurations.
  • USB Device Stacks - Provides a framework for implementing USB device descriptors and classes like CDC and HID with asynchronous support.
  • Async Task Timeouts - Executes futures and automatically cancels them if they fail to complete within a specified time limit.
  • Embedded Network Driver Integration - Integrates IEEE 802.15.4 compatible hardware drivers to support embedded networking stacks.
  • DMA Controllers - Provides direct memory access controllers for high-throughput data transfer between peripherals and memory.
  • Interrupt Vector Handlers - Maps hardware interrupts to software handler functions using specialized macros for immediate event response.
  • Multicore Synchronization Primitives - Provides hardware spinlock-based mutexes for coordinating tasks across multiple CPU cores.
  • Overflow-Free Timing Types - Tracks instants and durations using global, overflow-free types to handle timing and timeouts reliably.
  • Firmware Image Generators - Adds required image headers to firmware binaries to ensure compatibility with internal bootloaders.
  • System Clock Utilities - Configures clock modules and signal outputs to control the timing and frequency of the microcontroller.
  • Processor Sleep Controllers - Implements mechanisms to suspend the processor and minimize energy consumption when the async executor is idle.
  • Task Priority Management - Supports multiple executor instances at different priority levels to allow high-priority task preemption.
  • Asynchronous Timing Constraints - Provides asynchronous delays and periodic intervals that maintain timing accuracy without drifting.
  • Hardware Timer Integration - Leverages hardware timers to drive precise system-wide timekeeping for delays and scheduled tasks.
  • Health Monitoring - Implements system health monitoring using windowed or code watchdogs to recover from software hangs or crashes.
  • Embedded Frameworks - Embedded async development tools
  • Embedded Systems - Async/await framework for embedded Rust development.
  • Hardware Abstraction Layers - Async-first HAL for MSPM0 and other microcontrollers.

Star history

Star history chart for embassy-rs/embassyStar history chart for embassy-rs/embassy

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does embassy-rs/embassy do?

Embassy is an asynchronous framework for microcontrollers that provides a runtime for cooperative multitasking. It enables the execution of multiple concurrent tasks to maximize energy efficiency and CPU usage, utilizing an async executor that puts the processor to sleep when idle.

What are the main features of embassy-rs/embassy?

The main features of embassy-rs/embassy are: Embedded Async Executors, Embedded Rust, Cooperative Schedulers, Bootloaders and Updates, Embedded Async Multitasking, Bluetooth Connectivity, USB Class Implementations, Microcontroller Abstraction Layers.

What are some open-source alternatives to embassy-rs/embassy?

Open-source alternatives to embassy-rs/embassy include: tinygo-org/tinygo — TinyGo is a specialized compiler and development toolkit designed to bring the Go programming language to… hybridgroup/gobot — Gobot is a robotics framework for the Go programming language designed for developing robotics, drones, and IoT… raspberrypi/pico-sdk — The pico-sdk is a software development kit for creating C and C++ applications on RP2040 and RP2350 hardware… hathach/tinyusb — TinyUSB. espressif/arduino-esp32 — This project is an implementation of the Arduino framework for ESP32 microcontrollers, providing a core that enables… esp8266/arduino — This project is an embedded C++ development kit and hardware abstraction layer that enables the Arduino programming…

Open-source alternatives to Embassy

Similar open-source projects, ranked by how many features they share with Embassy.
  • tinygo-org/tinygotinygo-org avatar

    tinygo-org/tinygo

    17,529View on GitHub↗

    TinyGo is a specialized compiler and development toolkit designed to bring the Go programming language to resource-constrained microcontrollers and WebAssembly environments. It provides a bare-metal runtime environment that enables high-level code execution without the need for a traditional operating system, utilizing an LLVM-based backend to generate efficient machine instructions. The project distinguishes itself through aggressive optimization techniques tailored for small hardware, including a static memory allocation strategy and whole-program dead code elimination that significantly re

    Goadafruitarduinoarm
    View on GitHub↗17,529
  • hybridgroup/gobothybridgroup avatar

    hybridgroup/gobot

    9,425View on GitHub↗

    Gobot is a robotics framework for the Go programming language designed for developing robotics, drones, and IoT applications. It provides a hardware abstraction layer with standardized drivers to interact with GPIO, I2C, SPI, and PWM interfaces across various single-board computers and microcontrollers. The framework functions as an IoT device orchestrator and BLE device manager, enabling the coordination of multiple sensors, actuators, and Bluetooth Low Energy peripherals. It includes specialized interfaces for drone control, allowing for the management of flight maneuvers and video streams

    Goarduinobeaglebonebeaglebone-black
    View on GitHub↗9,425
  • raspberrypi/pico-sdkraspberrypi avatar

    raspberrypi/pico-sdk

    4,651View on GitHub↗

    The pico-sdk is a software development kit for creating C and C++ applications on RP2040 and RP2350 hardware platforms. It functions as an embedded development kit that provides hardware abstraction layers and drivers to interface with microcontroller peripherals and registers. The project utilizes a CMake build system to manage the compilation of source code into multiple binary formats, including UF2, ELF, and HEX images. This environment coordinates the build and link processes to ensure the resulting firmware is correctly tailored for the target hardware. The toolkit covers embedded hard

    C
    View on GitHub↗4,651
  • hathach/tinyusbhathach avatar

    hathach/tinyusb

    6,524View on GitHub↗

    TinyUSB

    Cembeddedmidimsc
    View on GitHub↗6,524
  • See all 30 alternatives to Embassy→