aboutsummaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
authorJim Paris <jim@jtan.com>2014-10-29 19:00:52 -0400
committerSpencer Oliver <spen@spen-soft.co.uk>2014-11-24 21:54:02 +0000
commit56802d794e9b23c290ccb373c44b86999f35ca20 (patch)
tree9fe06454987b7f35b59f49396e91e4cb129f6641 /src/flash
parentf30bb58644ac604f67837b7a4d7ba22fb77a1974 (diff)
nrf51: verify that UICR needs erasing before triggering an error about it
If the UICR is already empty, there's no reason to return an error just because it can't be erased again. This happens, for example, when flashing UICR from GDB after a "monitor nrf51 mass_erase". Change-Id: Ia6d28c43189205fb5a7120b1c7312e45eb32edb7 Signed-off-by: Jim Paris <jim@jtan.com> Reviewed-on: http://openocd.zylin.com/2363 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/flash')
-rw-r--r--src/flash/nor/nrf51.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/flash/nor/nrf51.c b/src/flash/nor/nrf51.c
index 8b6a57fb..bfa199a2 100644
--- a/src/flash/nor/nrf51.c
+++ b/src/flash/nor/nrf51.c
@@ -581,6 +581,12 @@ static int nrf51_erase_page(struct flash_bank *bank,
}
if ((ppfc & 0xFF) == 0xFF) {
+ /* We can't erase the UICR. Double-check to
+ see if it's already erased before complaining. */
+ default_flash_blank_check(bank);
+ if (sector->is_erased == 1)
+ return ERROR_OK;
+
LOG_ERROR("The chip was not pre-programmed with SoftDevice stack and UICR cannot be erased separately. Please issue mass erase before trying to write to this region");
return ERROR_FAIL;
};