This is an automated email from Gerrit.

"Simon Johansson <ampley...@gmail.com>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/6810

-- gerrit

commit 579e4789f1406634815dbf138fedd2add479db17
Author: Simon Johansson <ampley...@gmail.com>
Date:   Mon Jan 17 13:30:59 2022 +0100

    flash/nor/stm32f2x: Fix erase of bank 2 sectors
    
    This commit corrects the erase function for stm32f2x when dealing with
    sectors in bank 2, for STM32F42x/43x devices with 1MB flash.
    
    On STM32F42x/43x with 1MB flash in dual bank configuration, the sector
    numbering is not consecutive. The last sector in bank 1 is number 7, and
    the first sector in bank 2 is number 12.
    The sector indices used by openocd, however, _are_ consecutive (0 to 15
    in this case). The arguments "first" and "last" to stm32x_erase() are of
    this type, and so the logic surrounding sector numbers needed to be
    corrected.
    Since the two banks in dual bank mode have the same number of sectors, a
    sector index in bank 2 is larger than or equal to half the total number
    of sectors.
    
    Change-Id: I15260f8a86d9002769a1ae1c40ebdf62142dae18
    Signed-off-by: Simon Johansson <ampley...@gmail.com>

diff --git a/src/flash/nor/stm32f2x.c b/src/flash/nor/stm32f2x.c
index d3e7d709c..aa0363232 100644
--- a/src/flash/nor/stm32f2x.c
+++ b/src/flash/nor/stm32f2x.c
@@ -636,8 +636,8 @@ static int stm32x_erase(struct flash_bank *bank, unsigned 
int first,
 
        for (unsigned int i = first; i <= last; i++) {
                unsigned int snb;
-               if (stm32x_info->has_large_mem && i >= 12)
-                       snb = (i - 12) | 0x10;
+               if (stm32x_info->has_large_mem && i >= (bank->num_sectors / 2))
+                       snb = (i - (bank->num_sectors / 2)) | 0x10;
                else
                        snb = i;
 

-- 

Reply via email to