diff options
| author | Dion Dokter <[email protected]> | 2025-05-01 13:49:29 +0200 |
|---|---|---|
| committer | Dion Dokter <[email protected]> | 2025-05-01 14:28:06 +0200 |
| commit | e478bdf1df1c41cee0fd0aad29a66db4cf6f93f5 (patch) | |
| tree | b01c50b833ea75cff017cbd63d6c754c5186303a /embassy-stm32/src/flash | |
| parent | 59d839a2b8a488bf1e9056f46ba1dff61148642b (diff) | |
Remove all notion of 'default' and 'alt' flash layouts. Now there's just the one layout.
Diffstat (limited to 'embassy-stm32/src/flash')
| -rw-r--r-- | embassy-stm32/src/flash/asynch.rs | 7 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/common.rs | 7 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/f0.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/f1f3.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/f2.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/f4.rs | 14 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/f7.rs | 18 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/g.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/h5.rs | 14 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/h50.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/h7.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/l.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/mod.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/other.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/u0.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/u5.rs | 10 |
16 files changed, 26 insertions, 144 deletions
diff --git a/embassy-stm32/src/flash/asynch.rs b/embassy-stm32/src/flash/asynch.rs index 599b7bb4e..006dcddeb 100644 --- a/embassy-stm32/src/flash/asynch.rs +++ b/embassy-stm32/src/flash/asynch.rs | |||
| @@ -6,8 +6,8 @@ use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; | |||
| 6 | use embassy_sync::mutex::Mutex; | 6 | use embassy_sync::mutex::Mutex; |
| 7 | 7 | ||
| 8 | use super::{ | 8 | use super::{ |
| 9 | blocking_read, ensure_sector_aligned, family, get_sector, Async, Error, Flash, FlashLayout, FLASH_BASE, FLASH_SIZE, | 9 | blocking_read, ensure_sector_aligned, family, get_flash_regions, get_sector, Async, Error, Flash, FlashLayout, |
| 10 | WRITE_SIZE, | 10 | FLASH_BASE, FLASH_SIZE, WRITE_SIZE, |
| 11 | }; | 11 | }; |
| 12 | use crate::interrupt::InterruptExt; | 12 | use crate::interrupt::InterruptExt; |
| 13 | use crate::peripherals::FLASH; | 13 | use crate::peripherals::FLASH; |
| @@ -34,7 +34,6 @@ impl<'d> Flash<'d, Async> { | |||
| 34 | /// | 34 | /// |
| 35 | /// See module-level documentation for details on how memory regions work. | 35 | /// See module-level documentation for details on how memory regions work. |
| 36 | pub fn into_regions(self) -> FlashLayout<'d, Async> { | 36 | pub fn into_regions(self) -> FlashLayout<'d, Async> { |
| 37 | assert!(family::is_default_layout()); | ||
| 38 | FlashLayout::new(self.inner) | 37 | FlashLayout::new(self.inner) |
| 39 | } | 38 | } |
| 40 | 39 | ||
| @@ -123,7 +122,7 @@ pub(super) async unsafe fn write_chunked(base: u32, size: u32, offset: u32, byte | |||
| 123 | pub(super) async unsafe fn erase_sectored(base: u32, from: u32, to: u32) -> Result<(), Error> { | 122 | pub(super) async unsafe fn erase_sectored(base: u32, from: u32, to: u32) -> Result<(), Error> { |
| 124 | let start_address = base + from; | 123 | let start_address = base + from; |
| 125 | let end_address = base + to; | 124 | let end_address = base + to; |
| 126 | let regions = family::get_flash_regions(); | 125 | let regions = get_flash_regions(); |
| 127 | 126 | ||
| 128 | ensure_sector_aligned(start_address, end_address, regions)?; | 127 | ensure_sector_aligned(start_address, end_address, regions)?; |
| 129 | 128 | ||
diff --git a/embassy-stm32/src/flash/common.rs b/embassy-stm32/src/flash/common.rs index 93d734b20..10023e637 100644 --- a/embassy-stm32/src/flash/common.rs +++ b/embassy-stm32/src/flash/common.rs | |||
| @@ -4,8 +4,8 @@ use core::sync::atomic::{fence, Ordering}; | |||
| 4 | use embassy_hal_internal::drop::OnDrop; | 4 | use embassy_hal_internal::drop::OnDrop; |
| 5 | 5 | ||
| 6 | use super::{ | 6 | use super::{ |
| 7 | family, Async, Blocking, Error, FlashBank, FlashLayout, FlashRegion, FlashSector, FLASH_SIZE, MAX_ERASE_SIZE, | 7 | family, get_flash_regions, Async, Blocking, Error, FlashBank, FlashLayout, FlashRegion, FlashSector, FLASH_SIZE, |
| 8 | READ_SIZE, WRITE_SIZE, | 8 | MAX_ERASE_SIZE, READ_SIZE, WRITE_SIZE, |
| 9 | }; | 9 | }; |
| 10 | use crate::Peri; | 10 | use crate::Peri; |
| 11 | use crate::_generated::FLASH_BASE; | 11 | use crate::_generated::FLASH_BASE; |
| @@ -36,7 +36,6 @@ impl<'d, MODE> Flash<'d, MODE> { | |||
| 36 | /// | 36 | /// |
| 37 | /// See module-level documentation for details on how memory regions work. | 37 | /// See module-level documentation for details on how memory regions work. |
| 38 | pub fn into_blocking_regions(self) -> FlashLayout<'d, Blocking> { | 38 | pub fn into_blocking_regions(self) -> FlashLayout<'d, Blocking> { |
| 39 | assert!(family::is_default_layout()); | ||
| 40 | FlashLayout::new(self.inner) | 39 | FlashLayout::new(self.inner) |
| 41 | } | 40 | } |
| 42 | 41 | ||
| @@ -141,7 +140,7 @@ pub(super) unsafe fn blocking_erase( | |||
| 141 | ) -> Result<(), Error> { | 140 | ) -> Result<(), Error> { |
| 142 | let start_address = base + from; | 141 | let start_address = base + from; |
| 143 | let end_address = base + to; | 142 | let end_address = base + to; |
| 144 | let regions = family::get_flash_regions(); | 143 | let regions = get_flash_regions(); |
| 145 | 144 | ||
| 146 | ensure_sector_aligned(start_address, end_address, regions)?; | 145 | ensure_sector_aligned(start_address, end_address, regions)?; |
| 147 | 146 | ||
diff --git a/embassy-stm32/src/flash/f0.rs b/embassy-stm32/src/flash/f0.rs index 402312f68..3f9dbe945 100644 --- a/embassy-stm32/src/flash/f0.rs +++ b/embassy-stm32/src/flash/f0.rs | |||
| @@ -1,18 +1,10 @@ | |||
| 1 | use core::ptr::write_volatile; | 1 | use core::ptr::write_volatile; |
| 2 | use core::sync::atomic::{fence, Ordering}; | 2 | use core::sync::atomic::{fence, Ordering}; |
| 3 | 3 | ||
| 4 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 4 | use super::{FlashSector, WRITE_SIZE}; |
| 5 | use crate::flash::Error; | 5 | use crate::flash::Error; |
| 6 | use crate::pac; | 6 | use crate::pac; |
| 7 | 7 | ||
| 8 | pub(crate) const fn is_default_layout() -> bool { | ||
| 9 | true | ||
| 10 | } | ||
| 11 | |||
| 12 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 13 | &FLASH_REGIONS | ||
| 14 | } | ||
| 15 | |||
| 16 | pub(crate) unsafe fn lock() { | 8 | pub(crate) unsafe fn lock() { |
| 17 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 9 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
| 18 | } | 10 | } |
diff --git a/embassy-stm32/src/flash/f1f3.rs b/embassy-stm32/src/flash/f1f3.rs index ec237b9ff..bf9ad2893 100644 --- a/embassy-stm32/src/flash/f1f3.rs +++ b/embassy-stm32/src/flash/f1f3.rs | |||
| @@ -1,18 +1,10 @@ | |||
| 1 | use core::ptr::write_volatile; | 1 | use core::ptr::write_volatile; |
| 2 | use core::sync::atomic::{fence, Ordering}; | 2 | use core::sync::atomic::{fence, Ordering}; |
| 3 | 3 | ||
| 4 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 4 | use super::{FlashSector, WRITE_SIZE}; |
| 5 | use crate::flash::Error; | 5 | use crate::flash::Error; |
| 6 | use crate::pac; | 6 | use crate::pac; |
| 7 | 7 | ||
| 8 | pub(crate) const fn is_default_layout() -> bool { | ||
| 9 | true | ||
| 10 | } | ||
| 11 | |||
| 12 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 13 | &FLASH_REGIONS | ||
| 14 | } | ||
| 15 | |||
| 16 | pub(crate) unsafe fn lock() { | 8 | pub(crate) unsafe fn lock() { |
| 17 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 9 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
| 18 | } | 10 | } |
diff --git a/embassy-stm32/src/flash/f2.rs b/embassy-stm32/src/flash/f2.rs index cdab1fd2d..67e380619 100644 --- a/embassy-stm32/src/flash/f2.rs +++ b/embassy-stm32/src/flash/f2.rs | |||
| @@ -3,7 +3,7 @@ use core::sync::atomic::{fence, AtomicBool, Ordering}; | |||
| 3 | 3 | ||
| 4 | use pac::flash::regs::Sr; | 4 | use pac::flash::regs::Sr; |
| 5 | 5 | ||
| 6 | use super::{FlashBank, FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 6 | use super::{get_flash_regions, FlashBank, FlashSector, WRITE_SIZE}; |
| 7 | use crate::flash::Error; | 7 | use crate::flash::Error; |
| 8 | use crate::pac; | 8 | use crate::pac; |
| 9 | 9 | ||
| @@ -15,14 +15,6 @@ impl FlashSector { | |||
| 15 | } | 15 | } |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | pub(crate) const fn is_default_layout() -> bool { | ||
| 19 | true | ||
| 20 | } | ||
| 21 | |||
| 22 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 23 | &FLASH_REGIONS | ||
| 24 | } | ||
| 25 | |||
| 26 | pub(crate) unsafe fn lock() { | 18 | pub(crate) unsafe fn lock() { |
| 27 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 19 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
| 28 | } | 20 | } |
diff --git a/embassy-stm32/src/flash/f4.rs b/embassy-stm32/src/flash/f4.rs index 7d789a6bb..62e0492b5 100644 --- a/embassy-stm32/src/flash/f4.rs +++ b/embassy-stm32/src/flash/f4.rs | |||
| @@ -4,7 +4,7 @@ use core::sync::atomic::{fence, AtomicBool, Ordering}; | |||
| 4 | use embassy_sync::waitqueue::AtomicWaker; | 4 | use embassy_sync::waitqueue::AtomicWaker; |
| 5 | use pac::flash::regs::Sr; | 5 | use pac::flash::regs::Sr; |
| 6 | 6 | ||
| 7 | use super::{FlashBank, FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 7 | use super::{get_flash_regions, FlashBank, FlashSector, WRITE_SIZE}; |
| 8 | use crate::_generated::FLASH_SIZE; | 8 | use crate::_generated::FLASH_SIZE; |
| 9 | use crate::flash::Error; | 9 | use crate::flash::Error; |
| 10 | use crate::pac; | 10 | use crate::pac; |
| @@ -18,14 +18,6 @@ impl FlashSector { | |||
| 18 | } | 18 | } |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | pub(crate) const fn is_default_layout() -> bool { | ||
| 22 | true | ||
| 23 | } | ||
| 24 | |||
| 25 | pub const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 26 | &FLASH_REGIONS | ||
| 27 | } | ||
| 28 | |||
| 29 | pub(crate) unsafe fn on_interrupt() { | 21 | pub(crate) unsafe fn on_interrupt() { |
| 30 | // Clear IRQ flags | 22 | // Clear IRQ flags |
| 31 | pac::FLASH.sr().write(|w| { | 23 | pac::FLASH.sr().write(|w| { |
| @@ -306,7 +298,7 @@ mod tests { | |||
| 306 | 298 | ||
| 307 | if !cfg!(feature = "dual-bank") { | 299 | if !cfg!(feature = "dual-bank") { |
| 308 | let assert_sector = |snb: u8, index_in_bank: u8, start: u32, size: u32, address: u32| { | 300 | let assert_sector = |snb: u8, index_in_bank: u8, start: u32, size: u32, address: u32| { |
| 309 | let sector = get_sector(address, &FLASH_REGIONS); | 301 | let sector = get_sector(address, crate::flash::get_flash_regions()); |
| 310 | assert_eq!(snb, sector.snb()); | 302 | assert_eq!(snb, sector.snb()); |
| 311 | assert_eq!( | 303 | assert_eq!( |
| 312 | FlashSector { | 304 | FlashSector { |
| @@ -333,7 +325,7 @@ mod tests { | |||
| 333 | assert_sector(0x0B, 11, 0x080E_0000, LARGE_SECTOR_SIZE, 0x080F_FFFF); | 325 | assert_sector(0x0B, 11, 0x080E_0000, LARGE_SECTOR_SIZE, 0x080F_FFFF); |
| 334 | } else { | 326 | } else { |
| 335 | let assert_sector = |snb: u8, bank: FlashBank, index_in_bank: u8, start: u32, size: u32, address: u32| { | 327 | let assert_sector = |snb: u8, bank: FlashBank, index_in_bank: u8, start: u32, size: u32, address: u32| { |
| 336 | let sector = get_sector(address, &FLASH_REGIONS); | 328 | let sector = get_sector(address, crate::flash::get_flash_regions()); |
| 337 | assert_eq!(snb, sector.snb()); | 329 | assert_eq!(snb, sector.snb()); |
| 338 | assert_eq!( | 330 | assert_eq!( |
| 339 | FlashSector { | 331 | FlashSector { |
diff --git a/embassy-stm32/src/flash/f7.rs b/embassy-stm32/src/flash/f7.rs index 27a7afadf..0547c747a 100644 --- a/embassy-stm32/src/flash/f7.rs +++ b/embassy-stm32/src/flash/f7.rs | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | use core::ptr::write_volatile; | 1 | use core::ptr::write_volatile; |
| 2 | use core::sync::atomic::{fence, Ordering}; | 2 | use core::sync::atomic::{fence, Ordering}; |
| 3 | 3 | ||
| 4 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 4 | use super::{FlashSector, WRITE_SIZE}; |
| 5 | use crate::flash::Error; | 5 | use crate::flash::Error; |
| 6 | use crate::pac; | 6 | use crate::pac; |
| 7 | 7 | ||
| @@ -11,14 +11,6 @@ impl FlashSector { | |||
| 11 | } | 11 | } |
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | pub(crate) const fn is_default_layout() -> bool { | ||
| 15 | true | ||
| 16 | } | ||
| 17 | |||
| 18 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 19 | &FLASH_REGIONS | ||
| 20 | } | ||
| 21 | |||
| 22 | pub(crate) unsafe fn lock() { | 14 | pub(crate) unsafe fn lock() { |
| 23 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 15 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
| 24 | } | 16 | } |
| @@ -124,7 +116,7 @@ mod tests { | |||
| 124 | start, | 116 | start, |
| 125 | size | 117 | size |
| 126 | }, | 118 | }, |
| 127 | get_sector(address, &FLASH_REGIONS) | 119 | get_sector(address, crate::flash::get_flash_regions()) |
| 128 | ) | 120 | ) |
| 129 | }; | 121 | }; |
| 130 | 122 | ||
| @@ -157,7 +149,7 @@ mod tests { | |||
| 157 | start, | 149 | start, |
| 158 | size | 150 | size |
| 159 | }, | 151 | }, |
| 160 | get_sector(address, &FLASH_REGIONS) | 152 | get_sector(address, crate::flash::get_flash_regions()) |
| 161 | ) | 153 | ) |
| 162 | }; | 154 | }; |
| 163 | 155 | ||
| @@ -190,9 +182,9 @@ mod tests { | |||
| 190 | start, | 182 | start, |
| 191 | size | 183 | size |
| 192 | }, | 184 | }, |
| 193 | get_sector(address, &FLASH_REGIONS) | 185 | get_sector(address, crate::flash::get_flash_regions()) |
| 194 | ); | 186 | ); |
| 195 | assert_eq!(get_sector(address, &FLASH_REGIONS).snb(), snb); | 187 | assert_eq!(get_sector(address, crate::flash::get_flash_regions()).snb(), snb); |
| 196 | }; | 188 | }; |
| 197 | 189 | ||
| 198 | assert_sector(0, 0x0800_0000, SMALL_SECTOR_SIZE, 0x0800_0000, 0x00, FlashBank::Bank1); | 190 | assert_sector(0, 0x0800_0000, SMALL_SECTOR_SIZE, 0x0800_0000, 0x00, FlashBank::Bank1); |
diff --git a/embassy-stm32/src/flash/g.rs b/embassy-stm32/src/flash/g.rs index 70e472dcf..bc1fd360c 100644 --- a/embassy-stm32/src/flash/g.rs +++ b/embassy-stm32/src/flash/g.rs | |||
| @@ -3,18 +3,10 @@ use core::sync::atomic::{fence, Ordering}; | |||
| 3 | 3 | ||
| 4 | use cortex_m::interrupt; | 4 | use cortex_m::interrupt; |
| 5 | 5 | ||
| 6 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 6 | use super::{FlashSector, WRITE_SIZE}; |
| 7 | use crate::flash::Error; | 7 | use crate::flash::Error; |
| 8 | use crate::pac; | 8 | use crate::pac; |
| 9 | 9 | ||
| 10 | pub(crate) const fn is_default_layout() -> bool { | ||
| 11 | true | ||
| 12 | } | ||
| 13 | |||
| 14 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 15 | &FLASH_REGIONS | ||
| 16 | } | ||
| 17 | |||
| 18 | pub(crate) unsafe fn lock() { | 10 | pub(crate) unsafe fn lock() { |
| 19 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 11 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
| 20 | } | 12 | } |
diff --git a/embassy-stm32/src/flash/h5.rs b/embassy-stm32/src/flash/h5.rs index d95de2e38..fd9bfcc75 100644 --- a/embassy-stm32/src/flash/h5.rs +++ b/embassy-stm32/src/flash/h5.rs | |||
| @@ -1,22 +1,10 @@ | |||
| 1 | use core::ptr::write_volatile; | 1 | use core::ptr::write_volatile; |
| 2 | use core::sync::atomic::{fence, Ordering}; | 2 | use core::sync::atomic::{fence, Ordering}; |
| 3 | 3 | ||
| 4 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 4 | use super::{FlashSector, WRITE_SIZE}; |
| 5 | use crate::flash::Error; | 5 | use crate::flash::Error; |
| 6 | use crate::pac; | 6 | use crate::pac; |
| 7 | 7 | ||
| 8 | pub(crate) const fn is_default_layout() -> bool { | ||
| 9 | true | ||
| 10 | } | ||
| 11 | |||
| 12 | // const fn is_dual_bank() -> bool { | ||
| 13 | // FLASH_REGIONS.len() >= 2 | ||
| 14 | // } | ||
| 15 | |||
| 16 | pub(crate) fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 17 | &FLASH_REGIONS | ||
| 18 | } | ||
| 19 | |||
| 20 | pub(crate) unsafe fn lock() { | 8 | pub(crate) unsafe fn lock() { |
| 21 | if !pac::FLASH.nscr().read().lock() { | 9 | if !pac::FLASH.nscr().read().lock() { |
| 22 | pac::FLASH.nscr().modify(|r| { | 10 | pac::FLASH.nscr().modify(|r| { |
diff --git a/embassy-stm32/src/flash/h50.rs b/embassy-stm32/src/flash/h50.rs index 74cd6cc03..f8e210556 100644 --- a/embassy-stm32/src/flash/h50.rs +++ b/embassy-stm32/src/flash/h50.rs | |||
| @@ -8,17 +8,9 @@ use cortex_m::interrupt; | |||
| 8 | use pac::flash::regs::Nssr; | 8 | use pac::flash::regs::Nssr; |
| 9 | use pac::flash::vals::Bksel; | 9 | use pac::flash::vals::Bksel; |
| 10 | 10 | ||
| 11 | use super::{Error, FlashBank, FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 11 | use super::{Error, FlashBank, FlashSector, WRITE_SIZE}; |
| 12 | use crate::pac; | 12 | use crate::pac; |
| 13 | 13 | ||
| 14 | pub(crate) const fn is_default_layout() -> bool { | ||
| 15 | true | ||
| 16 | } | ||
| 17 | |||
| 18 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 19 | &FLASH_REGIONS | ||
| 20 | } | ||
| 21 | |||
| 22 | pub(crate) unsafe fn lock() { | 14 | pub(crate) unsafe fn lock() { |
| 23 | pac::FLASH.nscr().modify(|w| w.set_lock(true)); | 15 | pac::FLASH.nscr().modify(|w| w.set_lock(true)); |
| 24 | } | 16 | } |
diff --git a/embassy-stm32/src/flash/h7.rs b/embassy-stm32/src/flash/h7.rs index 254915381..f1d84101c 100644 --- a/embassy-stm32/src/flash/h7.rs +++ b/embassy-stm32/src/flash/h7.rs | |||
| @@ -1,22 +1,14 @@ | |||
| 1 | use core::ptr::write_volatile; | 1 | use core::ptr::write_volatile; |
| 2 | use core::sync::atomic::{fence, Ordering}; | 2 | use core::sync::atomic::{fence, Ordering}; |
| 3 | 3 | ||
| 4 | use super::{FlashRegion, FlashSector, BANK1_REGION, FLASH_REGIONS, WRITE_SIZE}; | 4 | use super::{FlashSector, BANK1_REGION, FLASH_REGIONS, WRITE_SIZE}; |
| 5 | use crate::flash::Error; | 5 | use crate::flash::Error; |
| 6 | use crate::pac; | 6 | use crate::pac; |
| 7 | 7 | ||
| 8 | pub(crate) const fn is_default_layout() -> bool { | ||
| 9 | true | ||
| 10 | } | ||
| 11 | |||
| 12 | const fn is_dual_bank() -> bool { | 8 | const fn is_dual_bank() -> bool { |
| 13 | FLASH_REGIONS.len() >= 2 | 9 | FLASH_REGIONS.len() >= 2 |
| 14 | } | 10 | } |
| 15 | 11 | ||
| 16 | pub(crate) fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 17 | &FLASH_REGIONS | ||
| 18 | } | ||
| 19 | |||
| 20 | pub(crate) unsafe fn lock() { | 12 | pub(crate) unsafe fn lock() { |
| 21 | pac::FLASH.bank(0).cr().modify(|w| w.set_lock(true)); | 13 | pac::FLASH.bank(0).cr().modify(|w| w.set_lock(true)); |
| 22 | if is_dual_bank() { | 14 | if is_dual_bank() { |
diff --git a/embassy-stm32/src/flash/l.rs b/embassy-stm32/src/flash/l.rs index 3b62fa2ee..65cea005c 100644 --- a/embassy-stm32/src/flash/l.rs +++ b/embassy-stm32/src/flash/l.rs | |||
| @@ -1,18 +1,10 @@ | |||
| 1 | use core::ptr::write_volatile; | 1 | use core::ptr::write_volatile; |
| 2 | use core::sync::atomic::{fence, Ordering}; | 2 | use core::sync::atomic::{fence, Ordering}; |
| 3 | 3 | ||
| 4 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 4 | use super::{FlashSector, WRITE_SIZE}; |
| 5 | use crate::flash::Error; | 5 | use crate::flash::Error; |
| 6 | use crate::pac; | 6 | use crate::pac; |
| 7 | 7 | ||
| 8 | pub(crate) const fn is_default_layout() -> bool { | ||
| 9 | true | ||
| 10 | } | ||
| 11 | |||
| 12 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 13 | &FLASH_REGIONS | ||
| 14 | } | ||
| 15 | |||
| 16 | pub(crate) unsafe fn lock() { | 8 | pub(crate) unsafe fn lock() { |
| 17 | #[cfg(any(flash_wl, flash_wb, flash_l4))] | 9 | #[cfg(any(flash_wl, flash_wb, flash_l4))] |
| 18 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 10 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
diff --git a/embassy-stm32/src/flash/mod.rs b/embassy-stm32/src/flash/mod.rs index c7488c8ef..adc45db9c 100644 --- a/embassy-stm32/src/flash/mod.rs +++ b/embassy-stm32/src/flash/mod.rs | |||
| @@ -14,17 +14,9 @@ pub use common::*; | |||
| 14 | pub use crate::_generated::flash_regions::*; | 14 | pub use crate::_generated::flash_regions::*; |
| 15 | pub use crate::_generated::{FLASH_BASE, FLASH_SIZE, MAX_ERASE_SIZE, WRITE_SIZE}; | 15 | pub use crate::_generated::{FLASH_BASE, FLASH_SIZE, MAX_ERASE_SIZE, WRITE_SIZE}; |
| 16 | 16 | ||
| 17 | /// Get whether the default flash layout is being used. | ||
| 18 | /// | ||
| 19 | /// In some chips, dual-bank is not default. This will then return `false` | ||
| 20 | /// when dual-bank is enabled. | ||
| 21 | pub fn is_default_layout() -> bool { | ||
| 22 | family::is_default_layout() | ||
| 23 | } | ||
| 24 | |||
| 25 | /// Get all flash regions. | 17 | /// Get all flash regions. |
| 26 | pub fn get_flash_regions() -> &'static [&'static FlashRegion] { | 18 | pub fn get_flash_regions() -> &'static [&'static FlashRegion] { |
| 27 | family::get_flash_regions() | 19 | &FLASH_REGIONS |
| 28 | } | 20 | } |
| 29 | 21 | ||
| 30 | /// Read size (always 1) | 22 | /// Read size (always 1) |
diff --git a/embassy-stm32/src/flash/other.rs b/embassy-stm32/src/flash/other.rs index 20f84a72f..293a79be3 100644 --- a/embassy-stm32/src/flash/other.rs +++ b/embassy-stm32/src/flash/other.rs | |||
| @@ -1,14 +1,6 @@ | |||
| 1 | #![allow(unused)] | 1 | #![allow(unused)] |
| 2 | 2 | ||
| 3 | use super::{Error, FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 3 | use super::{Error, FlashSector, WRITE_SIZE}; |
| 4 | |||
| 5 | pub(crate) const fn is_default_layout() -> bool { | ||
| 6 | true | ||
| 7 | } | ||
| 8 | |||
| 9 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 10 | &FLASH_REGIONS | ||
| 11 | } | ||
| 12 | 4 | ||
| 13 | pub(crate) unsafe fn lock() { | 5 | pub(crate) unsafe fn lock() { |
| 14 | unimplemented!(); | 6 | unimplemented!(); |
diff --git a/embassy-stm32/src/flash/u0.rs b/embassy-stm32/src/flash/u0.rs index bfdbd15a5..68d847eca 100644 --- a/embassy-stm32/src/flash/u0.rs +++ b/embassy-stm32/src/flash/u0.rs | |||
| @@ -3,18 +3,10 @@ use core::sync::atomic::{fence, Ordering}; | |||
| 3 | 3 | ||
| 4 | use cortex_m::interrupt; | 4 | use cortex_m::interrupt; |
| 5 | 5 | ||
| 6 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 6 | use super::{FlashSector, WRITE_SIZE}; |
| 7 | use crate::flash::Error; | 7 | use crate::flash::Error; |
| 8 | use crate::pac; | 8 | use crate::pac; |
| 9 | 9 | ||
| 10 | pub(crate) const fn is_default_layout() -> bool { | ||
| 11 | true | ||
| 12 | } | ||
| 13 | |||
| 14 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 15 | &FLASH_REGIONS | ||
| 16 | } | ||
| 17 | |||
| 18 | pub(crate) unsafe fn lock() { | 10 | pub(crate) unsafe fn lock() { |
| 19 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 11 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
| 20 | } | 12 | } |
diff --git a/embassy-stm32/src/flash/u5.rs b/embassy-stm32/src/flash/u5.rs index dad698316..131caa195 100644 --- a/embassy-stm32/src/flash/u5.rs +++ b/embassy-stm32/src/flash/u5.rs | |||
| @@ -1,18 +1,10 @@ | |||
| 1 | use core::ptr::write_volatile; | 1 | use core::ptr::write_volatile; |
| 2 | use core::sync::atomic::{fence, Ordering}; | 2 | use core::sync::atomic::{fence, Ordering}; |
| 3 | 3 | ||
| 4 | use super::{FlashBank, FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 4 | use super::{FlashBank, FlashSector, WRITE_SIZE}; |
| 5 | use crate::flash::Error; | 5 | use crate::flash::Error; |
| 6 | use crate::pac; | 6 | use crate::pac; |
| 7 | 7 | ||
| 8 | pub(crate) const fn is_default_layout() -> bool { | ||
| 9 | true | ||
| 10 | } | ||
| 11 | |||
| 12 | pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { | ||
| 13 | &FLASH_REGIONS | ||
| 14 | } | ||
| 15 | |||
| 16 | pub(crate) unsafe fn lock() { | 8 | pub(crate) unsafe fn lock() { |
| 17 | #[cfg(feature = "trustzone-secure")] | 9 | #[cfg(feature = "trustzone-secure")] |
| 18 | pac::FLASH.seccr().modify(|w| w.set_lock(true)); | 10 | pac::FLASH.seccr().modify(|w| w.set_lock(true)); |
