flash/nor/stellaris: allow to recover a locked device that can't be examined
Change-Id: I28536184053e2d1ba906620e728f7fad6ba39f0a Reported-by: Ed Beroset <beroset@mindspring.com> Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/2552 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-by: Ed Beroset <beroset@ieee.org>__archive__
parent
5aa08f7851
commit
571db89aa1
|
@ -5480,12 +5480,12 @@ standard @command{flash erase_address} command.}
|
||||||
flash bank $_FLASHNAME stellaris 0 0 0 0 $_TARGETNAME
|
flash bank $_FLASHNAME stellaris 0 0 0 0 $_TARGETNAME
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@deffn Command {stellaris recover bank_id}
|
@deffn Command {stellaris recover}
|
||||||
Performs the @emph{Recovering a "Locked" Device} procedure to
|
Performs the @emph{Recovering a "Locked" Device} procedure to restore
|
||||||
restore the flash specified by @var{bank_id} and its associated
|
the flash and its associated nonvolatile registers to their factory
|
||||||
nonvolatile registers to their factory default values (erased).
|
default values (erased). This is the only way to remove flash
|
||||||
This is the only way to remove flash protection or re-enable
|
protection or re-enable debugging if that capability has been
|
||||||
debugging if that capability has been disabled.
|
disabled.
|
||||||
|
|
||||||
Note that the final "power cycle the chip" step in this procedure
|
Note that the final "power cycle the chip" step in this procedure
|
||||||
must be performed by hand, since OpenOCD can't do it.
|
must be performed by hand, since OpenOCD can't do it.
|
||||||
|
|
|
@ -1359,12 +1359,12 @@ COMMAND_HANDLER(stellaris_handle_recover_command)
|
||||||
struct flash_bank *bank;
|
struct flash_bank *bank;
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
if (CMD_ARGC < 1)
|
if (CMD_ARGC != 0)
|
||||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
return ERROR_COMMAND_SYNTAX_ERROR;
|
||||||
|
|
||||||
retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
|
bank = get_flash_bank_by_num_noprobe(0);
|
||||||
if (retval != ERROR_OK)
|
if (!bank)
|
||||||
return retval;
|
return ERROR_FAIL;
|
||||||
|
|
||||||
/* REVISIT ... it may be worth sanity checking that the AP is
|
/* REVISIT ... it may be worth sanity checking that the AP is
|
||||||
* inactive before we start. ARM documents that switching a DP's
|
* 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",
|
.name = "recover",
|
||||||
.handler = stellaris_handle_recover_command,
|
.handler = stellaris_handle_recover_command,
|
||||||
.mode = COMMAND_EXEC,
|
.mode = COMMAND_EXEC,
|
||||||
.usage = "bank_id",
|
.usage = "",
|
||||||
.help = "recover (and erase) locked device",
|
.help = "recover (and erase) locked device",
|
||||||
},
|
},
|
||||||
COMMAND_REGISTRATION_DONE
|
COMMAND_REGISTRATION_DONE
|
||||||
|
|
Loading…
Reference in New Issue