Add nRF51 command for (only) erasing the UICR registers
Original implementation by: Benjamin Vedder <benjamin@vedder.se>
This commit is contained in:
parent
d987a8dd8c
commit
5ea01030e2
|
@ -31,6 +31,7 @@ static int nrf51_flash_write(struct target_flash *f,
|
||||||
target_addr dest, const void *src, size_t len);
|
target_addr dest, const void *src, size_t len);
|
||||||
|
|
||||||
static bool nrf51_cmd_erase_all(target *t, int argc, const char **argv);
|
static bool nrf51_cmd_erase_all(target *t, int argc, const char **argv);
|
||||||
|
static bool nrf51_cmd_erase_uicr(target *t, int argc, const char **argv);
|
||||||
static bool nrf51_cmd_read_hwid(target *t, int argc, const char **argv);
|
static bool nrf51_cmd_read_hwid(target *t, int argc, const char **argv);
|
||||||
static bool nrf51_cmd_read_fwid(target *t, int argc, const char **argv);
|
static bool nrf51_cmd_read_fwid(target *t, int argc, const char **argv);
|
||||||
static bool nrf51_cmd_read_deviceid(target *t, int argc, const char **argv);
|
static bool nrf51_cmd_read_deviceid(target *t, int argc, const char **argv);
|
||||||
|
@ -41,6 +42,7 @@ static bool nrf51_cmd_read(target *t, int argc, const char **argv);
|
||||||
|
|
||||||
const struct command_s nrf51_cmd_list[] = {
|
const struct command_s nrf51_cmd_list[] = {
|
||||||
{"erase_mass", (cmd_handler)nrf51_cmd_erase_all, "Erase entire flash memory"},
|
{"erase_mass", (cmd_handler)nrf51_cmd_erase_all, "Erase entire flash memory"},
|
||||||
|
{"erase_uicr", (cmd_handler)nrf51_cmd_erase_uicr, "Erase UICR registers"},
|
||||||
{"read", (cmd_handler)nrf51_cmd_read, "Read device parameters"},
|
{"read", (cmd_handler)nrf51_cmd_read, "Read device parameters"},
|
||||||
{NULL, NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
@ -244,6 +246,31 @@ static bool nrf51_cmd_erase_all(target *t, int argc, const char **argv)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool nrf51_cmd_erase_uicr(target *t, int argc, const char **argv)
|
||||||
|
{
|
||||||
|
(void)argc;
|
||||||
|
(void)argv;
|
||||||
|
tc_printf(t, "erase..\n");
|
||||||
|
|
||||||
|
/* Enable erase */
|
||||||
|
target_mem_write32(t, NRF51_NVMC_CONFIG, NRF51_NVMC_CONFIG_EEN);
|
||||||
|
|
||||||
|
/* Poll for NVMC_READY */
|
||||||
|
while (target_mem_read32(t, NRF51_NVMC_READY) == 0)
|
||||||
|
if(target_check_error(t))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Erase UICR */
|
||||||
|
target_mem_write32(t, NRF51_NVMC_ERASEUICR, 1);
|
||||||
|
|
||||||
|
/* Poll for NVMC_READY */
|
||||||
|
while (target_mem_read32(t, NRF51_NVMC_READY) == 0)
|
||||||
|
if(target_check_error(t))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static bool nrf51_cmd_read_hwid(target *t, int argc, const char **argv)
|
static bool nrf51_cmd_read_hwid(target *t, int argc, const char **argv)
|
||||||
{
|
{
|
||||||
(void)argc;
|
(void)argc;
|
||||||
|
|
Loading…
Reference in New Issue