From: OpenOCD-Gerrit <ope...@us...> - 2020-02-23 12:28:19
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via a08d7b7093a89ac54e673f0a4da0c2712e375891 (commit) from f1f1f3fe1f2c2ba604205e7163d01b3481e4e96b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a08d7b7093a89ac54e673f0a4da0c2712e375891 Author: Christopher Head <ch...@za...> Date: Mon Jan 27 14:48:15 2020 -0800 flash/nor/stm32h7x: check OPTCHANGEERR Without this, a failed attempt to change option bytes will silently appear to succeed but without actually changing the option bytes (confusingly, the option bytes will still read back as if they had been changed until a reboot as well!). Change-Id: Id529c6c384a8a16be75f5702310670d99d8fac79 Signed-off-by: Christopher Head <ch...@za...> Reviewed-on: http://openocd.zylin.com/5418 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <and...@gm...> diff --git a/src/flash/nor/stm32h7x.c b/src/flash/nor/stm32h7x.c index 7ce369be3..152a154bd 100644 --- a/src/flash/nor/stm32h7x.c +++ b/src/flash/nor/stm32h7x.c @@ -83,6 +83,7 @@ #define OPT_BSY (1 << 0) #define OPT_RDP_POS 8 #define OPT_RDP_MASK (0xff << OPT_RDP_POS) +#define OPT_OPTCHANGEERR (1 << 30) /* FLASH_OPTCCR register bits */ #define OPT_CLR_OPTCHANGEERR (1 << 30) @@ -343,8 +344,8 @@ static int stm32x_write_option(struct flash_bank *bank, uint32_t reg_offset, uin /* wait for completion */ int timeout = FLASH_ERASE_TIMEOUT; + uint32_t status; for (;;) { - uint32_t status; retval = stm32x_read_flash_reg(bank, FLASH_OPTSR_CUR, &status); if (retval != ERROR_OK) { LOG_ERROR("stm32x_options_program: failed to read FLASH_OPTSR_CUR"); @@ -361,6 +362,12 @@ static int stm32x_write_option(struct flash_bank *bank, uint32_t reg_offset, uin alive_sleep(1); } + /* check for failure */ + if (status & OPT_OPTCHANGEERR) { + LOG_ERROR("error changing option bytes (OPTCHANGEERR=1)"); + retval = ERROR_FLASH_OPERATION_FAILED; + } + flash_options_lock: retval2 = stm32x_lock_option_reg(bank); if (retval2 != ERROR_OK) ----------------------------------------------------------------------- Summary of changes: src/flash/nor/stm32h7x.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) hooks/post-receive -- Main OpenOCD repository |