target/msp432: flash read write return bool

This commit is contained in:
Rafael Silva 2022-08-24 12:37:53 +01:00 committed by Rachel Mant
parent f0c955432b
commit 232b6dd376
1 changed files with 12 additions and 11 deletions

View File

@ -108,8 +108,8 @@ struct msp432_flash {
/* Flash operations */ /* Flash operations */
static bool msp432_sector_erase(target_flash_s *f, target_addr_t addr); static bool msp432_sector_erase(target_flash_s *f, target_addr_t addr);
static int msp432_flash_erase(target_flash_s *f, target_addr_t addr, size_t len); static bool msp432_flash_erase(target_flash_s *f, target_addr_t addr, size_t len);
static int msp432_flash_write(target_flash_s *f, target_addr_t dest, const void *src, size_t len); static bool msp432_flash_write(target_flash_s *f, target_addr_t dest, const void *src, size_t len);
/* Utility functions */ /* Utility functions */
/* Find the the target flash that conatins a specific address */ /* Find the the target flash that conatins a specific address */
@ -253,15 +253,15 @@ static bool msp432_sector_erase(target_flash_s *f, target_addr_t addr)
/* Restore original protection */ /* Restore original protection */
target_mem_write32(t, mf->flash_protect_register, old_prot); target_mem_write32(t, mf->flash_protect_register, old_prot);
return !regs[0]; return !!regs[0];
} }
/* Erase from addr for len bytes */ /* Erase from addr for len bytes */
static int msp432_flash_erase(target_flash_s *f, target_addr_t addr, size_t len) static bool msp432_flash_erase(target_flash_s *f, target_addr_t addr, size_t len)
{ {
int ret = 0; bool ret = true;
while (len) { while (len) {
ret |= msp432_sector_erase(f, addr); ret &= msp432_sector_erase(f, addr);
/* update len and addr */ /* update len and addr */
len -= f->blocksize; len -= f->blocksize;
@ -275,7 +275,7 @@ static int msp432_flash_erase(target_flash_s *f, target_addr_t addr, size_t len)
} }
/* Program flash */ /* Program flash */
static int msp432_flash_write(target_flash_s *f, target_addr_t dest, const void *src, size_t len) static bool msp432_flash_write(target_flash_s *f, target_addr_t dest, const void *src, size_t len)
{ {
struct msp432_flash *mf = (struct msp432_flash *)f; struct msp432_flash *mf = (struct msp432_flash *)f;
target *t = f->t; target *t = f->t;
@ -304,8 +304,9 @@ static int msp432_flash_write(target_flash_s *f, target_addr_t dest, const void
target_mem_write32(t, mf->flash_protect_register, old_prot); target_mem_write32(t, mf->flash_protect_register, old_prot);
DEBUG_INFO("ROM return value: %"PRIu32"\n", regs[0]); DEBUG_INFO("ROM return value: %"PRIu32"\n", regs[0]);
// Result value in R0 is true for success // Result value in R0 is true for success
return !regs[0]; return !!regs[0];
} }
/* Optional commands handlers */ /* Optional commands handlers */
@ -321,11 +322,11 @@ static bool msp432_cmd_erase_main(target *t, int argc, const char **argv)
/* Erase first bank */ /* Erase first bank */
target_flash_s *f = get_target_flash(t, MAIN_FLASH_BASE); target_flash_s *f = get_target_flash(t, MAIN_FLASH_BASE);
bool ret = msp432_flash_erase(f, MAIN_FLASH_BASE, banksize); bool ret = !msp432_flash_erase(f, MAIN_FLASH_BASE, banksize);
/* Erase second bank */ /* Erase second bank */
f = get_target_flash(t, MAIN_FLASH_BASE + banksize); f = get_target_flash(t, MAIN_FLASH_BASE + banksize);
ret |= msp432_flash_erase(f, MAIN_FLASH_BASE + banksize, banksize); ret |= !msp432_flash_erase(f, MAIN_FLASH_BASE + banksize, banksize);
return ret; return ret;
} }
@ -341,7 +342,7 @@ static bool msp432_cmd_sector_erase(target *t, int argc, const char **argv)
target_flash_s *f = get_target_flash(t, addr); target_flash_s *f = get_target_flash(t, addr);
if (f) if (f)
return msp432_sector_erase(f, addr); return !msp432_sector_erase(f, addr);
tc_printf(t, "Invalid sector address\n"); tc_printf(t, "Invalid sector address\n");
return false; return false;
} }