This is an automated email from Gerrit. Uwe Bonnes ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/3503
-- gerrit commit 475ab26552eefb04fb012166a3f1a0e323e17c52 Author: Uwe Bonnes <[email protected]> Date: Sun May 22 16:51:34 2016 +0200 stm32l4: Handle failing flash_size read like on other devices. Change-Id: I54d7cd3a8c80d0e4663c3c09457a4ff338a6f1a0 Signed-off-by: Uwe Bonnes <[email protected]> diff --git a/src/flash/nor/stm32l4x.c b/src/flash/nor/stm32l4x.c index 32d5a0e..86d2d70 100644 --- a/src/flash/nor/stm32l4x.c +++ b/src/flash/nor/stm32l4x.c @@ -600,6 +600,7 @@ static int stm32l4_probe(struct flash_bank *bank) struct stm32l4_flash_bank *stm32l4_info = bank->driver_priv; int i; uint16_t flash_size_in_kb = 0xffff; + uint16_t max_flash_size_in_kb; uint32_t device_id; uint32_t options; uint32_t base_address = 0x08000000; @@ -615,6 +616,7 @@ static int stm32l4_probe(struct flash_bank *bank) /* set max flash size depending on family */ switch (device_id & 0xfff) { case 0x415: + max_flash_size_in_kb = 1024; break; default: LOG_WARNING("Cannot identify target as a STM32L4 family."); @@ -624,6 +626,19 @@ static int stm32l4_probe(struct flash_bank *bank) /* get flash size from target. */ retval = target_read_u16(target, FLASH_SIZE_REG, &flash_size_in_kb); + /* failed reading flash size or flash size invalid (early silicon), + * default to max target family */ + if (retval != ERROR_OK || flash_size_in_kb == 0xffff || flash_size_in_kb == 0) { + LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming %dk flash", + max_flash_size_in_kb); + flash_size_in_kb = max_flash_size_in_kb; + } + + LOG_INFO("flash size = %dkbytes", flash_size_in_kb); + + /* did we assign flash size? */ + assert(flash_size_in_kb != 0xffff); + /* get options to for DUAL BANK. */ retval = target_read_u32(target, STM32_FLASH_OPTR, &options); @@ -633,8 +648,6 @@ static int stm32l4_probe(struct flash_bank *bank) else stm32l4_info->option_bytes.bank_b_start = flash_size_in_kb << 9; - LOG_INFO("flash size = %dkbytes", flash_size_in_kb); - /* did we assign flash size? */ assert((flash_size_in_kb != 0xffff) && flash_size_in_kb); -- ------------------------------------------------------------------------------ Mobile security can be enabling, not merely restricting. Employees who bring their own devices (BYOD) to work are irked by the imposition of MDM restrictions. Mobile Device Manager Plus allows you to control only the apps on BYO-devices by containerizing them, leaving personal data untouched! https://ad.doubleclick.net/ddm/clk/304595813;131938128;j _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
