aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Melchior Jacobsen <[email protected]>2023-03-25 13:39:10 +0100
committerRasmus Melchior Jacobsen <[email protected]>2023-03-25 13:47:28 +0100
commit73ccc04231adb4c4e2f00c3ecaea8481afb218d4 (patch)
treeda947c3d8eb73d38202c02c23c674f953f3eead7
parent47d5f127bb307f441bc7765d6d053ce41168ce53 (diff)
Change region type name
-rw-r--r--embassy-stm32/build.rs15
-rw-r--r--embassy-stm32/src/flash/f3.rs4
-rw-r--r--embassy-stm32/src/flash/f4.rs12
-rw-r--r--embassy-stm32/src/flash/f7.rs4
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
891fn 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;
6use crate::flash::Error; 6use crate::flash::Error;
7use crate::pac; 7use crate::pac;
8 8
9pub(crate) const MAX_WRITE_SIZE: usize = super::MAINA::WRITE_SIZE; 9pub(crate) const MAX_WRITE_SIZE: usize = super::BANK1::WRITE_SIZE;
10pub(crate) const MAX_ERASE_SIZE: usize = super::MAINA::ERASE_SIZE; 10pub(crate) const MAX_ERASE_SIZE: usize = super::BANK1::ERASE_SIZE;
11 11
12pub(crate) unsafe fn lock() { 12pub(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
6use embassy_hal_common::stm32::flash::f4::{get_sector, SECOND_BANK_SECTOR_OFFSET}; 6use embassy_hal_common::stm32::flash::f4::{get_sector, SECOND_BANK_SECTOR_OFFSET};
7 7
8use super::{FlashRegion, FLASH_SIZE, MAINC}; 8use super::{FlashRegion, FLASH_SIZE};
9use crate::flash::Error; 9use crate::flash::Error;
10use crate::pac; 10use crate::pac;
11 11
12pub(crate) const MAX_WRITE_SIZE: usize = MAINC::WRITE_SIZE; 12pub(crate) const MAX_WRITE_SIZE: usize = super::BANK1_REGION3::WRITE_SIZE;
13pub(crate) const MAX_ERASE_SIZE: usize = MAINC::ERASE_SIZE; 13pub(crate) const MAX_ERASE_SIZE: usize = super::BANK1_REGION3::ERASE_SIZE;
14 14
15unsafe fn is_dual_bank() -> bool { 15unsafe 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;
9use crate::flash::Error; 9use crate::flash::Error;
10use crate::pac; 10use crate::pac;
11 11
12pub(crate) const MAX_WRITE_SIZE: usize = super::MAINC::WRITE_SIZE; 12pub(crate) const MAX_WRITE_SIZE: usize = super::BANK1_REGION3::WRITE_SIZE;
13pub(crate) const MAX_ERASE_SIZE: usize = super::MAINC::ERASE_SIZE; 13pub(crate) const MAX_ERASE_SIZE: usize = super::BANK1_REGION3::ERASE_SIZE;
14 14
15pub(crate) unsafe fn lock() { 15pub(crate) unsafe fn lock() {
16 pac::FLASH.cr().modify(|w| w.set_lock(true)); 16 pac::FLASH.cr().modify(|w| w.set_lock(true));