From 571db89aa13554d5c5e38e88233927d3149edc3a Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Sat, 21 Feb 2015 10:55:41 +0300 Subject: [PATCH] flash/nor/stellaris: allow to recover a locked device that can't be examined Change-Id: I28536184053e2d1ba906620e728f7fad6ba39f0a Reported-by: Ed Beroset Signed-off-by: Paul Fertser Reviewed-on: http://openocd.zylin.com/2552 Tested-by: jenkins Reviewed-by: Spencer Oliver Reviewed-by: Ed Beroset --- doc/openocd.texi | 12 ++++++------ src/flash/nor/stellaris.c | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/openocd.texi b/doc/openocd.texi index 9a697e1d..40864373 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -5480,12 +5480,12 @@ standard @command{flash erase_address} command.} flash bank $_FLASHNAME stellaris 0 0 0 0 $_TARGETNAME @end example -@deffn Command {stellaris recover bank_id} -Performs the @emph{Recovering a "Locked" Device} procedure to -restore the flash specified by @var{bank_id} and its associated -nonvolatile registers to their factory default values (erased). -This is the only way to remove flash protection or re-enable -debugging if that capability has been disabled. +@deffn Command {stellaris recover} +Performs the @emph{Recovering a "Locked" Device} procedure to restore +the flash and its associated nonvolatile registers to their factory +default values (erased). This is the only way to remove flash +protection or re-enable debugging if that capability has been +disabled. Note that the final "power cycle the chip" step in this procedure must be performed by hand, since OpenOCD can't do it. diff --git a/src/flash/nor/stellaris.c b/src/flash/nor/stellaris.c index 664b6d03..27b66325 100644 --- a/src/flash/nor/stellaris.c +++ b/src/flash/nor/stellaris.c @@ -1359,12 +1359,12 @@ COMMAND_HANDLER(stellaris_handle_recover_command) struct flash_bank *bank; int retval; - if (CMD_ARGC < 1) + if (CMD_ARGC != 0) return ERROR_COMMAND_SYNTAX_ERROR; - retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank); - if (retval != ERROR_OK) - return retval; + bank = get_flash_bank_by_num_noprobe(0); + if (!bank) + return ERROR_FAIL; /* REVISIT ... it may be worth sanity checking that the AP is * inactive before we start. ARM documents that switching a DP's @@ -1425,7 +1425,7 @@ static const struct command_registration stellaris_exec_command_handlers[] = { .name = "recover", .handler = stellaris_handle_recover_command, .mode = COMMAND_EXEC, - .usage = "bank_id", + .usage = "", .help = "recover (and erase) locked device", }, COMMAND_REGISTRATION_DONE -- 2.39.5