Skip to content

Commit

Permalink
Merge #362
Browse files Browse the repository at this point in the history
362: Fix failing flash verification on erase r=burrbull a=Windfisch

When erasing a 2kb flash page, flash erase verification wanted all `u16`s with addresses starting from 0 to 2047 to be `0xFFFF`.
This includes the u16 located from 2047 to 2048 (inclusive), which contains the last byte of the to-be-erased page and the first byte of the next page.
Surely, this u16 cannot reasonably be expected to be 0xFFFF after the erase.

Stepping over even addresses only solves this issue.

Co-authored-by: Florian Jung <flo@windfis.ch>
  • Loading branch information
bors[bot] and Windfisch authored Aug 16, 2021
2 parents 75d41d3 + 8f3f60f commit 82806e1
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- Fix i2c interactions after errors
- Fix SPI3 alternate function remapping
- Do not enable UART DMA flags unconditionally
- Fix flash erase verification always failing

### Changed

Expand Down
2 changes: 1 addition & 1 deletion src/flash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ impl<'a> FlashWriter<'a> {
// 'start_offset' was.
let size = self.sector_sz.kbytes() as u32;
let start = start_offset & !(size - 1);
for idx in start..start + size {
for idx in (start..start + size).step_by(2) {
let write_address = (FLASH_START + idx as u32) as *const u16;
let verify: u16 = unsafe { core::ptr::read_volatile(write_address) };
if verify != 0xFFFF {
Expand Down

0 comments on commit 82806e1

Please sign in to comment.