Expand description
defmt
global logger over RTT.
NOTE when using this crate it’s not possible to use (link to) the
rtt-target
crate
To use this crate, link to it by importing it somewhere in your project.
// src/main.rs or src/bin/my-app.rs
use defmt_rtt as _;
§Blocking/Non-blocking
probe-rs
puts RTT into blocking-mode, to avoid losing data.
As an effect this implementation may block forever if probe-rs
disconnects
at runtime. This is because the RTT buffer will fill up and writing will
eventually halt the program execution.
defmt::flush
would also block forever in that case.
If losing data is not an concern you can disable blocking mode by enabling
the feature disable-blocking-mode
§Critical section implementation
This crate uses
critical-section
to
ensure only one thread is writing to the buffer at a time. You must import a
crate that provides a critical-section
implementation suitable for the
current target. See the critical-section
README for details.
For example, for single-core privileged-mode Cortex-M targets, you can add the following to your Cargo.toml.
[dependencies]
cortex-m = { version = "0.7.6", features = ["critical-section-single-core"]}