aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-02-06 15:58:50 +0000
committerGitHub <[email protected]>2024-02-06 15:58:50 +0000
commit2c5426aa5c41563f3b225d99d39793a765ec9204 (patch)
treeba8d8800f48891efe20d6108cae49a69857157b4
parent5e09e7b01498a3cf22c12d2b1ec6a0844edca4a8 (diff)
parentaab5da1d3bfe10966bef88217492870b4148b28f (diff)
Merge pull request #2539 from badrbouslikhin/stm32h7-flash-improvements
fix(stm32h7/flash): enhance resilience to program sequence errors (pgserr)
-rw-r--r--embassy-stm32/src/flash/h7.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/embassy-stm32/src/flash/h7.rs b/embassy-stm32/src/flash/h7.rs
index ae395d568..743925e17 100644
--- a/embassy-stm32/src/flash/h7.rs
+++ b/embassy-stm32/src/flash/h7.rs
@@ -77,12 +77,12 @@ pub(crate) unsafe fn blocking_write(start_address: u32, buf: &[u8; WRITE_SIZE])
77 } 77 }
78 } 78 }
79 79
80 bank.cr().write(|w| w.set_pg(false));
81
82 cortex_m::asm::isb(); 80 cortex_m::asm::isb();
83 cortex_m::asm::dsb(); 81 cortex_m::asm::dsb();
84 fence(Ordering::SeqCst); 82 fence(Ordering::SeqCst);
85 83
84 bank.cr().write(|w| w.set_pg(false));
85
86 res.unwrap() 86 res.unwrap()
87} 87}
88 88
@@ -100,6 +100,10 @@ pub(crate) unsafe fn blocking_erase_sector(sector: &FlashSector) -> Result<(), E
100 w.set_start(true); 100 w.set_start(true);
101 }); 101 });
102 102
103 cortex_m::asm::isb();
104 cortex_m::asm::dsb();
105 fence(Ordering::SeqCst);
106
103 let ret: Result<(), Error> = blocking_wait_ready(bank); 107 let ret: Result<(), Error> = blocking_wait_ready(bank);
104 bank.cr().modify(|w| w.set_ser(false)); 108 bank.cr().modify(|w| w.set_ser(false));
105 bank_clear_all_err(bank); 109 bank_clear_all_err(bank);