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 20d1d4405d73fe47efc07cb109454c088a8ecbc8 (commit)
from 2e1a76368eed7aac8054e6ccb7c8104bad421a70 (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 20d1d4405d73fe47efc07cb109454c088a8ecbc8
Author: Tomas Vanek <va...@fb...>
Date: Wed Aug 14 09:39:42 2024 +0200
flash/nor/rp2040: add missing TARGET_HALTED checks
Flash erase and write require this guard, unfortunately it is also
partially needed in the flash probe.
Partially backported from former upstream rp2040.c
Signed-off-by: Tomas Vanek <va...@fb...>
Change-Id: Ie8a240e66c3ed68e08f872cbbfdd90a6d80e1f1e
Reviewed-on: https://review.openocd.org/c/openocd/+/8452
Tested-by: jenkins
diff --git a/src/flash/nor/rp2040.c b/src/flash/nor/rp2040.c
index 0e592f912..65c1e095b 100644
--- a/src/flash/nor/rp2040.c
+++ b/src/flash/nor/rp2040.c
@@ -752,6 +752,12 @@ static int rp2040_flash_write(struct flash_bank *bank, const uint8_t *buffer, ui
struct rp2040_flash_bank *priv = bank->driver_priv;
struct target *target = bank->target;
+
+ if (target->state != TARGET_HALTED) {
+ LOG_ERROR("Target not halted");
+ return ERROR_TARGET_NOT_HALTED;
+ }
+
struct working_area *bounce;
int err = setup_for_raw_flash_cmd(target, priv);
@@ -839,6 +845,12 @@ static int rp2040_flash_erase(struct flash_bank *bank, unsigned int first, unsig
{
struct rp2040_flash_bank *priv = bank->driver_priv;
struct target *target = bank->target;
+
+ if (target->state != TARGET_HALTED) {
+ LOG_ERROR("Target not halted");
+ return ERROR_TARGET_NOT_HALTED;
+ }
+
uint32_t start_addr = bank->sectors[first].offset;
uint32_t length = bank->sectors[last].offset + bank->sectors[last].size - start_addr;
LOG_DEBUG("RP2040 erase %d bytes starting at 0x%" PRIx32, length, start_addr);
@@ -1109,6 +1121,11 @@ static int rp2040_flash_probe(struct flash_bank *bank)
priv->spi_dev.name = "size override";
LOG_DEBUG("SPI flash autodetection disabled, using configured size");
} else {
+ if (target->state != TARGET_HALTED) {
+ LOG_ERROR("Target not halted");
+ return ERROR_TARGET_NOT_HALTED;
+ }
+
bank->size = 0;
(void)setup_for_raw_flash_cmd(target, priv);
@@ -1240,6 +1257,11 @@ COMMAND_HANDLER(rp2040_rom_api_call_handler)
for (unsigned int i = 0; i + 1 < CMD_ARGC && i < ARRAY_SIZE(args); i++)
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[i + 1], args[i]);
+ if (target->state != TARGET_HALTED) {
+ LOG_ERROR("Target not halted");
+ return ERROR_TARGET_NOT_HALTED;
+ }
+
struct rp2040_flash_bank *priv = bank->driver_priv;
retval = setup_for_raw_flash_cmd(target, priv);
if (retval != ERROR_OK)
-----------------------------------------------------------------------
Summary of changes:
src/flash/nor/rp2040.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
hooks/post-receive
--
Main OpenOCD repository
|