machine/stm32: correct Flash implementation

Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
deadprogram
2023-03-11 20:57:21 +01:00
committed by Ron Evans
parent 6c40ee93fe
commit c5598630c9
4 changed files with 14 additions and 10 deletions
+5 -1
View File
@@ -73,11 +73,15 @@ func (f flashBlockDevice) EraseBlockSize() int64 {
// transparently coalesce ranges of blocks into larger bundles if the chip
// supports this. The start and len parameters are in block numbers, use
// EraseBlockSize to map addresses to blocks.
// Note that block 0 should map to the address of FlashDataStart().
func (f flashBlockDevice) EraseBlocks(start, len int64) error {
var address uintptr = uintptr(start*f.EraseBlockSize()) + FlashDataStart()
blk := int64(address-uintptr(memoryStart)) / f.EraseBlockSize()
unlockFlash()
defer lockFlash()
for i := start; i < start+len; i++ {
for i := blk; i < blk+len; i++ {
if err := eraseBlock(uint32(i)); err != nil {
return err
}