Merge #1377
1377: (embassy-stm32): implement embedded-storage traits for full flash struct r=MathiasKoch a=MathiasKoch Co-authored-by: Mathias <mk@blackbird.online>
This commit is contained in:
		
						commit
						a86a100879
					
				@ -255,6 +255,14 @@ fn main() {
 | 
				
			|||||||
        ];
 | 
					        ];
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let max_erase_size = flash_memory_regions
 | 
				
			||||||
 | 
					        .iter()
 | 
				
			||||||
 | 
					        .map(|region| region.settings.as_ref().unwrap().erase_size)
 | 
				
			||||||
 | 
					        .max()
 | 
				
			||||||
 | 
					        .unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    g.extend(quote! { pub const MAX_ERASE_SIZE: usize = #max_erase_size as usize; });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g.extend(quote! { pub mod flash_regions { #flash_regions } });
 | 
					    g.extend(quote! { pub mod flash_regions { #flash_regions } });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ========
 | 
					    // ========
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@ use atomic_polyfill::{fence, Ordering};
 | 
				
			|||||||
use embassy_hal_common::drop::OnDrop;
 | 
					use embassy_hal_common::drop::OnDrop;
 | 
				
			||||||
use embassy_hal_common::{into_ref, PeripheralRef};
 | 
					use embassy_hal_common::{into_ref, PeripheralRef};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use super::{family, Error, FlashLayout, FlashRegion, FlashSector, FLASH_BASE, FLASH_SIZE, WRITE_SIZE};
 | 
					use super::{family, Error, FlashLayout, FlashRegion, FlashSector, FLASH_BASE, FLASH_SIZE, MAX_ERASE_SIZE, WRITE_SIZE};
 | 
				
			||||||
use crate::flash::FlashBank;
 | 
					use crate::flash::FlashBank;
 | 
				
			||||||
use crate::Peripheral;
 | 
					use crate::Peripheral;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -162,6 +162,35 @@ impl FlashRegion {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl embedded_storage::nor_flash::ErrorType for Flash<'_> {
 | 
				
			||||||
 | 
					    type Error = Error;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl embedded_storage::nor_flash::ReadNorFlash for Flash<'_> {
 | 
				
			||||||
 | 
					    const READ_SIZE: usize = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn read(&mut self, offset: u32, bytes: &mut [u8]) -> Result<(), Self::Error> {
 | 
				
			||||||
 | 
					        self.blocking_read(offset, bytes)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn capacity(&self) -> usize {
 | 
				
			||||||
 | 
					        FLASH_SIZE
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl embedded_storage::nor_flash::NorFlash for Flash<'_> {
 | 
				
			||||||
 | 
					    const WRITE_SIZE: usize = WRITE_SIZE;
 | 
				
			||||||
 | 
					    const ERASE_SIZE: usize = MAX_ERASE_SIZE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn write(&mut self, offset: u32, bytes: &[u8]) -> Result<(), Self::Error> {
 | 
				
			||||||
 | 
					        self.blocking_write(offset, bytes)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn erase(&mut self, from: u32, to: u32) -> Result<(), Self::Error> {
 | 
				
			||||||
 | 
					        self.blocking_erase(from, to)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
foreach_flash_region! {
 | 
					foreach_flash_region! {
 | 
				
			||||||
    ($type_name:ident, $write_size:literal, $erase_size:literal) => {
 | 
					    ($type_name:ident, $write_size:literal, $erase_size:literal) => {
 | 
				
			||||||
        impl crate::_generated::flash_regions::$type_name<'_> {
 | 
					        impl crate::_generated::flash_regions::$type_name<'_> {
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,7 @@ mod common;
 | 
				
			|||||||
pub use common::*;
 | 
					pub use common::*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub use crate::_generated::flash_regions::*;
 | 
					pub use crate::_generated::flash_regions::*;
 | 
				
			||||||
 | 
					pub use crate::_generated::MAX_ERASE_SIZE;
 | 
				
			||||||
pub use crate::pac::{FLASH_BASE, FLASH_SIZE, WRITE_SIZE};
 | 
					pub use crate::pac::{FLASH_BASE, FLASH_SIZE, WRITE_SIZE};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Debug)]
 | 
					#[derive(Debug)]
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user