stm32f2x: Correct calculation of number of 128k sectors.
Fixes regression introduced in 9785f51f
that caused write outside
allocated memory during probe of devices with <1024K flash.
Reported-by: Alexander Pakhomov <ker0sin@yandex.ru>
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Change-Id: Ifba8833e436064624efbf678162538fd351a5702
Reviewed-on: http://openocd.zylin.com/1450
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
__archive__
parent
601e35571c
commit
9f1616d2b5
|
@ -711,6 +711,7 @@ static int stm32x_write(struct flash_bank *bank, uint8_t *buffer,
|
||||||
static void setup_sector(struct flash_bank *bank, int start, int num, int size)
|
static void setup_sector(struct flash_bank *bank, int start, int num, int size)
|
||||||
{
|
{
|
||||||
for (int i = start; i < (start + num) ; i++) {
|
for (int i = start; i < (start + num) ; i++) {
|
||||||
|
assert(i < bank->num_sectors);
|
||||||
bank->sectors[i].offset = bank->size;
|
bank->sectors[i].offset = bank->size;
|
||||||
bank->sectors[i].size = size;
|
bank->sectors[i].size = size;
|
||||||
bank->size += bank->sectors[i].size;
|
bank->size += bank->sectors[i].size;
|
||||||
|
@ -830,7 +831,7 @@ static int stm32x_probe(struct flash_bank *bank)
|
||||||
setup_sector(bank, 4, 1, 64 * 1024);
|
setup_sector(bank, 4, 1, 64 * 1024);
|
||||||
|
|
||||||
/* dynamic memory */
|
/* dynamic memory */
|
||||||
setup_sector(bank, 4 + 1, MAX(12, num_pages) - 5, 128 * 1024);
|
setup_sector(bank, 4 + 1, MIN(12, num_pages) - 5, 128 * 1024);
|
||||||
|
|
||||||
if (stm32x_info->has_large_mem) {
|
if (stm32x_info->has_large_mem) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue