]> git.sur5r.net Git - openocd/commitdiff
flash/nor/stm32lx: use 0 base to autodetect second bank location
authorPaul Fertser <fercerpav@gmail.com>
Sat, 24 Jan 2015 10:57:58 +0000 (13:57 +0300)
committerSpencer Oliver <spen@spen-soft.co.uk>
Wed, 4 Feb 2015 22:02:45 +0000 (22:02 +0000)
Change-Id: I3c296b3e276fcd4d92e4180fc0d2133eebfcc240
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/2503
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
doc/openocd.texi
src/flash/nor/stm32lx.c
tcl/target/stm32l1x_dual_bank.cfg

index a97ad85679034fa6f46cbf4cd179d763c4dbe214..18e18b98364c91e460c3208b89f76e44fd1f4b01 100644 (file)
@@ -5551,16 +5551,18 @@ The @var{num} parameter is a value shown by @command{flash banks}.
 
 @deffn {Flash Driver} stm32lx
 All members of the STM32L microcontroller families from ST Microelectronics
-include internal flash and use ARM Cortex-M3 cores.
+include internal flash and use ARM Cortex-M3 and Cortex-M0+ cores.
 The driver automatically recognizes a number of these chips using
 the chip identification register, and autoconfigures itself.
 
 Note that some devices have been found that have a flash size register that contains
 an invalid value, to workaround this issue you can override the probed value used by
-the flash driver.
+the flash driver. If you use 0 as the bank base address, it tells the
+driver to autodetect the bank location assuming you're configuring the
+second bank.
 
 @example
-flash bank $_FLASHNAME stm32lx 0 0x20000 0 0 $_TARGETNAME
+flash bank $_FLASHNAME stm32lx 0x08000000 0x20000 0 0 $_TARGETNAME
 @end example
 
 Some stm32lx-specific commands are defined:
index 6858d5afa2e7da83d224c3d07a3ed128be1b72ce..db3897ba6609cf987a3cb44f7606ad3c1152641b 100644 (file)
@@ -715,12 +715,12 @@ static int stm32lx_probe(struct flash_bank *bank)
                 */
                second_bank_base = base_address +
                        stm32lx_info->part_info->first_bank_size_kb * 1024;
-               if (bank->base == second_bank_base) {
+               if (bank->base == second_bank_base || !bank->base) {
                        /* This is the second bank  */
                        base_address = second_bank_base;
                        flash_size_in_kb = flash_size_in_kb -
                                stm32lx_info->part_info->first_bank_size_kb;
-               } else if (bank->base == 0 || bank->base == base_address) {
+               } else if (bank->base == base_address) {
                        /* This is the first bank */
                        flash_size_in_kb = stm32lx_info->part_info->first_bank_size_kb;
                } else {
index 7420b315e0e270d1a3f58c7beb905efbcc02f2d2..a3f7413a0c6fa9f9bd931245dd0e196ae77a84a9 100644 (file)
@@ -5,4 +5,4 @@ source [find target/stm32l1.cfg]
 
 # Add the second flash bank.
 set _FLASHNAME $_CHIPNAME.flash1
-flash bank $_FLASHNAME stm32lx 0x8030000 0 0 0 $_TARGETNAME
+flash bank $_FLASHNAME stm32lx 0 0 0 0 $_TARGETNAME