diff options
author | Paul Fertser <fercerpav@gmail.com> | 2015-01-24 13:57:58 +0300 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2015-02-04 22:02:45 +0000 |
commit | 873774992d8739cf08095a03d55fec49cd4b5987 (patch) | |
tree | 079673383b489940023a98d310cddb626d2acbe1 | |
parent | 97c96ac13ff2d900345b71e12d1ac5c22417832f (diff) | |
download | riscv-openocd-873774992d8739cf08095a03d55fec49cd4b5987.zip riscv-openocd-873774992d8739cf08095a03d55fec49cd4b5987.tar.gz riscv-openocd-873774992d8739cf08095a03d55fec49cd4b5987.tar.bz2 |
flash/nor/stm32lx: use 0 base to autodetect second bank location
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>
-rw-r--r-- | doc/openocd.texi | 8 | ||||
-rw-r--r-- | src/flash/nor/stm32lx.c | 4 | ||||
-rw-r--r-- | tcl/target/stm32l1x_dual_bank.cfg | 2 |
3 files changed, 8 insertions, 6 deletions
diff --git a/doc/openocd.texi b/doc/openocd.texi index a97ad85..18e18b9 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -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: diff --git a/src/flash/nor/stm32lx.c b/src/flash/nor/stm32lx.c index 6858d5a..db3897b 100644 --- a/src/flash/nor/stm32lx.c +++ b/src/flash/nor/stm32lx.c @@ -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 { diff --git a/tcl/target/stm32l1x_dual_bank.cfg b/tcl/target/stm32l1x_dual_bank.cfg index 7420b31..a3f7413 100644 --- a/tcl/target/stm32l1x_dual_bank.cfg +++ b/tcl/target/stm32l1x_dual_bank.cfg @@ -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 |