From eb62efa670b8691d2a834d0dea9494496525e4b2 Mon Sep 17 00:00:00 2001 From: Dion Dokter Date: Mon, 28 Jul 2025 09:48:53 +0200 Subject: [PATCH 1/3] Impl multiwrite flash for partition --- embassy-embedded-hal/src/flash/partition/asynch.rs | 4 +++- embassy-embedded-hal/src/flash/partition/blocking.rs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/embassy-embedded-hal/src/flash/partition/asynch.rs b/embassy-embedded-hal/src/flash/partition/asynch.rs index 1b0c91232..82e27bb7c 100644 --- a/embassy-embedded-hal/src/flash/partition/asynch.rs +++ b/embassy-embedded-hal/src/flash/partition/asynch.rs @@ -1,7 +1,7 @@ use embassy_sync::blocking_mutex::raw::RawMutex; use embassy_sync::mutex::Mutex; use embedded_storage::nor_flash::ErrorType; -use embedded_storage_async::nor_flash::{NorFlash, ReadNorFlash}; +use embedded_storage_async::nor_flash::{MultiwriteNorFlash, NorFlash, ReadNorFlash}; use super::Error; @@ -99,6 +99,8 @@ impl NorFlash for Partition<'_, M, T> { } } +impl MultiwriteNorFlash for Partition<'_, M, T> {} + #[cfg(test)] mod tests { use embassy_sync::blocking_mutex::raw::NoopRawMutex; diff --git a/embassy-embedded-hal/src/flash/partition/blocking.rs b/embassy-embedded-hal/src/flash/partition/blocking.rs index a68df7812..951998166 100644 --- a/embassy-embedded-hal/src/flash/partition/blocking.rs +++ b/embassy-embedded-hal/src/flash/partition/blocking.rs @@ -2,7 +2,7 @@ use core::cell::RefCell; use embassy_sync::blocking_mutex::raw::RawMutex; use embassy_sync::blocking_mutex::Mutex; -use embedded_storage::nor_flash::{ErrorType, NorFlash, ReadNorFlash}; +use embedded_storage::nor_flash::{ErrorType, MultiwriteNorFlash, NorFlash, ReadNorFlash}; use super::Error; @@ -109,6 +109,8 @@ impl NorFlash for BlockingPartition<'_, M, T> { } } +impl MultiwriteNorFlash for BlockingPartition<'_, M, T> {} + #[cfg(test)] mod tests { use embassy_sync::blocking_mutex::raw::NoopRawMutex; From 77e0b918db2a33d8fe5dfe02acb4c8fef90f8e9c Mon Sep 17 00:00:00 2001 From: Dion Dokter Date: Mon, 28 Jul 2025 09:51:29 +0200 Subject: [PATCH 2/3] Impl multiwrite trait for concat flash --- .../src/flash/concat_flash.rs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/embassy-embedded-hal/src/flash/concat_flash.rs b/embassy-embedded-hal/src/flash/concat_flash.rs index 499941d19..fe5a18ce2 100644 --- a/embassy-embedded-hal/src/flash/concat_flash.rs +++ b/embassy-embedded-hal/src/flash/concat_flash.rs @@ -1,5 +1,7 @@ -use embedded_storage::nor_flash::{ErrorType, NorFlash, NorFlashError, ReadNorFlash}; -use embedded_storage_async::nor_flash::{NorFlash as AsyncNorFlash, ReadNorFlash as AsyncReadNorFlash}; +use embedded_storage::nor_flash::{ErrorType, MultiwriteNorFlash, NorFlash, NorFlashError, ReadNorFlash}; +use embedded_storage_async::nor_flash::{ + MultiwriteNorFlash as AsyncMultiwriteNorFlash, NorFlash as AsyncNorFlash, ReadNorFlash as AsyncReadNorFlash, +}; /// Convenience helper for concatenating two consecutive flashes into one. /// This is especially useful if used with "flash regions", where one may @@ -116,6 +118,14 @@ where } } +impl MultiwriteNorFlash for ConcatFlash +where + First: MultiwriteNorFlash, + Second: MultiwriteNorFlash, + E: NorFlashError, +{ +} + impl AsyncReadNorFlash for ConcatFlash where First: AsyncReadNorFlash, @@ -185,6 +195,14 @@ where } } +impl AsyncMultiwriteNorFlash for ConcatFlash +where + First: AsyncMultiwriteNorFlash, + Second: AsyncMultiwriteNorFlash, + E: NorFlashError, +{ +} + #[cfg(test)] mod tests { use embedded_storage::nor_flash::{NorFlash, ReadNorFlash}; From 6fe79869e11f1dfb378da25dd11ae1d87cb922d1 Mon Sep 17 00:00:00 2001 From: Dion Dokter Date: Mon, 28 Jul 2025 09:53:43 +0200 Subject: [PATCH 3/3] Impl multiwrite flash for yielding async --- embassy-embedded-hal/src/adapter/yielding_async.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/embassy-embedded-hal/src/adapter/yielding_async.rs b/embassy-embedded-hal/src/adapter/yielding_async.rs index fe9c9c341..87f822a63 100644 --- a/embassy-embedded-hal/src/adapter/yielding_async.rs +++ b/embassy-embedded-hal/src/adapter/yielding_async.rs @@ -147,6 +147,11 @@ impl embedded_storage_async::nor } } +impl embedded_storage_async::nor_flash::MultiwriteNorFlash + for YieldingAsync +{ +} + #[cfg(test)] mod tests { use embedded_storage_async::nor_flash::NorFlash;