From: Elliott Partridge Date: Wed, 28 May 2014 16:20:44 +0000 (-0400) Subject: STM32F2x: Don't clear FLASH_OPTCR bits when locking register X-Git-Tag: v0.9.0-rc1~393 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=7bcf1d838dc2b007598df9594725d17e918c75e2;p=openocd STM32F2x: Don't clear FLASH_OPTCR bits when locking register stm32x_write_options is locking the FLASH_OPTCR register by writing 0x00000001 to it, which clears the other bits. This causes problems with subsequent flash operations; the hardware is probably seeing the write protection bits in the register set to '0' (protect), causing a WRPERR. This patch ORs the value of the register with 0x00000001, so that the only change is the lock bit itself. Change-Id: I0e3ca9aa6563ce1b57a01fc0faf7563b6b85f620 Signed-off-by: Elliott Partridge Reviewed-on: http://openocd.zylin.com/2155 Tested-by: jenkins Reviewed-by: Spencer Oliver --- diff --git a/src/flash/nor/stm32f2x.c b/src/flash/nor/stm32f2x.c index eab19348..56fd9f66 100644 --- a/src/flash/nor/stm32f2x.c +++ b/src/flash/nor/stm32f2x.c @@ -372,7 +372,7 @@ static int stm32x_write_options(struct flash_bank *bank) return retval; /* relock registers */ - retval = target_write_u32(target, STM32_FLASH_OPTCR, OPT_LOCK); + retval = target_write_u32(target, STM32_FLASH_OPTCR, optiondata | OPT_LOCK); if (retval != ERROR_OK) return retval;