From: openocd-gerrit <ope...@us...> - 2022-12-17 09:33:55
|
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 77c7abe4e7569ca8bb23dad6110c7209c8c55558 (commit) via 0a829efda5c254ceca2371edb38e9b0e4a998706 (commit) from 2b6fe8f1ab739798309b47f7b3a664894ba43a19 (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 77c7abe4e7569ca8bb23dad6110c7209c8c55558 Author: Dan Stahlke <da...@st...> Date: Sun Dec 4 18:12:16 2022 -0800 at91samd: wait for nvm ready Flashing a SAMD21J17D was failing during NVM erase. The samd21 datasheet specifies that one cause of error conditions is executing an NVM command while the previous command is still running. The solution is to wait for INTFLAG.READY after a command is issued. SAMD21J17A was not exhibiting this problem. Perhaps the later silicon revision has slower NVM erase times. Signed-off-by: Dan Stahlke <da...@st...> Change-Id: I19745dae4d3fc6e3a7611dcac628e067cb41e0f0 Reviewed-on: https://review.openocd.org/c/openocd/+/7391 Tested-by: jenkins Reviewed-by: Antonio Borneo <bor...@gm...> Reviewed-by: Tomas Vanek <va...@fb...> diff --git a/src/flash/nor/at91samd.c b/src/flash/nor/at91samd.c index f213444d1..33e86c76e 100644 --- a/src/flash/nor/at91samd.c +++ b/src/flash/nor/at91samd.c @@ -12,6 +12,7 @@ #include "imp.h" #include "helper/binarybuffer.h" +#include <helper/time_support.h> #include <jtag/jtag.h> #include <target/cortex_m.h> @@ -31,7 +32,7 @@ #define SAMD_NVMCTRL_CTRLA 0x00 /* NVM control A register */ #define SAMD_NVMCTRL_CTRLB 0x04 /* NVM control B register */ #define SAMD_NVMCTRL_PARAM 0x08 /* NVM parameters register */ -#define SAMD_NVMCTRL_INTFLAG 0x18 /* NVM Interrupt Flag Status & Clear */ +#define SAMD_NVMCTRL_INTFLAG 0x14 /* NVM Interrupt Flag Status & Clear */ #define SAMD_NVMCTRL_STATUS 0x18 /* NVM status register */ #define SAMD_NVMCTRL_ADDR 0x1C /* NVM address register */ #define SAMD_NVMCTRL_LOCK 0x20 /* NVM Lock section register */ @@ -55,6 +56,9 @@ /* NVMCTRL bits */ #define SAMD_NVM_CTRLB_MANW 0x80 +/* NVMCTRL_INTFLAG bits */ +#define SAMD_NVM_INTFLAG_READY 0x01 + /* Known identifiers */ #define SAMD_PROCESSOR_M0 0x01 #define SAMD_FAMILY_D 0x00 @@ -497,7 +501,27 @@ static int samd_probe(struct flash_bank *bank) static int samd_check_error(struct target *target) { int ret, ret2; + uint8_t intflag; uint16_t status; + int timeout_ms = 1000; + int64_t ts_start = timeval_ms(); + + do { + ret = target_read_u8(target, + SAMD_NVMCTRL + SAMD_NVMCTRL_INTFLAG, &intflag); + if (ret != ERROR_OK) { + LOG_ERROR("Can't read NVM intflag"); + return ret; + } + if (intflag & SAMD_NVM_INTFLAG_READY) + break; + keep_alive(); + } while (timeval_ms() - ts_start < timeout_ms); + + if (!(intflag & SAMD_NVM_INTFLAG_READY)) { + LOG_ERROR("SAMD: NVM programming timed out"); + return ERROR_FLASH_OPERATION_FAILED; + } ret = target_read_u16(target, SAMD_NVMCTRL + SAMD_NVMCTRL_STATUS, &status); commit 0a829efda5c254ceca2371edb38e9b0e4a998706 Author: Antonio Borneo <bor...@gm...> Date: Sun Dec 11 11:08:32 2022 +0100 driver: vdebug: fix mode of cmd 'vdebug mem_path' The command 'vdebug mem_path' is reported in the documentation as '{Config Command}', but the code sets mode = COMMAND_ANY. The code of the commands sets some value that is only used during the init phase, so the documentation is correct. Change mode of command 'vdebug mem_path' to COMMAND_CONFIG. Change-Id: Icb940fe382cbc75015273b35dcc8a88fc2a7d0ac Signed-off-by: Antonio Borneo <bor...@gm...> Reviewed-on: https://review.openocd.org/c/openocd/+/7395 Tested-by: jenkins Reviewed-by: Jacek Wuwer <jac...@gm...> diff --git a/src/jtag/drivers/vdebug.c b/src/jtag/drivers/vdebug.c index ef7a49332..7898e9d9b 100644 --- a/src/jtag/drivers/vdebug.c +++ b/src/jtag/drivers/vdebug.c @@ -1246,7 +1246,7 @@ static const struct command_registration vdebug_command_handlers[] = { { .name = "mem_path", .handler = &vdebug_set_mem, - .mode = COMMAND_ANY, + .mode = COMMAND_CONFIG, .help = "set the design memory for the code load", .usage = "<path> <base_address> <size>", }, ----------------------------------------------------------------------- Summary of changes: src/flash/nor/at91samd.c | 26 +++++++++++++++++++++++++- src/jtag/drivers/vdebug.c | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) hooks/post-receive -- Main OpenOCD repository |