rp: Add erase_sector to command list
The command can be used either by specifying the length only, or the start address and the length like so: monitor erase_sector <length> monitor erase_sector <start_addr> <length> If no start address is specified, it will begin erasing from the start of the flash sector.
This commit is contained in:
parent
53672f1fc3
commit
b43b9a6545
|
@ -333,8 +333,32 @@ static bool rp_cmd_erase_mass(target *t, int argc, const char *argv[])
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool rp_cmd_erase_sector(target *t, int argc, const char *argv[])
|
||||||
|
{
|
||||||
|
uint32_t length = t->flash->length;
|
||||||
|
uint32_t start = t->flash->start;
|
||||||
|
|
||||||
|
if (argc == 3) {
|
||||||
|
start = strtoul(argv[1], NULL, 0);
|
||||||
|
length = strtoul(argv[2], NULL, 0);
|
||||||
|
}
|
||||||
|
else if (argc == 2)
|
||||||
|
length = strtoul(argv[1], NULL, 0);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
struct target_flash f;
|
||||||
|
f.t = t;
|
||||||
|
struct rp_priv_s *ps = (struct rp_priv_s*)t->target_storage;
|
||||||
|
ps->is_monitor = true;
|
||||||
|
bool res = (rp_flash_erase(&f, start, length)) ? false: true;
|
||||||
|
ps->is_monitor = false;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
const struct command_s rp_cmd_list[] = {
|
const struct command_s rp_cmd_list[] = {
|
||||||
{"erase_mass", rp_cmd_erase_mass, "Erase entire flash memory"},
|
{"erase_mass", rp_cmd_erase_mass, "Erase entire flash memory"},
|
||||||
|
{"erase_sector", rp_cmd_erase_sector, "Erase a sector by number" },
|
||||||
{"reset_usb_boot", rp_cmd_reset_usb_boot, "Reboot the device into BOOTSEL mode"},
|
{"reset_usb_boot", rp_cmd_reset_usb_boot, "Reboot the device into BOOTSEL mode"},
|
||||||
{NULL, NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue