diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2023-04-20 09:19:54 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-04-20 09:19:54 +0000 |
| commit | fb27594b2eb2cca2aea25dd92a7b730c185b6ecc (patch) | |
| tree | c39b55c66f8c9f65e17aabb2f70b964e9dcb9e0a | |
| parent | 9b51c8f4d441a3e1550305c126e9f74fff030fd5 (diff) | |
| parent | a73f9474a0dc4af1ebfb22d7960e6c4b3aca81bd (diff) | |
Merge #1383
1383: embassy-boot: Add nightly flag r=Dirbaio a=sawi97
This adds "nightly" as a flag to embassy-boot and embassy-boot-nrf which gates features requiring nightly, enabled by default.
Makes it possible to build the bootloader with the stable compiler when setting `default-features=false`.
It should be straight forward to do this for stm32 and rp as well, but I am not been able to test it.
Co-authored-by: sander <[email protected]>
Co-authored-by: sawi97 <[email protected]>
27 files changed, 72 insertions, 37 deletions
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 3bfe5ef03..79354fe70 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml | |||
| @@ -71,7 +71,7 @@ jobs: | |||
| 71 | 71 | ||
| 72 | - name: Test boot | 72 | - name: Test boot |
| 73 | working-directory: ./embassy-boot/boot | 73 | working-directory: ./embassy-boot/boot |
| 74 | run: cargo test && cargo test --features "ed25519-dalek" && cargo test --features "ed25519-salty" | 74 | run: cargo test && cargo test --features nightly && cargo test --features "ed25519-dalek,nightly" && cargo test --features "ed25519-salty,nightly" |
| 75 | 75 | ||
| 76 | - name: Test sync | 76 | - name: Test sync |
| 77 | working-directory: ./embassy-sync | 77 | working-directory: ./embassy-sync |
| @@ -69,10 +69,10 @@ cargo batch \ | |||
| 69 | --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features nightly,stm32f100c4,defmt,exti,time-driver-any,unstable-traits \ | 69 | --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features nightly,stm32f100c4,defmt,exti,time-driver-any,unstable-traits \ |
| 70 | --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features nightly,stm32h503rb,defmt,exti,time-driver-any,unstable-traits \ | 70 | --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features nightly,stm32h503rb,defmt,exti,time-driver-any,unstable-traits \ |
| 71 | --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features nightly,stm32h562ag,defmt,exti,time-driver-any,unstable-traits \ | 71 | --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features nightly,stm32h562ag,defmt,exti,time-driver-any,unstable-traits \ |
| 72 | --- build --release --manifest-path embassy-boot/nrf/Cargo.toml --target thumbv7em-none-eabi --features embassy-nrf/nrf52840 \ | 72 | --- build --release --manifest-path embassy-boot/nrf/Cargo.toml --target thumbv7em-none-eabi --features embassy-nrf/nrf52840,nightly \ |
| 73 | --- build --release --manifest-path embassy-boot/nrf/Cargo.toml --target thumbv8m.main-none-eabihf --features embassy-nrf/nrf9160-ns \ | 73 | --- build --release --manifest-path embassy-boot/nrf/Cargo.toml --target thumbv8m.main-none-eabihf --features embassy-nrf/nrf9160-ns,nightly \ |
| 74 | --- build --release --manifest-path embassy-boot/rp/Cargo.toml --target thumbv6m-none-eabi \ | 74 | --- build --release --manifest-path embassy-boot/rp/Cargo.toml --target thumbv6m-none-eabi --features nightly \ |
| 75 | --- build --release --manifest-path embassy-boot/stm32/Cargo.toml --target thumbv7em-none-eabi --features embassy-stm32/stm32wl55jc-cm4 \ | 75 | --- build --release --manifest-path embassy-boot/stm32/Cargo.toml --target thumbv7em-none-eabi --features embassy-stm32/stm32wl55jc-cm4,nightly \ |
| 76 | --- build --release --manifest-path docs/modules/ROOT/examples/basic/Cargo.toml --target thumbv7em-none-eabi \ | 76 | --- build --release --manifest-path docs/modules/ROOT/examples/basic/Cargo.toml --target thumbv7em-none-eabi \ |
| 77 | --- build --release --manifest-path docs/modules/ROOT/examples/layer-by-layer/blinky-pac/Cargo.toml --target thumbv7em-none-eabi \ | 77 | --- build --release --manifest-path docs/modules/ROOT/examples/layer-by-layer/blinky-pac/Cargo.toml --target thumbv7em-none-eabi \ |
| 78 | --- build --release --manifest-path docs/modules/ROOT/examples/layer-by-layer/blinky-hal/Cargo.toml --target thumbv7em-none-eabi \ | 78 | --- build --release --manifest-path docs/modules/ROOT/examples/layer-by-layer/blinky-hal/Cargo.toml --target thumbv7em-none-eabi \ |
diff --git a/ci_stable.sh b/ci_stable.sh index 18271ee73..55a2f89a0 100755 --- a/ci_stable.sh +++ b/ci_stable.sh | |||
| @@ -9,6 +9,10 @@ export DEFMT_LOG=trace | |||
| 9 | sed -i 's/channel.*/channel = "stable"/g' rust-toolchain.toml | 9 | sed -i 's/channel.*/channel = "stable"/g' rust-toolchain.toml |
| 10 | 10 | ||
| 11 | cargo batch \ | 11 | cargo batch \ |
| 12 | --- build --release --manifest-path embassy-boot/nrf/Cargo.toml --target thumbv7em-none-eabi --features embassy-nrf/nrf52840 \ | ||
| 13 | --- build --release --manifest-path embassy-boot/nrf/Cargo.toml --target thumbv8m.main-none-eabihf --features embassy-nrf/nrf9160-ns \ | ||
| 14 | --- build --release --manifest-path embassy-boot/rp/Cargo.toml --target thumbv6m-none-eabi \ | ||
| 15 | --- build --release --manifest-path embassy-boot/stm32/Cargo.toml --target thumbv7em-none-eabi --features embassy-stm32/stm32wl55jc-cm4 \ | ||
| 12 | --- build --release --manifest-path embassy-executor/Cargo.toml --target thumbv7em-none-eabi \ | 16 | --- build --release --manifest-path embassy-executor/Cargo.toml --target thumbv7em-none-eabi \ |
| 13 | --- build --release --manifest-path embassy-executor/Cargo.toml --target thumbv7em-none-eabi --features log \ | 17 | --- build --release --manifest-path embassy-executor/Cargo.toml --target thumbv7em-none-eabi --features log \ |
| 14 | --- build --release --manifest-path embassy-executor/Cargo.toml --target thumbv7em-none-eabi --features defmt \ | 18 | --- build --release --manifest-path embassy-executor/Cargo.toml --target thumbv7em-none-eabi --features defmt \ |
diff --git a/embassy-boot/boot/Cargo.toml b/embassy-boot/boot/Cargo.toml index d44aee349..f641d5e1c 100644 --- a/embassy-boot/boot/Cargo.toml +++ b/embassy-boot/boot/Cargo.toml | |||
| @@ -29,7 +29,7 @@ log = { version = "0.4", optional = true } | |||
| 29 | ed25519-dalek = { version = "1.0.1", default_features = false, features = ["u32_backend"], optional = true } | 29 | ed25519-dalek = { version = "1.0.1", default_features = false, features = ["u32_backend"], optional = true } |
| 30 | embassy-sync = { version = "0.2.0", path = "../../embassy-sync" } | 30 | embassy-sync = { version = "0.2.0", path = "../../embassy-sync" } |
| 31 | embedded-storage = "0.3.0" | 31 | embedded-storage = "0.3.0" |
| 32 | embedded-storage-async = "0.4.0" | 32 | embedded-storage-async = { version = "0.4.0", optional = true} |
| 33 | salty = { git = "https://github.com/ycrypto/salty.git", rev = "a9f17911a5024698406b75c0fac56ab5ccf6a8c7", optional = true } | 33 | salty = { git = "https://github.com/ycrypto/salty.git", rev = "a9f17911a5024698406b75c0fac56ab5ccf6a8c7", optional = true } |
| 34 | signature = { version = "1.6.4", default-features = false } | 34 | signature = { version = "1.6.4", default-features = false } |
| 35 | 35 | ||
| @@ -48,5 +48,7 @@ features = ["rand", "std", "u32_backend"] | |||
| 48 | ed25519-dalek = ["dep:ed25519-dalek", "_verify"] | 48 | ed25519-dalek = ["dep:ed25519-dalek", "_verify"] |
| 49 | ed25519-salty = ["dep:salty", "_verify"] | 49 | ed25519-salty = ["dep:salty", "_verify"] |
| 50 | 50 | ||
| 51 | nightly = ["dep:embedded-storage-async"] | ||
| 52 | |||
| 51 | #Internal features | 53 | #Internal features |
| 52 | _verify = [] | 54 | _verify = [] |
diff --git a/embassy-boot/boot/README.md b/embassy-boot/boot/README.md index 56f4a6279..07755bc6c 100644 --- a/embassy-boot/boot/README.md +++ b/embassy-boot/boot/README.md | |||
| @@ -18,7 +18,7 @@ The bootloader supports different hardware in separate crates: | |||
| 18 | 18 | ||
| 19 | ## Minimum supported Rust version (MSRV) | 19 | ## Minimum supported Rust version (MSRV) |
| 20 | 20 | ||
| 21 | `embassy-boot` requires Rust nightly to compile as it relies on async traits for interacting with the flash peripherals. | 21 | `embassy-boot` is guaranteed to compile on the latest stable Rust version at the time of release. It might compile with older versions but that may change in any new patch release. |
| 22 | 22 | ||
| 23 | ## License | 23 | ## License |
| 24 | 24 | ||
diff --git a/embassy-boot/boot/src/firmware_updater.rs b/embassy-boot/boot/src/firmware_updater.rs index a2f822f4a..92987825f 100644 --- a/embassy-boot/boot/src/firmware_updater.rs +++ b/embassy-boot/boot/src/firmware_updater.rs | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | use digest::Digest; | 1 | use digest::Digest; |
| 2 | use embedded_storage::nor_flash::{NorFlash, NorFlashError, NorFlashErrorKind}; | 2 | use embedded_storage::nor_flash::{NorFlash, NorFlashError, NorFlashErrorKind}; |
| 3 | #[cfg(feature = "nightly")] | ||
| 3 | use embedded_storage_async::nor_flash::NorFlash as AsyncNorFlash; | 4 | use embedded_storage_async::nor_flash::NorFlash as AsyncNorFlash; |
| 4 | 5 | ||
| 5 | use crate::{Partition, State, BOOT_MAGIC, SWAP_MAGIC}; | 6 | use crate::{Partition, State, BOOT_MAGIC, SWAP_MAGIC}; |
| @@ -78,6 +79,7 @@ impl FirmwareUpdater { | |||
| 78 | /// This is useful to check if the bootloader has just done a swap, in order | 79 | /// This is useful to check if the bootloader has just done a swap, in order |
| 79 | /// to do verifications and self-tests of the new image before calling | 80 | /// to do verifications and self-tests of the new image before calling |
| 80 | /// `mark_booted`. | 81 | /// `mark_booted`. |
| 82 | #[cfg(feature = "nightly")] | ||
| 81 | pub async fn get_state<F: AsyncNorFlash>( | 83 | pub async fn get_state<F: AsyncNorFlash>( |
| 82 | &mut self, | 84 | &mut self, |
| 83 | state_flash: &mut F, | 85 | state_flash: &mut F, |
| @@ -108,7 +110,7 @@ impl FirmwareUpdater { | |||
| 108 | /// | 110 | /// |
| 109 | /// The `_aligned` buffer must have a size of F::WRITE_SIZE, and follow the alignment rules for the flash being read from | 111 | /// The `_aligned` buffer must have a size of F::WRITE_SIZE, and follow the alignment rules for the flash being read from |
| 110 | /// and written to. | 112 | /// and written to. |
| 111 | #[cfg(feature = "_verify")] | 113 | #[cfg(all(feature = "_verify", feature = "nightly"))] |
| 112 | pub async fn verify_and_mark_updated<F: AsyncNorFlash>( | 114 | pub async fn verify_and_mark_updated<F: AsyncNorFlash>( |
| 113 | &mut self, | 115 | &mut self, |
| 114 | _state_and_dfu_flash: &mut F, | 116 | _state_and_dfu_flash: &mut F, |
| @@ -172,6 +174,7 @@ impl FirmwareUpdater { | |||
| 172 | } | 174 | } |
| 173 | 175 | ||
| 174 | /// Verify the update in DFU with any digest. | 176 | /// Verify the update in DFU with any digest. |
| 177 | #[cfg(feature = "nightly")] | ||
| 175 | pub async fn hash<F: AsyncNorFlash, D: Digest>( | 178 | pub async fn hash<F: AsyncNorFlash, D: Digest>( |
| 176 | &mut self, | 179 | &mut self, |
| 177 | dfu_flash: &mut F, | 180 | dfu_flash: &mut F, |
| @@ -194,7 +197,7 @@ impl FirmwareUpdater { | |||
| 194 | /// # Safety | 197 | /// # Safety |
| 195 | /// | 198 | /// |
| 196 | /// The `aligned` buffer must have a size of F::WRITE_SIZE, and follow the alignment rules for the flash being written to. | 199 | /// The `aligned` buffer must have a size of F::WRITE_SIZE, and follow the alignment rules for the flash being written to. |
| 197 | #[cfg(not(feature = "_verify"))] | 200 | #[cfg(all(feature = "nightly", not(feature = "_verify")))] |
| 198 | pub async fn mark_updated<F: AsyncNorFlash>( | 201 | pub async fn mark_updated<F: AsyncNorFlash>( |
| 199 | &mut self, | 202 | &mut self, |
| 200 | state_flash: &mut F, | 203 | state_flash: &mut F, |
| @@ -209,6 +212,7 @@ impl FirmwareUpdater { | |||
| 209 | /// # Safety | 212 | /// # Safety |
| 210 | /// | 213 | /// |
| 211 | /// The `aligned` buffer must have a size of F::WRITE_SIZE, and follow the alignment rules for the flash being written to. | 214 | /// The `aligned` buffer must have a size of F::WRITE_SIZE, and follow the alignment rules for the flash being written to. |
| 215 | #[cfg(feature = "nightly")] | ||
| 212 | pub async fn mark_booted<F: AsyncNorFlash>( | 216 | pub async fn mark_booted<F: AsyncNorFlash>( |
| 213 | &mut self, | 217 | &mut self, |
| 214 | state_flash: &mut F, | 218 | state_flash: &mut F, |
| @@ -218,6 +222,7 @@ impl FirmwareUpdater { | |||
| 218 | self.set_magic(aligned, BOOT_MAGIC, state_flash).await | 222 | self.set_magic(aligned, BOOT_MAGIC, state_flash).await |
| 219 | } | 223 | } |
| 220 | 224 | ||
| 225 | #[cfg(feature = "nightly")] | ||
| 221 | async fn set_magic<F: AsyncNorFlash>( | 226 | async fn set_magic<F: AsyncNorFlash>( |
| 222 | &mut self, | 227 | &mut self, |
| 223 | aligned: &mut [u8], | 228 | aligned: &mut [u8], |
| @@ -258,6 +263,7 @@ impl FirmwareUpdater { | |||
| 258 | /// # Safety | 263 | /// # Safety |
| 259 | /// | 264 | /// |
| 260 | /// Failing to meet alignment and size requirements may result in a panic. | 265 | /// Failing to meet alignment and size requirements may result in a panic. |
| 266 | #[cfg(feature = "nightly")] | ||
| 261 | pub async fn write_firmware<F: AsyncNorFlash>( | 267 | pub async fn write_firmware<F: AsyncNorFlash>( |
| 262 | &mut self, | 268 | &mut self, |
| 263 | offset: usize, | 269 | offset: usize, |
| @@ -280,6 +286,7 @@ impl FirmwareUpdater { | |||
| 280 | /// | 286 | /// |
| 281 | /// Using this instead of `write_firmware` allows for an optimized API in | 287 | /// Using this instead of `write_firmware` allows for an optimized API in |
| 282 | /// exchange for added complexity. | 288 | /// exchange for added complexity. |
| 289 | #[cfg(feature = "nightly")] | ||
| 283 | pub async fn prepare_update<F: AsyncNorFlash>( | 290 | pub async fn prepare_update<F: AsyncNorFlash>( |
| 284 | &mut self, | 291 | &mut self, |
| 285 | dfu_flash: &mut F, | 292 | dfu_flash: &mut F, |
| @@ -513,6 +520,7 @@ mod tests { | |||
| 513 | use crate::mem_flash::MemFlash; | 520 | use crate::mem_flash::MemFlash; |
| 514 | 521 | ||
| 515 | #[test] | 522 | #[test] |
| 523 | #[cfg(feature = "nightly")] | ||
| 516 | fn can_verify_sha1() { | 524 | fn can_verify_sha1() { |
| 517 | const STATE: Partition = Partition::new(0, 4096); | 525 | const STATE: Partition = Partition::new(0, 4096); |
| 518 | const DFU: Partition = Partition::new(65536, 131072); | 526 | const DFU: Partition = Partition::new(65536, 131072); |
diff --git a/embassy-boot/boot/src/lib.rs b/embassy-boot/boot/src/lib.rs index 87457b173..8eb3ba96d 100644 --- a/embassy-boot/boot/src/lib.rs +++ b/embassy-boot/boot/src/lib.rs | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | #![feature(async_fn_in_trait)] | 1 | #![cfg_attr(feature = "nightly", feature(async_fn_in_trait))] |
| 2 | #![allow(incomplete_features)] | 2 | #![allow(incomplete_features)] |
| 3 | #![no_std] | 3 | #![no_std] |
| 4 | #![warn(missing_docs)] | 4 | #![warn(missing_docs)] |
| @@ -83,7 +83,7 @@ mod tests { | |||
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | #[test] | 85 | #[test] |
| 86 | #[cfg(not(feature = "_verify"))] | 86 | #[cfg(all(feature = "nightly", not(feature = "_verify")))] |
| 87 | fn test_swap_state() { | 87 | fn test_swap_state() { |
| 88 | const STATE: Partition = Partition::new(0, 4096); | 88 | const STATE: Partition = Partition::new(0, 4096); |
| 89 | const ACTIVE: Partition = Partition::new(4096, 61440); | 89 | const ACTIVE: Partition = Partition::new(4096, 61440); |
| @@ -136,7 +136,7 @@ mod tests { | |||
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | #[test] | 138 | #[test] |
| 139 | #[cfg(not(feature = "_verify"))] | 139 | #[cfg(all(feature = "nightly", not(feature = "_verify")))] |
| 140 | fn test_separate_flash_active_page_biggest() { | 140 | fn test_separate_flash_active_page_biggest() { |
| 141 | const STATE: Partition = Partition::new(2048, 4096); | 141 | const STATE: Partition = Partition::new(2048, 4096); |
| 142 | const ACTIVE: Partition = Partition::new(4096, 16384); | 142 | const ACTIVE: Partition = Partition::new(4096, 16384); |
| @@ -173,7 +173,7 @@ mod tests { | |||
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | #[test] | 175 | #[test] |
| 176 | #[cfg(not(feature = "_verify"))] | 176 | #[cfg(all(feature = "nightly", not(feature = "_verify")))] |
| 177 | fn test_separate_flash_dfu_page_biggest() { | 177 | fn test_separate_flash_dfu_page_biggest() { |
| 178 | const STATE: Partition = Partition::new(2048, 4096); | 178 | const STATE: Partition = Partition::new(2048, 4096); |
| 179 | const ACTIVE: Partition = Partition::new(4096, 16384); | 179 | const ACTIVE: Partition = Partition::new(4096, 16384); |
| @@ -212,7 +212,7 @@ mod tests { | |||
| 212 | } | 212 | } |
| 213 | 213 | ||
| 214 | #[test] | 214 | #[test] |
| 215 | #[cfg(feature = "_verify")] | 215 | #[cfg(all(feature = "nightly", feature = "_verify"))] |
| 216 | fn test_verify() { | 216 | fn test_verify() { |
| 217 | // The following key setup is based on: | 217 | // The following key setup is based on: |
| 218 | // https://docs.rs/ed25519-dalek/latest/ed25519_dalek/#example | 218 | // https://docs.rs/ed25519-dalek/latest/ed25519_dalek/#example |
diff --git a/embassy-boot/boot/src/mem_flash.rs b/embassy-boot/boot/src/mem_flash.rs index c62379b24..3ba84a92c 100644 --- a/embassy-boot/boot/src/mem_flash.rs +++ b/embassy-boot/boot/src/mem_flash.rs | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | use core::ops::{Bound, Range, RangeBounds}; | 3 | use core::ops::{Bound, Range, RangeBounds}; |
| 4 | 4 | ||
| 5 | use embedded_storage::nor_flash::{ErrorType, NorFlash, NorFlashError, NorFlashErrorKind, ReadNorFlash}; | 5 | use embedded_storage::nor_flash::{ErrorType, NorFlash, NorFlashError, NorFlashErrorKind, ReadNorFlash}; |
| 6 | #[cfg(feature = "nightly")] | ||
| 6 | use embedded_storage_async::nor_flash::{NorFlash as AsyncNorFlash, ReadNorFlash as AsyncReadNorFlash}; | 7 | use embedded_storage_async::nor_flash::{NorFlash as AsyncNorFlash, ReadNorFlash as AsyncReadNorFlash}; |
| 7 | 8 | ||
| 8 | pub struct MemFlash<const SIZE: usize, const ERASE_SIZE: usize, const WRITE_SIZE: usize> { | 9 | pub struct MemFlash<const SIZE: usize, const ERASE_SIZE: usize, const WRITE_SIZE: usize> { |
| @@ -134,6 +135,7 @@ impl<const SIZE: usize, const ERASE_SIZE: usize, const WRITE_SIZE: usize> NorFla | |||
| 134 | } | 135 | } |
| 135 | } | 136 | } |
| 136 | 137 | ||
| 138 | #[cfg(feature = "nightly")] | ||
| 137 | impl<const SIZE: usize, const ERASE_SIZE: usize, const WRITE_SIZE: usize> AsyncReadNorFlash | 139 | impl<const SIZE: usize, const ERASE_SIZE: usize, const WRITE_SIZE: usize> AsyncReadNorFlash |
| 138 | for MemFlash<SIZE, ERASE_SIZE, WRITE_SIZE> | 140 | for MemFlash<SIZE, ERASE_SIZE, WRITE_SIZE> |
| 139 | { | 141 | { |
| @@ -148,6 +150,7 @@ impl<const SIZE: usize, const ERASE_SIZE: usize, const WRITE_SIZE: usize> AsyncR | |||
| 148 | } | 150 | } |
| 149 | } | 151 | } |
| 150 | 152 | ||
| 153 | #[cfg(feature = "nightly")] | ||
| 151 | impl<const SIZE: usize, const ERASE_SIZE: usize, const WRITE_SIZE: usize> AsyncNorFlash | 154 | impl<const SIZE: usize, const ERASE_SIZE: usize, const WRITE_SIZE: usize> AsyncNorFlash |
| 152 | for MemFlash<SIZE, ERASE_SIZE, WRITE_SIZE> | 155 | for MemFlash<SIZE, ERASE_SIZE, WRITE_SIZE> |
| 153 | { | 156 | { |
diff --git a/embassy-boot/boot/src/partition.rs b/embassy-boot/boot/src/partition.rs index 7529059b6..7b56a8240 100644 --- a/embassy-boot/boot/src/partition.rs +++ b/embassy-boot/boot/src/partition.rs | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | use embedded_storage::nor_flash::{NorFlash, ReadNorFlash}; | 1 | use embedded_storage::nor_flash::{NorFlash, ReadNorFlash}; |
| 2 | #[cfg(feature = "nightly")] | ||
| 2 | use embedded_storage_async::nor_flash::{NorFlash as AsyncNorFlash, ReadNorFlash as AsyncReadNorFlash}; | 3 | use embedded_storage_async::nor_flash::{NorFlash as AsyncNorFlash, ReadNorFlash as AsyncReadNorFlash}; |
| 3 | 4 | ||
| 4 | /// A region in flash used by the bootloader. | 5 | /// A region in flash used by the bootloader. |
| @@ -23,6 +24,7 @@ impl Partition { | |||
| 23 | } | 24 | } |
| 24 | 25 | ||
| 25 | /// Read from the partition on the provided flash | 26 | /// Read from the partition on the provided flash |
| 27 | #[cfg(feature = "nightly")] | ||
| 26 | pub async fn read<F: AsyncReadNorFlash>( | 28 | pub async fn read<F: AsyncReadNorFlash>( |
| 27 | &self, | 29 | &self, |
| 28 | flash: &mut F, | 30 | flash: &mut F, |
| @@ -34,6 +36,7 @@ impl Partition { | |||
| 34 | } | 36 | } |
| 35 | 37 | ||
| 36 | /// Write to the partition on the provided flash | 38 | /// Write to the partition on the provided flash |
| 39 | #[cfg(feature = "nightly")] | ||
| 37 | pub async fn write<F: AsyncNorFlash>(&self, flash: &mut F, offset: u32, bytes: &[u8]) -> Result<(), F::Error> { | 40 | pub async fn write<F: AsyncNorFlash>(&self, flash: &mut F, offset: u32, bytes: &[u8]) -> Result<(), F::Error> { |
| 38 | let offset = self.from as u32 + offset; | 41 | let offset = self.from as u32 + offset; |
| 39 | flash.write(offset, bytes).await?; | 42 | flash.write(offset, bytes).await?; |
| @@ -42,6 +45,7 @@ impl Partition { | |||
| 42 | } | 45 | } |
| 43 | 46 | ||
| 44 | /// Erase part of the partition on the provided flash | 47 | /// Erase part of the partition on the provided flash |
| 48 | #[cfg(feature = "nightly")] | ||
| 45 | pub async fn erase<F: AsyncNorFlash>(&self, flash: &mut F, from: u32, to: u32) -> Result<(), F::Error> { | 49 | pub async fn erase<F: AsyncNorFlash>(&self, flash: &mut F, from: u32, to: u32) -> Result<(), F::Error> { |
| 46 | let from = self.from as u32 + from; | 50 | let from = self.from as u32 + from; |
| 47 | let to = self.from as u32 + to; | 51 | let to = self.from as u32 + to; |
| @@ -51,6 +55,7 @@ impl Partition { | |||
| 51 | } | 55 | } |
| 52 | 56 | ||
| 53 | /// Erase the entire partition | 57 | /// Erase the entire partition |
| 58 | #[cfg(feature = "nightly")] | ||
| 54 | pub(crate) async fn wipe<F: AsyncNorFlash>(&self, flash: &mut F) -> Result<(), F::Error> { | 59 | pub(crate) async fn wipe<F: AsyncNorFlash>(&self, flash: &mut F) -> Result<(), F::Error> { |
| 55 | let from = self.from as u32; | 60 | let from = self.from as u32; |
| 56 | let to = self.to as u32; | 61 | let to = self.to as u32; |
diff --git a/embassy-boot/nrf/Cargo.toml b/embassy-boot/nrf/Cargo.toml index c1a127518..e46736889 100644 --- a/embassy-boot/nrf/Cargo.toml +++ b/embassy-boot/nrf/Cargo.toml | |||
| @@ -17,12 +17,12 @@ target = "thumbv7em-none-eabi" | |||
| 17 | defmt = { version = "0.3", optional = true } | 17 | defmt = { version = "0.3", optional = true } |
| 18 | 18 | ||
| 19 | embassy-sync = { path = "../../embassy-sync" } | 19 | embassy-sync = { path = "../../embassy-sync" } |
| 20 | embassy-nrf = { path = "../../embassy-nrf", default-features = false, features = ["nightly"] } | 20 | embassy-nrf = { path = "../../embassy-nrf", default-features = false } |
| 21 | embassy-boot = { path = "../boot", default-features = false } | 21 | embassy-boot = { path = "../boot", default-features = false } |
| 22 | cortex-m = { version = "0.7.6" } | 22 | cortex-m = { version = "0.7.6" } |
| 23 | cortex-m-rt = { version = "0.7" } | 23 | cortex-m-rt = { version = "0.7" } |
| 24 | embedded-storage = "0.3.0" | 24 | embedded-storage = "0.3.0" |
| 25 | embedded-storage-async = "0.4.0" | 25 | embedded-storage-async = { version = "0.4.0", optional = true } |
| 26 | cfg-if = "1.0.0" | 26 | cfg-if = "1.0.0" |
| 27 | 27 | ||
| 28 | nrf-softdevice-mbr = { version = "0.1.0", git = "https://github.com/embassy-rs/nrf-softdevice.git", branch = "master", optional = true } | 28 | nrf-softdevice-mbr = { version = "0.1.0", git = "https://github.com/embassy-rs/nrf-softdevice.git", branch = "master", optional = true } |
| @@ -36,3 +36,8 @@ defmt = [ | |||
| 36 | softdevice = [ | 36 | softdevice = [ |
| 37 | "nrf-softdevice-mbr", | 37 | "nrf-softdevice-mbr", |
| 38 | ] | 38 | ] |
| 39 | nightly = [ | ||
| 40 | "dep:embedded-storage-async", | ||
| 41 | "embassy-boot/nightly", | ||
| 42 | "embassy-nrf/nightly" | ||
| 43 | ] | ||
diff --git a/embassy-boot/nrf/README.md b/embassy-boot/nrf/README.md index 02f35c0a6..7ce3c7021 100644 --- a/embassy-boot/nrf/README.md +++ b/embassy-boot/nrf/README.md | |||
| @@ -13,7 +13,7 @@ An adaptation of `embassy-boot` for nRF. | |||
| 13 | 13 | ||
| 14 | ## Minimum supported Rust version (MSRV) | 14 | ## Minimum supported Rust version (MSRV) |
| 15 | 15 | ||
| 16 | `embassy-boot-nrf` requires Rust nightly to compile as it relies on async traits for interacting with the flash peripherals. | 16 | `embassy-boot-nrf` is guaranteed to compile on the latest stable Rust version at the time of release. It might compile with older versions but that may change in any new patch release. |
| 17 | 17 | ||
| 18 | ## License | 18 | ## License |
| 19 | 19 | ||
diff --git a/embassy-boot/nrf/src/lib.rs b/embassy-boot/nrf/src/lib.rs index d46ed9f36..14bea1f79 100644 --- a/embassy-boot/nrf/src/lib.rs +++ b/embassy-boot/nrf/src/lib.rs | |||
| @@ -1,5 +1,4 @@ | |||
| 1 | #![no_std] | 1 | #![no_std] |
| 2 | #![feature(type_alias_impl_trait)] | ||
| 3 | #![warn(missing_docs)] | 2 | #![warn(missing_docs)] |
| 4 | #![doc = include_str!("../README.md")] | 3 | #![doc = include_str!("../README.md")] |
| 5 | mod fmt; | 4 | mod fmt; |
diff --git a/embassy-boot/rp/Cargo.toml b/embassy-boot/rp/Cargo.toml index 96024cdda..5147392ce 100644 --- a/embassy-boot/rp/Cargo.toml +++ b/embassy-boot/rp/Cargo.toml | |||
| @@ -18,14 +18,14 @@ defmt-rtt = { version = "0.4", optional = true } | |||
| 18 | log = { version = "0.4", optional = true } | 18 | log = { version = "0.4", optional = true } |
| 19 | 19 | ||
| 20 | embassy-sync = { path = "../../embassy-sync" } | 20 | embassy-sync = { path = "../../embassy-sync" } |
| 21 | embassy-rp = { path = "../../embassy-rp", default-features = false, features = ["nightly"] } | 21 | embassy-rp = { path = "../../embassy-rp", default-features = false } |
| 22 | embassy-boot = { path = "../boot", default-features = false } | 22 | embassy-boot = { path = "../boot", default-features = false } |
| 23 | embassy-time = { path = "../../embassy-time", features = ["nightly"] } | 23 | embassy-time = { path = "../../embassy-time" } |
| 24 | 24 | ||
| 25 | cortex-m = { version = "0.7.6" } | 25 | cortex-m = { version = "0.7.6" } |
| 26 | cortex-m-rt = { version = "0.7" } | 26 | cortex-m-rt = { version = "0.7" } |
| 27 | embedded-storage = "0.3.0" | 27 | embedded-storage = "0.3.0" |
| 28 | embedded-storage-async = "0.4.0" | 28 | embedded-storage-async = { version = "0.4.0", optional = true } |
| 29 | cfg-if = "1.0.0" | 29 | cfg-if = "1.0.0" |
| 30 | 30 | ||
| 31 | [features] | 31 | [features] |
| @@ -40,6 +40,12 @@ log = [ | |||
| 40 | "embassy-rp/log", | 40 | "embassy-rp/log", |
| 41 | ] | 41 | ] |
| 42 | debug = ["defmt-rtt"] | 42 | debug = ["defmt-rtt"] |
| 43 | nightly = [ | ||
| 44 | "dep:embedded-storage-async", | ||
| 45 | "embassy-boot/nightly", | ||
| 46 | "embassy-rp/nightly", | ||
| 47 | "embassy-time/nightly" | ||
| 48 | ] | ||
| 43 | 49 | ||
| 44 | [profile.dev] | 50 | [profile.dev] |
| 45 | debug = 2 | 51 | debug = 2 |
diff --git a/embassy-boot/rp/README.md b/embassy-boot/rp/README.md index c0c2d85fa..315d655e3 100644 --- a/embassy-boot/rp/README.md +++ b/embassy-boot/rp/README.md | |||
| @@ -13,7 +13,7 @@ NOTE: The applications using this bootloader should not link with the `link-rp.x | |||
| 13 | 13 | ||
| 14 | ## Minimum supported Rust version (MSRV) | 14 | ## Minimum supported Rust version (MSRV) |
| 15 | 15 | ||
| 16 | `embassy-boot-rp` requires Rust nightly to compile as it relies on async traits for interacting with the flash peripherals. | 16 | `embassy-boot-rp` is guaranteed to compile on the latest stable Rust version at the time of release. It might compile with older versions but that may change in any new patch release. |
| 17 | 17 | ||
| 18 | ## License | 18 | ## License |
| 19 | 19 | ||
diff --git a/embassy-boot/rp/src/lib.rs b/embassy-boot/rp/src/lib.rs index c3cb22299..0d577f08a 100644 --- a/embassy-boot/rp/src/lib.rs +++ b/embassy-boot/rp/src/lib.rs | |||
| @@ -1,5 +1,4 @@ | |||
| 1 | #![no_std] | 1 | #![no_std] |
| 2 | #![feature(type_alias_impl_trait)] | ||
| 3 | #![warn(missing_docs)] | 2 | #![warn(missing_docs)] |
| 4 | #![doc = include_str!("../README.md")] | 3 | #![doc = include_str!("../README.md")] |
| 5 | mod fmt; | 4 | mod fmt; |
diff --git a/embassy-boot/stm32/Cargo.toml b/embassy-boot/stm32/Cargo.toml index 7061063bb..99a6b8e0e 100644 --- a/embassy-boot/stm32/Cargo.toml +++ b/embassy-boot/stm32/Cargo.toml | |||
| @@ -19,12 +19,12 @@ defmt-rtt = { version = "0.4", optional = true } | |||
| 19 | log = { version = "0.4", optional = true } | 19 | log = { version = "0.4", optional = true } |
| 20 | 20 | ||
| 21 | embassy-sync = { path = "../../embassy-sync" } | 21 | embassy-sync = { path = "../../embassy-sync" } |
| 22 | embassy-stm32 = { path = "../../embassy-stm32", default-features = false, features = ["nightly"] } | 22 | embassy-stm32 = { path = "../../embassy-stm32", default-features = false } |
| 23 | embassy-boot = { path = "../boot", default-features = false } | 23 | embassy-boot = { path = "../boot", default-features = false } |
| 24 | cortex-m = { version = "0.7.6" } | 24 | cortex-m = { version = "0.7.6" } |
| 25 | cortex-m-rt = { version = "0.7" } | 25 | cortex-m-rt = { version = "0.7" } |
| 26 | embedded-storage = "0.3.0" | 26 | embedded-storage = "0.3.0" |
| 27 | embedded-storage-async = "0.4.0" | 27 | embedded-storage-async = { version = "0.4.0", optional = true } |
| 28 | cfg-if = "1.0.0" | 28 | cfg-if = "1.0.0" |
| 29 | 29 | ||
| 30 | [features] | 30 | [features] |
| @@ -39,6 +39,11 @@ log = [ | |||
| 39 | "embassy-stm32/log", | 39 | "embassy-stm32/log", |
| 40 | ] | 40 | ] |
| 41 | debug = ["defmt-rtt"] | 41 | debug = ["defmt-rtt"] |
| 42 | nightly = [ | ||
| 43 | "dep:embedded-storage-async", | ||
| 44 | "embassy-boot/nightly", | ||
| 45 | "embassy-stm32/nightly" | ||
| 46 | ] | ||
| 42 | 47 | ||
| 43 | [profile.dev] | 48 | [profile.dev] |
| 44 | debug = 2 | 49 | debug = 2 |
diff --git a/embassy-boot/stm32/README.md b/embassy-boot/stm32/README.md index cb134b534..b4d7ba5a4 100644 --- a/embassy-boot/stm32/README.md +++ b/embassy-boot/stm32/README.md | |||
| @@ -11,7 +11,7 @@ An adaptation of `embassy-boot` for STM32. | |||
| 11 | 11 | ||
| 12 | ## Minimum supported Rust version (MSRV) | 12 | ## Minimum supported Rust version (MSRV) |
| 13 | 13 | ||
| 14 | `embassy-boot-stm32` requires Rust nightly to compile as it relies on async traits for interacting with the flash peripherals. | 14 | `embassy-boot-stm32` is guaranteed to compile on the latest stable Rust version at the time of release. It might compile with older versions but that may change in any new patch release. |
| 15 | 15 | ||
| 16 | ## License | 16 | ## License |
| 17 | 17 | ||
diff --git a/embassy-boot/stm32/src/lib.rs b/embassy-boot/stm32/src/lib.rs index 94404697f..88ce1c878 100644 --- a/embassy-boot/stm32/src/lib.rs +++ b/embassy-boot/stm32/src/lib.rs | |||
| @@ -1,5 +1,4 @@ | |||
| 1 | #![no_std] | 1 | #![no_std] |
| 2 | #![feature(type_alias_impl_trait)] | ||
| 3 | #![warn(missing_docs)] | 2 | #![warn(missing_docs)] |
| 4 | #![doc = include_str!("../README.md")] | 3 | #![doc = include_str!("../README.md")] |
| 5 | mod fmt; | 4 | mod fmt; |
diff --git a/examples/boot/application/nrf/Cargo.toml b/examples/boot/application/nrf/Cargo.toml index d6a30602d..88528e763 100644 --- a/examples/boot/application/nrf/Cargo.toml +++ b/examples/boot/application/nrf/Cargo.toml | |||
| @@ -9,8 +9,8 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync" } | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers", "arch-cortex-m", "executor-thread"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers", "arch-cortex-m", "executor-thread"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly"] } |
| 11 | embassy-nrf = { version = "0.1.0", path = "../../../../embassy-nrf", features = ["time-driver-rtc1", "gpiote", "nightly"] } | 11 | embassy-nrf = { version = "0.1.0", path = "../../../../embassy-nrf", features = ["time-driver-rtc1", "gpiote", "nightly"] } |
| 12 | embassy-boot = { version = "0.1.0", path = "../../../../embassy-boot/boot" } | 12 | embassy-boot = { version = "0.1.0", path = "../../../../embassy-boot/boot", features = ["nightly"] } |
| 13 | embassy-boot-nrf = { version = "0.1.0", path = "../../../../embassy-boot/nrf" } | 13 | embassy-boot-nrf = { version = "0.1.0", path = "../../../../embassy-boot/nrf", features = ["nightly"] } |
| 14 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 14 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 15 | 15 | ||
| 16 | defmt = { version = "0.3", optional = true } | 16 | defmt = { version = "0.3", optional = true } |
diff --git a/examples/boot/application/rp/Cargo.toml b/examples/boot/application/rp/Cargo.toml index 62ef42d6b..782ccef2b 100644 --- a/examples/boot/application/rp/Cargo.toml +++ b/examples/boot/application/rp/Cargo.toml | |||
| @@ -9,7 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync" } | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers", "arch-cortex-m", "executor-thread"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers", "arch-cortex-m", "executor-thread"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly"] } |
| 11 | embassy-rp = { version = "0.1.0", path = "../../../../embassy-rp", features = ["time-driver", "unstable-traits", "nightly"] } | 11 | embassy-rp = { version = "0.1.0", path = "../../../../embassy-rp", features = ["time-driver", "unstable-traits", "nightly"] } |
| 12 | embassy-boot-rp = { version = "0.1.0", path = "../../../../embassy-boot/rp" } | 12 | embassy-boot-rp = { version = "0.1.0", path = "../../../../embassy-boot/rp", features = ["nightly"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 14 | 14 | ||
| 15 | defmt = "0.3" | 15 | defmt = "0.3" |
diff --git a/examples/boot/application/stm32f3/Cargo.toml b/examples/boot/application/stm32f3/Cargo.toml index e5fb1b01d..881191876 100644 --- a/examples/boot/application/stm32f3/Cargo.toml +++ b/examples/boot/application/stm32f3/Cargo.toml | |||
| @@ -9,7 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } |
| 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32f303re", "time-driver-any", "exti"] } | 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32f303re", "time-driver-any", "exti"] } |
| 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32" } | 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32", features = ["nightly"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 14 | 14 | ||
| 15 | defmt = { version = "0.3", optional = true } | 15 | defmt = { version = "0.3", optional = true } |
diff --git a/examples/boot/application/stm32f7/Cargo.toml b/examples/boot/application/stm32f7/Cargo.toml index a6ac1cadf..21665553b 100644 --- a/examples/boot/application/stm32f7/Cargo.toml +++ b/examples/boot/application/stm32f7/Cargo.toml | |||
| @@ -9,7 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } |
| 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32f767zi", "time-driver-any", "exti"] } | 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32f767zi", "time-driver-any", "exti"] } |
| 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32" } | 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32", features = ["nightly"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 14 | 14 | ||
| 15 | defmt = { version = "0.3", optional = true } | 15 | defmt = { version = "0.3", optional = true } |
diff --git a/examples/boot/application/stm32h7/Cargo.toml b/examples/boot/application/stm32h7/Cargo.toml index 5b8ee555f..eef8b4138 100644 --- a/examples/boot/application/stm32h7/Cargo.toml +++ b/examples/boot/application/stm32h7/Cargo.toml | |||
| @@ -9,7 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync" } | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } |
| 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32h743zi", "time-driver-any", "exti"] } | 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32h743zi", "time-driver-any", "exti"] } |
| 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32" } | 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32", features = ["nightly"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 14 | 14 | ||
| 15 | defmt = { version = "0.3", optional = true } | 15 | defmt = { version = "0.3", optional = true } |
diff --git a/examples/boot/application/stm32l0/Cargo.toml b/examples/boot/application/stm32l0/Cargo.toml index 05ce5c10a..2bcf292bf 100644 --- a/examples/boot/application/stm32l0/Cargo.toml +++ b/examples/boot/application/stm32l0/Cargo.toml | |||
| @@ -9,7 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } |
| 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l072cz", "time-driver-any", "exti", "memory-x"] } | 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l072cz", "time-driver-any", "exti", "memory-x"] } |
| 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32" } | 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32", features = ["nightly"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 14 | 14 | ||
| 15 | defmt = { version = "0.3", optional = true } | 15 | defmt = { version = "0.3", optional = true } |
diff --git a/examples/boot/application/stm32l1/Cargo.toml b/examples/boot/application/stm32l1/Cargo.toml index 14af99e96..f452db72b 100644 --- a/examples/boot/application/stm32l1/Cargo.toml +++ b/examples/boot/application/stm32l1/Cargo.toml | |||
| @@ -9,7 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } |
| 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l151cb-a", "time-driver-any", "exti"] } | 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l151cb-a", "time-driver-any", "exti"] } |
| 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32" } | 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32", features = ["nightly"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 14 | 14 | ||
| 15 | defmt = { version = "0.3", optional = true } | 15 | defmt = { version = "0.3", optional = true } |
diff --git a/examples/boot/application/stm32l4/Cargo.toml b/examples/boot/application/stm32l4/Cargo.toml index 90ae97725..2c94ed3e9 100644 --- a/examples/boot/application/stm32l4/Cargo.toml +++ b/examples/boot/application/stm32l4/Cargo.toml | |||
| @@ -9,7 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } |
| 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l475vg", "time-driver-any", "exti"] } | 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l475vg", "time-driver-any", "exti"] } |
| 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32" } | 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32", features = ["nightly"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 14 | 14 | ||
| 15 | defmt = { version = "0.3", optional = true } | 15 | defmt = { version = "0.3", optional = true } |
diff --git a/examples/boot/application/stm32wl/Cargo.toml b/examples/boot/application/stm32wl/Cargo.toml index 08403a4ec..f9dfb7c76 100644 --- a/examples/boot/application/stm32wl/Cargo.toml +++ b/examples/boot/application/stm32wl/Cargo.toml | |||
| @@ -9,7 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features | |||
| 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | 9 | embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | 10 | embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } |
| 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32wl55jc-cm4", "time-driver-any", "exti"] } | 11 | embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32wl55jc-cm4", "time-driver-any", "exti"] } |
| 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32" } | 12 | embassy-boot-stm32 = { version = "0.1.0", path = "../../../../embassy-boot/stm32", features = ["nightly"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../../../embassy-embedded-hal" } |
| 14 | 14 | ||
| 15 | defmt = { version = "0.3", optional = true } | 15 | defmt = { version = "0.3", optional = true } |
