Only assert_not_corrupted_read if we read from the second bank
This commit is contained in:
		
							parent
							
								
									8528455a75
								
							
						
					
					
						commit
						ce331b411c
					
				| @ -97,10 +97,11 @@ pub(super) fn blocking_read(base: u32, size: u32, offset: u32, bytes: &mut [u8]) | |||||||
|         return Err(Error::Size); |         return Err(Error::Size); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #[cfg(flash_f4)] |  | ||||||
|     family::assert_not_corrupted_read(); |  | ||||||
| 
 |  | ||||||
|     let start_address = base + offset; |     let start_address = base + offset; | ||||||
|  | 
 | ||||||
|  |     #[cfg(flash_f4)] | ||||||
|  |     family::assert_not_corrupted_read(start_address + bytes.len()); | ||||||
|  | 
 | ||||||
|     let flash_data = unsafe { core::slice::from_raw_parts(start_address as *const u8, bytes.len()) }; |     let flash_data = unsafe { core::slice::from_raw_parts(start_address as *const u8, bytes.len()) }; | ||||||
|     bytes.copy_from_slice(flash_data); |     bytes.copy_from_slice(flash_data); | ||||||
|     Ok(()) |     Ok(()) | ||||||
|  | |||||||
| @ -6,6 +6,7 @@ use atomic_polyfill::AtomicBool; | |||||||
| #[cfg(feature = "nightly")] | #[cfg(feature = "nightly")] | ||||||
| use embassy_sync::waitqueue::AtomicWaker; | use embassy_sync::waitqueue::AtomicWaker; | ||||||
| use pac::flash::regs::Sr; | use pac::flash::regs::Sr; | ||||||
|  | use pac::FLASH_SIZE; | ||||||
| 
 | 
 | ||||||
| use super::{FlashBank, FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | use super::{FlashBank, FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | ||||||
| use crate::flash::Error; | use crate::flash::Error; | ||||||
| @ -437,10 +438,13 @@ fn restore_data_cache_state() { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub(crate) fn assert_not_corrupted_read() { | pub(crate) fn assert_not_corrupted_read(end_address: u32) { | ||||||
|     #[allow(unused)] |     #[allow(unused)] | ||||||
|     const REVISION_3: u16 = 0x2001; |     const REVISION_3: u16 = 0x2001; | ||||||
| 
 | 
 | ||||||
|  |     #[allow(unused)] | ||||||
|  |     let second_bank_read = get_flash_regions().last().unwrap().bank == FlashBank::Bank2 && end_address > FLASH_SIZE / 2; | ||||||
|  | 
 | ||||||
|     #[cfg(any(
 |     #[cfg(any(
 | ||||||
|         feature = "stm32f427ai", |         feature = "stm32f427ai", | ||||||
|         feature = "stm32f427ii", |         feature = "stm32f427ii", | ||||||
| @ -463,7 +467,7 @@ pub(crate) fn assert_not_corrupted_read() { | |||||||
|         feature = "stm32f439vi", |         feature = "stm32f439vi", | ||||||
|         feature = "stm32f439zi", |         feature = "stm32f439zi", | ||||||
|     ))] |     ))] | ||||||
|     if unsafe { pac::DBGMCU.idcode().read().rev_id() < REVISION_3 && !pa12_is_output_pull_low() } { |     if second_bank_read && unsafe { pac::DBGMCU.idcode().read().rev_id() < REVISION_3 && !pa12_is_output_pull_low() } { | ||||||
|         panic!("Read corruption for stm32f42xxI and stm32f43xxI when PA12 is in use for chips below revision 3, see errata 2.2.11"); |         panic!("Read corruption for stm32f42xxI and stm32f43xxI when PA12 is in use for chips below revision 3, see errata 2.2.11"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -487,11 +491,8 @@ pub(crate) fn assert_not_corrupted_read() { | |||||||
|         feature = "stm32f439vg", |         feature = "stm32f439vg", | ||||||
|         feature = "stm32f439zg", |         feature = "stm32f439zg", | ||||||
|     ))] |     ))] | ||||||
|     if unsafe { |     if second_bank_read && unsafe { &&pac::DBGMCU.idcode().read().rev_id() < REVISION_3 && !pa12_is_output_pull_low() } | ||||||
|         pac::FLASH.optcr().read().db1m() |     { | ||||||
|             && pac::DBGMCU.idcode().read().rev_id() < REVISION_3 |  | ||||||
|             && !pa12_is_output_pull_low() |  | ||||||
|     } { |  | ||||||
|         panic!("Read corruption for stm32f42xxG and stm32f43xxG in dual bank mode when PA12 is in use for chips below revision 3, see errata 2.2.11"); |         panic!("Read corruption for stm32f42xxG and stm32f43xxG in dual bank mode when PA12 is in use for chips below revision 3, see errata 2.2.11"); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user