-
Notifications
You must be signed in to change notification settings - Fork 15
FAQ and common errors
Most common errors:
21 | pub use embassy_executor::Executor; // Please activate the `executor-thread` or `executor-interrupt` feature on the embassy-executor crate (v0.7.x)!
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ no `Executor` in the root
Please make sure, that:
- You have activated at least one of the features
executor-thread
orexecutor-interrupt
on the embassy-executor crate. e.g. by addingembassy-executor = { default-features = false, version = "0.7.0", features = ["executor-thread", "arch-cortex-m"] }
to your crate dependencies. - You only use one single version of embassy-executor throughout your crate graph, check with
cargo tree | grep "embassy-executor " -B3
.
If you want to use a git version of embassy, please patch embassy in the[patch.crates-io]
section, instead of addingembassy-executor = { git="..."}
only on your crate.
This can happen if you forget to add harness = false
to your Cargo.toml
for each test.
Furthermore, this error can happen if you invoke cargo test
without any additional arguments. Apparently cargo test
wants to also test the binaries...
Adding the following to Cargo.toml
helps as a workaround.
[[bin]]
name = "embedded-example-test"
path = "src/main.rs"
+ test = false
[lib]
+ test = false
Alternatively, you can also run cargo test --tests
to only run the integration tests.
Make sure you've added the following line to your build.rs
linker script:
println!("cargo::rustc-link-arg-tests=-Tembedded-test.x");
You can also add rustflags = [ "-C", "link-arg=-Tembedded-test.x" ]
to your .cargo/config.toml
file. But then you need to move embedded-test
from [dev-dependencies]
to [dependencies]
in your Cargo.toml
.
You probably have the init-log
feature activated on embedded-test
while at the same time using a crate like defmt-rtt
or rtt-log
. You need to either setup the logger yourselve (with a crate of your choice) or let embedded-test do it (init-log
feature)
Make sure you're using at least probe-rs 0.24.0. Older versions do not support embedded-test yet.
Make sure you're using at least probe-rs 0.24.0. Older versions do not support embedded-test yet.
Otherwise, please open an issue including the commandline that was used to invoke probe-rs.
= note: rust-lld: error: undefined symbol: _defmt_release
>>> referenced by mod.rs:71
...
If only your test builds fail but your main application builds fine, you probably have some linker scripts that are not linked for the tests but are linked for the main application.
Check your build.rs
for println!("cargo:rustc-link-arg-bins=-Tdefmt.x");
or some other dependency which might be missing.
Add println!("cargo:rustc-link-arg-tests=-Tdefmt.x");
or some other dependency which might be missing. to your build.rs
.