Cargo Features

[dependencies]
embassy-rp = { version = "0.2.0", default-features = false, features = ["rt", "defmt", "critical-section-impl", "unstable-pac", "time-driver", "rom-func-cache", "intrinsics", "rom-v2-intrinsics", "qspi-as-gpio", "run-from-ram", "boot2-at25sf128a", "boot2-gd25q64cs", "boot2-generic-03h", "boot2-is25lp080", "boot2-ram-memcpy", "boot2-w25q080", "boot2-w25x10cl", "boot2-none", "log", "chrono"] }
default = rt

The rt feature is set by default whenever embassy-rp is added without default-features = false somewhere in the dependency tree.

rt default

Enable the rt feature of rp-pac. This brings in the cortex-m-rt crate, which adds startup code and minimal runtime initialization.

Enables rt of rp-pac

defmt

Enable defmt support and enables defmt debug-log messages and formatting in embassy drivers.

Enables defmt, defmt of embassy-hal-internal and embassy-usb-driver

critical-section-impl

Configure the critical section crate to use an implementation that is safe for multicore use on rp2040.

Enables restore-state-u8 of critical-section

unstable-pac

Reexport the PAC for the currently enabled chip at embassy_rp::pac. This is unstable because semver-minor (non-breaking) releases of embassy-rp may major-bump (breaking) the PAC version. If this is an issue for you, you're encouraged to directly depend on a fixed version of the PAC. There are no plans to make this stable.

time-driver

Enable the timer for use with embassy-time with a 1MHz tick rate.

Enables tick-hz-1_000_000 of embassy-time-driver

Affects embassy-rp::time_driver

rom-func-cache

Enable ROM function cache. This will store the address of a ROM function when first used, improving performance of subsequent calls.

intrinsics

Enable implementations of some compiler intrinsics using functions in the rp2040 Mask ROM.
These should be as fast or faster than the implementations in compiler-builtins. They also save code space and reduce memory contention.
Compiler intrinsics are used automatically, you do not need to change your code to get performance improvements from this feature.

rom-v2-intrinsics

Enable intrinsics based on extra ROM functions added in the v2 version of the rp2040 Mask ROM.
This version added a lot more floating point operations - many f64 functions and a few f32 functions were added in ROM v2.

qspi-as-gpio

Allow using QSPI pins as GPIO pins. This is mostly not what you want (because your flash is attached via QSPI pins)
and adds code and memory overhead when this feature is enabled.

run-from-ram

Indicate code is running from RAM.
Set this if all code is in RAM, and the cores never access memory-mapped flash memory through XIP.
This allows the flash driver to not force pausing execution on both cores when doing flash operations.

boot2-at25sf128a

boot2 flash chip support

RP2040's internal bootloader is only able to run code from the first 256 bytes of flash. A 2nd stage bootloader (boot2) is required to run larger programs from external flash. Select from existing boot2 implementations via the following features. If none are selected, boot2-w25q080 will be used (w25q080 is the flash chip used on the pico). Each implementation uses flash commands and timings specific to a QSPI flash chip family for better performance. Use boot2 with support for Renesas/Dialog AT25SF128a SPI flash.

boot2-gd25q64cs

Use boot2 with support for Gigadevice GD25Q64C SPI flash.

boot2-generic-03h

Use boot2 that only uses generic flash commands - these are supported by all SPI flash, but are slower.

boot2-is25lp080

Use boot2 with support for ISSI IS25LP080 SPI flash.

boot2-ram-memcpy

Use boot2 that copies the entire program to RAM before booting. This uses generic flash commands to perform the copy.

boot2-w25q080

Use boot2 with support for Winbond W25Q080 SPI flash.

boot2-w25x10cl

Use boot2 with support for Winbond W25X10CL SPI flash.

boot2-none

Have embassy not provide the boot2 so you can use your own. Place your own in the ".boot2" section like:

#[link_section = ".boot2"]
#[used]
static BOOT2: [u8; 256] = [0; 256]; // Provide your own with e.g. include_bytes!

Features from optional dependencies

log implicit feature

Enables log

log:

A lightweight logging facade for Rust

chrono implicit feature

Enables chrono

chrono:

Date and time library for Rust