Merge pull request from plaes/faq-fixes

Faq fixes due to embassy-time crate split
This commit is contained in:
Ulf Lilleengen
2024-02-09 08:46:03 +00:00
committed by GitHub
2 changed files with 11 additions and 7 deletions
docs/modules/ROOT/pages

@ -3,8 +3,10 @@
Over time, a couple of best practices have emerged. The following list should serve as a guideline for developers writing embedded software in _Rust_, especially in the context of the _Embassy_ framework. Over time, a couple of best practices have emerged. The following list should serve as a guideline for developers writing embedded software in _Rust_, especially in the context of the _Embassy_ framework.
== Passing Buffers by Reference == Passing Buffers by Reference
It may be tempting to pass arrays or wrappers, like link:https://docs.rs/heapless/latest/heapless/[`heapless::Vec`], to a function or return one just like you would with a `std::Vec`. However, in most embedded applications you don't want to spend ressources on an allocator and end up placing buffers on the stack. It may be tempting to pass arrays or wrappers, like link:https://docs.rs/heapless/latest/heapless/[`heapless::Vec`],
This, however, can easily blow up your stack if you are not careful. to a function or return one just like you would with a `std::Vec`. However, in most embedded applications you don't
want to spend resources on an allocator and end up placing buffers on the stack. This, however, can easily blow up
your stack if you are not careful.
Consider the following example: Consider the following example:
[,rust] [,rust]

@ -29,11 +29,10 @@ If you see an error like this:
You are likely missing some features of the `embassy-executor` crate. You are likely missing some features of the `embassy-executor` crate.
For Cortex-M targets, consider making sure that ALL of the following features are active in your `Cargo.toml` for the `embassy-executor` crate: For Cortex-M targets, check whether ALL of the following features are enabled in your `Cargo.toml` for the `embassy-executor` crate:
* `arch-cortex-m` * `arch-cortex-m`
* `executor-thread` * `executor-thread`
* `nightly`
For ESP32, consider using the executors and `#[main]` macro provided by your appropriate link:https://crates.io/crates/esp-hal-common[HAL crate]. For ESP32, consider using the executors and `#[main]` macro provided by your appropriate link:https://crates.io/crates/esp-hal-common[HAL crate].
@ -125,15 +124,18 @@ You have multiple versions of the same crate in your dependency tree. This means
embassy crates are coming from crates.io, and some from git, each of them pulling in a different set embassy crates are coming from crates.io, and some from git, each of them pulling in a different set
of dependencies. of dependencies.
To resolve this issue, make sure to only use a single source for all your embassy crates! To do this, To resolve this issue, make sure to only use a single source for all your embassy crates!
you should patch your dependencies to use git sources using `[patch.crates.io]` and maybe `[patch.'https://github.com/embassy-rs/embassy.git']`. To do this, you should patch your dependencies to use git sources using `[patch.crates.io]`
and maybe `[patch.'https://github.com/embassy-rs/embassy.git']`.
Example: Example:
[source,toml] [source,toml]
---- ----
[patch.crates-io] [patch.crates-io]
embassy-time = { git = "https://github.com/embassy-rs/embassy.git", rev = "e5fdd35" } embassy-time-queue-driver = { git = "https://github.com/embassy-rs/embassy.git", rev = "e5fdd35" }
embassy-time-driver = { git = "https://github.com/embassy-rs/embassy.git", rev = "e5fdd35" }
# embassy-time = { git = "https://github.com/embassy-rs/embassy.git", rev = "e5fdd35" }
---- ----
Note that the git revision should match any other embassy patches or git dependencies that you are using! Note that the git revision should match any other embassy patches or git dependencies that you are using!