aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2015-01-24 13:57:58 +0300
committerSpencer Oliver <spen@spen-soft.co.uk>2015-02-04 22:02:45 +0000
commit873774992d8739cf08095a03d55fec49cd4b5987 (patch)
tree079673383b489940023a98d310cddb626d2acbe1
parent97c96ac13ff2d900345b71e12d1ac5c22417832f (diff)
downloadriscv-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.texi8
-rw-r--r--src/flash/nor/stm32lx.c4
-rw-r--r--tcl/target/stm32l1x_dual_bank.cfg2
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