diff options
| author | Dario Nieuwenhuis <[email protected]> | 2024-02-06 15:58:50 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-02-06 15:58:50 +0000 |
| commit | 2c5426aa5c41563f3b225d99d39793a765ec9204 (patch) | |
| tree | ba8d8800f48891efe20d6108cae49a69857157b4 | |
| parent | 5e09e7b01498a3cf22c12d2b1ec6a0844edca4a8 (diff) | |
| parent | aab5da1d3bfe10966bef88217492870b4148b28f (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.rs | 8 |
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); |
