diff options
| author | Rasmus Melchior Jacobsen <[email protected]> | 2023-03-25 13:39:10 +0100 |
|---|---|---|
| committer | Rasmus Melchior Jacobsen <[email protected]> | 2023-03-25 13:47:28 +0100 |
| commit | 73ccc04231adb4c4e2f00c3ecaea8481afb218d4 (patch) | |
| tree | da947c3d8eb73d38202c02c23c674f953f3eead7 | |
| parent | 47d5f127bb307f441bc7765d6d053ce41168ce53 (diff) | |
Change region type name
| -rw-r--r-- | embassy-stm32/build.rs | 15 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/f3.rs | 4 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/f4.rs | 12 | ||||
| -rw-r--r-- | embassy-stm32/src/flash/f7.rs | 4 |
4 files changed, 20 insertions, 15 deletions
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs index ca55681fe..393efc426 100644 --- a/embassy-stm32/build.rs +++ b/embassy-stm32/build.rs | |||
| @@ -111,7 +111,7 @@ fn main() { | |||
| 111 | .iter() | 111 | .iter() |
| 112 | .filter(|x| x.kind == MemoryRegionKind::Flash && x.settings.is_some()); | 112 | .filter(|x| x.kind == MemoryRegionKind::Flash && x.settings.is_some()); |
| 113 | for region in flash_memory_regions.clone() { | 113 | for region in flash_memory_regions.clone() { |
| 114 | let region_name = format_ident!("{}", region.name.replace("_", "")); | 114 | let region_name = format_ident!("{}", get_flash_region_name(region.name)); |
| 115 | let base = region.address as usize; | 115 | let base = region.address as usize; |
| 116 | let size = region.size as usize; | 116 | let size = region.size as usize; |
| 117 | let settings = region.settings.as_ref().unwrap(); | 117 | let settings = region.settings.as_ref().unwrap(); |
| @@ -120,6 +120,7 @@ fn main() { | |||
| 120 | let erase_value = settings.erase_value; | 120 | let erase_value = settings.erase_value; |
| 121 | 121 | ||
| 122 | flash_regions.extend(quote! { | 122 | flash_regions.extend(quote! { |
| 123 | #[allow(non_camel_case_types)] | ||
| 123 | pub struct #region_name(()); | 124 | pub struct #region_name(()); |
| 124 | }); | 125 | }); |
| 125 | 126 | ||
| @@ -136,9 +137,9 @@ fn main() { | |||
| 136 | 137 | ||
| 137 | let (fields, inits): (Vec<TokenStream>, Vec<TokenStream>) = flash_memory_regions | 138 | let (fields, inits): (Vec<TokenStream>, Vec<TokenStream>) = flash_memory_regions |
| 138 | .map(|f| { | 139 | .map(|f| { |
| 139 | let trimmed_name = f.name.replace("_", ""); | 140 | let region_name = get_flash_region_name(f.name); |
| 140 | let field_name = format_ident!("{}", trimmed_name.to_lowercase()); | 141 | let field_name = format_ident!("{}", region_name.to_lowercase()); |
| 141 | let field_type = format_ident!("{}", trimmed_name); | 142 | let field_type = format_ident!("{}", region_name); |
| 142 | let field = quote! { | 143 | let field = quote! { |
| 143 | pub #field_name: #field_type | 144 | pub #field_name: #field_type |
| 144 | }; | 145 | }; |
| @@ -633,7 +634,7 @@ fn main() { | |||
| 633 | .filter(|m| m.kind == MemoryRegionKind::Flash && m.settings.is_some()) | 634 | .filter(|m| m.kind == MemoryRegionKind::Flash && m.settings.is_some()) |
| 634 | { | 635 | { |
| 635 | let mut row = Vec::new(); | 636 | let mut row = Vec::new(); |
| 636 | row.push(m.name.replace("_", "")); | 637 | row.push(get_flash_region_name(m.name)); |
| 637 | flash_regions_table.push(row); | 638 | flash_regions_table.push(row); |
| 638 | } | 639 | } |
| 639 | 640 | ||
| @@ -886,3 +887,7 @@ macro_rules! {} {{ | |||
| 886 | ) | 887 | ) |
| 887 | .unwrap(); | 888 | .unwrap(); |
| 888 | } | 889 | } |
| 890 | |||
| 891 | fn get_flash_region_name(name: &str) -> String { | ||
| 892 | name.replace("BANK_", "BANK").replace("REGION_", "REGION") | ||
| 893 | } | ||
diff --git a/embassy-stm32/src/flash/f3.rs b/embassy-stm32/src/flash/f3.rs index 294fcffc2..b24dfb4a7 100644 --- a/embassy-stm32/src/flash/f3.rs +++ b/embassy-stm32/src/flash/f3.rs | |||
| @@ -6,8 +6,8 @@ use super::FlashRegion; | |||
| 6 | use crate::flash::Error; | 6 | use crate::flash::Error; |
| 7 | use crate::pac; | 7 | use crate::pac; |
| 8 | 8 | ||
| 9 | pub(crate) const MAX_WRITE_SIZE: usize = super::MAINA::WRITE_SIZE; | 9 | pub(crate) const MAX_WRITE_SIZE: usize = super::BANK1::WRITE_SIZE; |
| 10 | pub(crate) const MAX_ERASE_SIZE: usize = super::MAINA::ERASE_SIZE; | 10 | pub(crate) const MAX_ERASE_SIZE: usize = super::BANK1::ERASE_SIZE; |
| 11 | 11 | ||
| 12 | pub(crate) unsafe fn lock() { | 12 | pub(crate) unsafe fn lock() { |
| 13 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 13 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
diff --git a/embassy-stm32/src/flash/f4.rs b/embassy-stm32/src/flash/f4.rs index d739c46b6..0d9d405ba 100644 --- a/embassy-stm32/src/flash/f4.rs +++ b/embassy-stm32/src/flash/f4.rs | |||
| @@ -5,12 +5,12 @@ use core::sync::atomic::{fence, Ordering}; | |||
| 5 | 5 | ||
| 6 | use embassy_hal_common::stm32::flash::f4::{get_sector, SECOND_BANK_SECTOR_OFFSET}; | 6 | use embassy_hal_common::stm32::flash::f4::{get_sector, SECOND_BANK_SECTOR_OFFSET}; |
| 7 | 7 | ||
| 8 | use super::{FlashRegion, FLASH_SIZE, MAINC}; | 8 | use super::{FlashRegion, FLASH_SIZE}; |
| 9 | use crate::flash::Error; | 9 | use crate::flash::Error; |
| 10 | use crate::pac; | 10 | use crate::pac; |
| 11 | 11 | ||
| 12 | pub(crate) const MAX_WRITE_SIZE: usize = MAINC::WRITE_SIZE; | 12 | pub(crate) const MAX_WRITE_SIZE: usize = super::BANK1_REGION3::WRITE_SIZE; |
| 13 | pub(crate) const MAX_ERASE_SIZE: usize = MAINC::ERASE_SIZE; | 13 | pub(crate) const MAX_ERASE_SIZE: usize = super::BANK1_REGION3::ERASE_SIZE; |
| 14 | 14 | ||
| 15 | unsafe fn is_dual_bank() -> bool { | 15 | unsafe fn is_dual_bank() -> bool { |
| 16 | match FLASH_SIZE / 1024 { | 16 | match FLASH_SIZE / 1024 { |
| @@ -46,13 +46,13 @@ pub(crate) unsafe fn blocking_write(first_address: u32, buf: &[u8]) -> Result<() | |||
| 46 | 46 | ||
| 47 | let ret = { | 47 | let ret = { |
| 48 | let mut ret: Result<(), Error> = Ok(()); | 48 | let mut ret: Result<(), Error> = Ok(()); |
| 49 | let mut offset = first_address; | 49 | let mut address = first_address; |
| 50 | for chunk in buf.chunks(MAX_WRITE_SIZE) { | 50 | for chunk in buf.chunks(MAX_WRITE_SIZE) { |
| 51 | let vals = chunk.chunks_exact(size_of::<u32>()); | 51 | let vals = chunk.chunks_exact(size_of::<u32>()); |
| 52 | assert!(vals.remainder().is_empty()); | 52 | assert!(vals.remainder().is_empty()); |
| 53 | for val in vals { | 53 | for val in vals { |
| 54 | write_volatile(offset as *mut u32, u32::from_le_bytes(val.try_into().unwrap())); | 54 | write_volatile(address as *mut u32, u32::from_le_bytes(val.try_into().unwrap())); |
| 55 | offset += val.len() as u32; | 55 | address += val.len() as u32; |
| 56 | 56 | ||
| 57 | // prevents parallelism errors | 57 | // prevents parallelism errors |
| 58 | fence(Ordering::SeqCst); | 58 | fence(Ordering::SeqCst); |
diff --git a/embassy-stm32/src/flash/f7.rs b/embassy-stm32/src/flash/f7.rs index ee0513fa4..8b8076e0c 100644 --- a/embassy-stm32/src/flash/f7.rs +++ b/embassy-stm32/src/flash/f7.rs | |||
| @@ -9,8 +9,8 @@ use super::FlashRegion; | |||
| 9 | use crate::flash::Error; | 9 | use crate::flash::Error; |
| 10 | use crate::pac; | 10 | use crate::pac; |
| 11 | 11 | ||
| 12 | pub(crate) const MAX_WRITE_SIZE: usize = super::MAINC::WRITE_SIZE; | 12 | pub(crate) const MAX_WRITE_SIZE: usize = super::BANK1_REGION3::WRITE_SIZE; |
| 13 | pub(crate) const MAX_ERASE_SIZE: usize = super::MAINC::ERASE_SIZE; | 13 | pub(crate) const MAX_ERASE_SIZE: usize = super::BANK1_REGION3::ERASE_SIZE; |
| 14 | 14 | ||
| 15 | pub(crate) unsafe fn lock() { | 15 | pub(crate) unsafe fn lock() { |
| 16 | pac::FLASH.cr().modify(|w| w.set_lock(true)); | 16 | pac::FLASH.cr().modify(|w| w.set_lock(true)); |
