diff options
author | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2011-11-17 01:26:58 +0100 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2011-11-17 17:28:13 +0000 |
commit | a1f6b6612ba66da25161bcf6856e84a8e5453dc0 (patch) | |
tree | de85b87e17d5381d543cec1648df569ab1ca7675 /src | |
parent | 7af4ec859db39ef9618032780ceb3ca99a205dcd (diff) | |
download | riscv-openocd-a1f6b6612ba66da25161bcf6856e84a8e5453dc0.zip riscv-openocd-a1f6b6612ba66da25161bcf6856e84a8e5453dc0.tar.gz riscv-openocd-a1f6b6612ba66da25161bcf6856e84a8e5453dc0.tar.bz2 |
stm32f1x: improve variable naming and avoid potential divide-by-zero
Don't call a variable num_pages if it holds the flash size. Also rearrange
flash size to num_pages calculation to avoid divide-by-zero if there will
be a device with < 1024 byte pages someday.
Change-Id: I2febea39694a2f9750de141f52ec88ae1599c086
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/211
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src')
-rw-r--r-- | src/flash/nor/stm32f1x.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/flash/nor/stm32f1x.c b/src/flash/nor/stm32f1x.c index 0678ce3..8e0fda7 100644 --- a/src/flash/nor/stm32f1x.c +++ b/src/flash/nor/stm32f1x.c @@ -955,7 +955,7 @@ static int stm32x_probe(struct flash_bank *bank) struct target *target = bank->target; struct stm32x_flash_bank *stm32x_info = bank->driver_priv; int i; - uint16_t num_pages; + uint16_t flash_size_in_kb; uint32_t device_id; int page_size; uint32_t base_address = 0x08000000; @@ -970,12 +970,12 @@ static int stm32x_probe(struct flash_bank *bank) LOG_INFO("device id = 0x%08" PRIx32 "", device_id); /* get flash size from target. */ - retval = target_read_u16(target, 0x1FFFF7E0, &num_pages); + retval = target_read_u16(target, 0x1FFFF7E0, &flash_size_in_kb); if (retval != ERROR_OK) { LOG_WARNING("failed reading flash size, default to max target family"); /* failed reading flash size, default to max target family */ - num_pages = 0xffff; + flash_size_in_kb = 0xffff; } if ((device_id & 0x7ff) == 0x410) @@ -986,11 +986,11 @@ static int stm32x_probe(struct flash_bank *bank) stm32x_info->ppage_size = 4; /* check for early silicon */ - if (num_pages == 0xffff) + if (flash_size_in_kb == 0xffff) { /* number of sectors incorrect on revA */ LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 128k flash"); - num_pages = 128; + flash_size_in_kb = 128; } } else if ((device_id & 0x7ff) == 0x412) @@ -1001,11 +1001,11 @@ static int stm32x_probe(struct flash_bank *bank) stm32x_info->ppage_size = 4; /* check for early silicon */ - if (num_pages == 0xffff) + if (flash_size_in_kb == 0xffff) { /* number of sectors incorrect on revA */ LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 32k flash"); - num_pages = 32; + flash_size_in_kb = 32; } } else if ((device_id & 0x7ff) == 0x414) @@ -1016,11 +1016,11 @@ static int stm32x_probe(struct flash_bank *bank) stm32x_info->ppage_size = 2; /* check for early silicon */ - if (num_pages == 0xffff) + if (flash_size_in_kb == 0xffff) { /* number of sectors incorrect on revZ */ LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 512k flash"); - num_pages = 512; + flash_size_in_kb = 512; } } else if ((device_id & 0x7ff) == 0x418) @@ -1031,11 +1031,11 @@ static int stm32x_probe(struct flash_bank *bank) stm32x_info->ppage_size = 2; /* check for early silicon */ - if (num_pages == 0xffff) + if (flash_size_in_kb == 0xffff) { /* number of sectors incorrect on revZ */ LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 256k flash"); - num_pages = 256; + flash_size_in_kb = 256; } } else if ((device_id & 0x7ff) == 0x420) @@ -1046,11 +1046,11 @@ static int stm32x_probe(struct flash_bank *bank) stm32x_info->ppage_size = 4; /* check for early silicon */ - if (num_pages == 0xffff) + if (flash_size_in_kb == 0xffff) { /* number of sectors may be incorrrect on early silicon */ LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 128k flash"); - num_pages = 128; + flash_size_in_kb = 128; } } else if ((device_id & 0x7ff) == 0x428) @@ -1061,11 +1061,11 @@ static int stm32x_probe(struct flash_bank *bank) stm32x_info->ppage_size = 4; /* check for early silicon */ - if (num_pages == 0xffff) + if (flash_size_in_kb == 0xffff) { /* number of sectors may be incorrrect on early silicon */ LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 128k flash"); - num_pages = 128; + flash_size_in_kb = 128; } } @@ -1078,22 +1078,22 @@ static int stm32x_probe(struct flash_bank *bank) stm32x_info->has_dual_banks = true; /* check for early silicon */ - if (num_pages == 0xffff) + if (flash_size_in_kb == 0xffff) { /* number of sectors may be incorrrect on early silicon */ LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 1024k flash"); - num_pages = 1024; + flash_size_in_kb = 1024; } /* split reported size into matching bank */ if (bank->base != 0x08080000) { /* bank 0 will be fixed 512k */ - num_pages = 512; + flash_size_in_kb = 512; } else { - num_pages -= 512; + flash_size_in_kb -= 512; /* bank1 also uses a register offset */ stm32x_info->register_base = FLASH_REG_BASE_B1; base_address = 0x08080000; @@ -1105,13 +1105,13 @@ static int stm32x_probe(struct flash_bank *bank) return ERROR_FAIL; } - LOG_INFO("flash size = %dkbytes", num_pages); + LOG_INFO("flash size = %dkbytes", flash_size_in_kb); - /* did we assign # of pages? */ - assert(num_pages != 0xffff); + /* did we assign flash size? */ + assert(flash_size_in_kb != 0xffff); /* calculate numbers of pages */ - num_pages /= (page_size / 1024); + int num_pages = flash_size_in_kb * 1024 / page_size; /* check that calculation result makes sense */ assert(num_pages > 0); |