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

Reply via email to