flash: pre-check flash unlock for stm32f2x
add checking of the current flash lock status before performing the unlock sequence (which would fail in an unlocked state) Change-Id: I693294c9cd2f59e69cb5bf3338120052fd680b1e Signed-off-by: Bruno FLEURETTE <bruno.fleurette@gmail.com> Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com> Reviewed-on: http://openocd.zylin.com/363 Reviewed-by: Øyvind Harboe <oyvindharboe@gmail.com> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk> Tested-by: jenkins Reviewed-by: Mathias Küster <kesmtp@freenet.de>__archive__
parent
06d1580ff7
commit
32d3063cf5
|
@ -234,8 +234,18 @@ static int stm32x_unlock_reg(struct target *target)
|
||||||
{
|
{
|
||||||
uint32_t ctrl;
|
uint32_t ctrl;
|
||||||
|
|
||||||
|
/* first check if not already unlocked
|
||||||
|
* otherwise writing on STM32_FLASH_KEYR will fail
|
||||||
|
*/
|
||||||
|
int retval = target_read_u32(target, STM32_FLASH_CR, &ctrl);
|
||||||
|
if (retval != ERROR_OK)
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
if ((ctrl & FLASH_LOCK) == 0)
|
||||||
|
return ERROR_OK;
|
||||||
|
|
||||||
/* unlock flash registers */
|
/* unlock flash registers */
|
||||||
int retval = target_write_u32(target, STM32_FLASH_KEYR, KEY1);
|
retval = target_write_u32(target, STM32_FLASH_KEYR, KEY1);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue