samx5x: Bracket and GDB message cleanup

This commit is contained in:
dragonmux 2022-07-11 21:30:57 -04:00 committed by Piotr Esden-Tempski
parent 591f05d7e5
commit 2f0d35de19
1 changed files with 14 additions and 33 deletions

View File

@ -400,21 +400,15 @@ bool samx5x_probe(target *t)
default: default:
case 18: case 18:
target_add_ram(t, 0x20000000, 0x20000); target_add_ram(t, 0x20000000, 0x20000);
samx5x_add_flash(t, 0x00000000, 0x40000, samx5x_add_flash(t, 0x00000000, 0x40000, SAMX5X_BLOCK_SIZE, SAMX5X_PAGE_SIZE);
SAMX5X_BLOCK_SIZE,
SAMX5X_PAGE_SIZE);
break; break;
case 19: case 19:
target_add_ram(t, 0x20000000, 0x30000); target_add_ram(t, 0x20000000, 0x30000);
samx5x_add_flash(t, 0x00000000, 0x80000, samx5x_add_flash(t, 0x00000000, 0x80000, SAMX5X_BLOCK_SIZE, SAMX5X_PAGE_SIZE);
SAMX5X_BLOCK_SIZE,
SAMX5X_PAGE_SIZE);
break; break;
case 20: case 20:
target_add_ram(t, 0x20000000, 0x40000); target_add_ram(t, 0x20000000, 0x40000);
samx5x_add_flash(t, 0x00000000, 0x100000, samx5x_add_flash(t, 0x00000000, 0x100000, SAMX5X_BLOCK_SIZE, SAMX5X_PAGE_SIZE);
SAMX5X_BLOCK_SIZE,
SAMX5X_PAGE_SIZE);
break; break;
} }
@ -458,19 +452,14 @@ static void samx5x_unlock_current_address(target *t)
*/ */
static void samx5x_print_nvm_error(uint16_t errs) static void samx5x_print_nvm_error(uint16_t errs)
{ {
if (errs & SAMX5X_INTFLAG_ADDRE) { if (errs & SAMX5X_INTFLAG_ADDRE)
DEBUG_WARN(" ADDRE"); DEBUG_WARN(" ADDRE");
} if (errs & SAMX5X_INTFLAG_PROGE)
if (errs & SAMX5X_INTFLAG_PROGE) {
DEBUG_WARN(" PROGE"); DEBUG_WARN(" PROGE");
} if (errs & SAMX5X_INTFLAG_LOCKE)
if (errs & SAMX5X_INTFLAG_LOCKE) {
DEBUG_WARN(" LOCKE"); DEBUG_WARN(" LOCKE");
} if (errs & SAMX5X_INTFLAG_NVME)
if (errs & SAMX5X_INTFLAG_NVME) {
DEBUG_WARN(" NVME"); DEBUG_WARN(" NVME");
}
DEBUG_WARN("\n"); DEBUG_WARN("\n");
} }
@ -680,7 +669,7 @@ static int samx5x_update_user_word(target *t, uint32_t addr, uint32_t value,
0xFF, 0xFF, 0xFF, 0xFF }; 0xFF, 0xFF, 0xFF, 0xFF };
uint8_t buffer[SAMX5X_PAGE_SIZE]; uint8_t buffer[SAMX5X_PAGE_SIZE];
uint32_t current_word, new_word; uint32_t current_word;
target_mem_read(t, buffer, SAMX5X_NVM_USER_PAGE, SAMX5X_PAGE_SIZE); target_mem_read(t, buffer, SAMX5X_NVM_USER_PAGE, SAMX5X_PAGE_SIZE);
memcpy(&current_word, buffer + addr, 4); memcpy(&current_word, buffer + addr, 4);
@ -690,20 +679,18 @@ static int samx5x_update_user_word(target *t, uint32_t addr, uint32_t value,
for (int i = 0; !force && i < 4 && addr + i < 20; i++) for (int i = 0; !force && i < 4 && addr + i < 20; i++)
factory_word |= (uint32_t)factory_bits[addr + i] << (i * 8); factory_word |= (uint32_t)factory_bits[addr + i] << (i * 8);
new_word = current_word & factory_word; uint32_t new_word = current_word & factory_word;
new_word |= value & ~factory_word; new_word |= value & ~factory_word;
if (value_written != NULL) if (value_written != NULL)
*value_written = new_word; *value_written = new_word;
if (new_word != current_word) { if (new_word != current_word) {
DEBUG_INFO("Writing user page word 0x%08"PRIx32 DEBUG_INFO("Writing user page word 0x%08" PRIx32 " at offset 0x%03"PRIx32"\n", new_word, addr);
" at offset 0x%03"PRIx32"\n", new_word, addr);
memcpy(buffer + addr, &new_word, 4); memcpy(buffer + addr, &new_word, 4);
return samx5x_write_user_page(t, buffer); return samx5x_write_user_page(t, buffer);
} }
else { else
DEBUG_INFO("Skipping user page write as no change would be made"); DEBUG_INFO("Skipping user page write as no change would be made");
}
return 0; return 0;
} }
@ -815,16 +802,12 @@ static bool samx5x_cmd_read_userpage(target *t, int argc, const char **argv)
(void)argc; (void)argc;
(void)argv; (void)argv;
uint8_t buffer[SAMX5X_PAGE_SIZE]; uint8_t buffer[SAMX5X_PAGE_SIZE];
int i = 0;
target_mem_read(t, buffer, SAMX5X_NVM_USER_PAGE, SAMX5X_PAGE_SIZE); target_mem_read(t, buffer, SAMX5X_NVM_USER_PAGE, SAMX5X_PAGE_SIZE);
tc_printf(t, "User Page:\n"); tc_printf(t, "User Page:\n");
while (i < SAMX5X_PAGE_SIZE) { for (size_t i = 0; i < SAMX5X_PAGE_SIZE; ++i)
tc_printf(t, "%02x%c", buffer[i], tc_printf(t, "%02x%c", buffer[i], (i + 1) % 16 == 0 ? '\n' : ' ');
(i + 1) % 16 == 0 ? '\n' : ' ');
i++;
}
return true; return true;
} }
@ -864,9 +847,7 @@ static bool samx5x_cmd_ssb(target *t, int argc, const char **argv)
if (target_check_error(t)) if (target_check_error(t))
return -1; return -1;
tc_printf(t, "Set the security bit! " tc_printf(t, "Set the security bit!\nYou will need to issue 'monitor erase_mass' to clear this.\n");
"You will need to issue 'monitor erase_mass' "
"to clear this.\n");
return true; return true;
} }