forked from auracaster/openocd
flash/nor/rp2xxx: fix LOG_xxx messages
Use proper format specifiers for uint16_t and uint32_t arguments. Use LOG_TARGET_DEBUG instead of target->cmd_name as a parameter. Use command_print() in command handler. Drop dots and new lines at end of messages. Change-Id: I37c7d3680a352210b1d7e69f2c9b4ba0efe6ec15 Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reported-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/8809 Tested-by: jenkins
This commit is contained in:
+32
-31
@@ -242,7 +242,7 @@ static int rp2040_lookup_rom_symbol(struct target *target, uint16_t tag, uint16_
|
|||||||
if (err != ERROR_OK)
|
if (err != ERROR_OK)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
LOG_ROM_SYMBOL_DEBUG(" -> found: 0x%04x", *symbol_out);
|
LOG_ROM_SYMBOL_DEBUG(" -> found: 0x%04" PRIx16, *symbol_out);
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
ptr_to_entry += 4;
|
ptr_to_entry += 4;
|
||||||
@@ -287,7 +287,7 @@ static int rp2350_a0_lookup_symbol(struct target *target, uint16_t tag, uint16_t
|
|||||||
if (err != ERROR_OK)
|
if (err != ERROR_OK)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
LOG_ROM_SYMBOL_DEBUG(" -> found: 0x%04x", *symbol_out);
|
LOG_ROM_SYMBOL_DEBUG(" -> found: 0x%04" PRIx16, *symbol_out);
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
ptr_to_entry += 6;
|
ptr_to_entry += 6;
|
||||||
@@ -347,7 +347,7 @@ static int rp2350_lookup_rom_symbol(struct target *target, uint32_t ptr_to_entry
|
|||||||
if (err != ERROR_OK)
|
if (err != ERROR_OK)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
LOG_ROM_SYMBOL_DEBUG(" -> found: 0x%04x", *symbol_out);
|
LOG_ROM_SYMBOL_DEBUG(" -> found: 0x%04" PRIx16, *symbol_out);
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
/* Skip past this entry */
|
/* Skip past this entry */
|
||||||
@@ -398,38 +398,38 @@ static int rp2xxx_populate_rom_pointer_cache(struct target *target, struct rp2xx
|
|||||||
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_EXIT_XIP,
|
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_EXIT_XIP,
|
||||||
symtype_func, &priv->jump_flash_exit_xip);
|
symtype_func, &priv->jump_flash_exit_xip);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Function FUNC_FLASH_EXIT_XIP not found in RP2xxx ROM.");
|
LOG_ERROR("Function FUNC_FLASH_EXIT_XIP not found in RP2xxx ROM");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = rp2xxx_lookup_rom_symbol(target, FUNC_CONNECT_INTERNAL_FLASH,
|
err = rp2xxx_lookup_rom_symbol(target, FUNC_CONNECT_INTERNAL_FLASH,
|
||||||
symtype_func, &priv->jump_connect_internal_flash);
|
symtype_func, &priv->jump_connect_internal_flash);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Function FUNC_CONNECT_INTERNAL_FLASH not found in RP2xxx ROM.");
|
LOG_ERROR("Function FUNC_CONNECT_INTERNAL_FLASH not found in RP2xxx ROM");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_RANGE_ERASE, symtype_func, &priv->jump_flash_range_erase);
|
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_RANGE_ERASE, symtype_func, &priv->jump_flash_range_erase);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Function FUNC_FLASH_RANGE_ERASE not found in RP2xxx ROM.");
|
LOG_ERROR("Function FUNC_FLASH_RANGE_ERASE not found in RP2xxx ROM");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_RANGE_PROGRAM, symtype_func, &priv->jump_flash_range_program);
|
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_RANGE_PROGRAM, symtype_func, &priv->jump_flash_range_program);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Function FUNC_FLASH_RANGE_PROGRAM not found in RP2xxx ROM.");
|
LOG_ERROR("Function FUNC_FLASH_RANGE_PROGRAM not found in RP2xxx ROM");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_FLUSH_CACHE, symtype_func, &priv->jump_flush_cache);
|
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_FLUSH_CACHE, symtype_func, &priv->jump_flush_cache);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Function FUNC_FLASH_FLUSH_CACHE not found in RP2xxx ROM.");
|
LOG_ERROR("Function FUNC_FLASH_FLUSH_CACHE not found in RP2xxx ROM");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_ENTER_CMD_XIP, symtype_func, &priv->jump_enter_cmd_xip);
|
err = rp2xxx_lookup_rom_symbol(target, FUNC_FLASH_ENTER_CMD_XIP, symtype_func, &priv->jump_enter_cmd_xip);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Function FUNC_FLASH_ENTER_CMD_XIP not found in RP2xxx ROM.");
|
LOG_ERROR("Function FUNC_FLASH_ENTER_CMD_XIP not found in RP2xxx ROM");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -480,18 +480,17 @@ static int rp2xxx_call_rom_func_batch(struct target *target, struct rp2xxx_flash
|
|||||||
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
||||||
}
|
}
|
||||||
if (priv->ram_algo_space->size < batch_size) {
|
if (priv->ram_algo_space->size < batch_size) {
|
||||||
LOG_ERROR("RAM code space too small for call batch size of %u\n", n_calls);
|
LOG_ERROR("RAM code space too small for call batch size of %u", n_calls);
|
||||||
return ERROR_BUF_TOO_SMALL;
|
return ERROR_BUF_TOO_SMALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("Calling batch of %u ROM functions:", n_calls);
|
LOG_TARGET_DEBUG(target, "Calling batch of %u ROM functions:", n_calls);
|
||||||
for (unsigned int i = 0; i < n_calls; ++i) {
|
for (unsigned int i = 0; i < n_calls; ++i) {
|
||||||
LOG_DEBUG(" func @ %" PRIx32, calls[i].pc);
|
LOG_DEBUG(" func @ %" PRIx32, calls[i].pc);
|
||||||
LOG_DEBUG(" sp = %" PRIx32, calls[i].sp);
|
LOG_DEBUG(" sp = %" PRIx32, calls[i].sp);
|
||||||
for (unsigned int j = 0; j < 4; ++j)
|
for (unsigned int j = 0; j < 4; ++j)
|
||||||
LOG_DEBUG(" a%d = %" PRIx32, j, calls[i].args[j]);
|
LOG_DEBUG(" a%u = %" PRIx32, j, calls[i].args[j]);
|
||||||
}
|
}
|
||||||
LOG_DEBUG("Calling on core \"%s\"", target->cmd_name);
|
|
||||||
|
|
||||||
if (n_calls <= 0) {
|
if (n_calls <= 0) {
|
||||||
LOG_DEBUG("Returning early from call of 0 ROM functions");
|
LOG_DEBUG("Returning early from call of 0 ROM functions");
|
||||||
@@ -534,7 +533,7 @@ static int rp2xxx_call_rom_func_batch(struct target *target, struct rp2xxx_flash
|
|||||||
free(batch_bf);
|
free(batch_bf);
|
||||||
|
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Failed to write ROM batch algorithm to RAM code space\n");
|
LOG_ERROR("Failed to write ROM batch algorithm to RAM code space");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -565,7 +564,7 @@ static int rp2xxx_call_rom_func_batch(struct target *target, struct rp2xxx_flash
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Failed to call ROM function batch\n");
|
LOG_ERROR("Failed to call ROM function batch");
|
||||||
/* This case is hit when loading new ROM images on FPGA, but can also be hit on real
|
/* This case is hit when loading new ROM images on FPGA, but can also be hit on real
|
||||||
hardware if you swap two devices with different ROM versions without restarting OpenOCD: */
|
hardware if you swap two devices with different ROM versions without restarting OpenOCD: */
|
||||||
LOG_ROM_SYMBOL_DEBUG("Repopulating ROM address cache after failed ROM call");
|
LOG_ROM_SYMBOL_DEBUG("Repopulating ROM address cache after failed ROM call");
|
||||||
@@ -616,9 +615,9 @@ static int rp2350_init_accessctrl(struct target *target)
|
|||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
if (accessctrl_lock_reg & ACCESSCTRL_LOCK_DEBUG_BITS) {
|
if (accessctrl_lock_reg & ACCESSCTRL_LOCK_DEBUG_BITS) {
|
||||||
LOG_ERROR("ACCESSCTRL is locked, so can't reset permissions. Following steps might fail.\n");
|
LOG_ERROR("ACCESSCTRL is locked, so can't reset permissions. Following steps might fail");
|
||||||
} else {
|
} else {
|
||||||
LOG_DEBUG("Reset ACCESSCTRL permissions via CFGRESET\n");
|
LOG_DEBUG("Reset ACCESSCTRL permissions via CFGRESET");
|
||||||
return target_write_u32(target, ACCESSCTRL_CFGRESET_OFFSET, ACCESSCTRL_WRITE_PASSWORD | 1u);
|
return target_write_u32(target, ACCESSCTRL_CFGRESET_OFFSET, ACCESSCTRL_WRITE_PASSWORD | 1u);
|
||||||
}
|
}
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
@@ -637,9 +636,9 @@ static int rp2350_init_arm_core0(struct target *target, struct rp2xxx_flash_bank
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("DSCSR: %08x\n", dscsr);
|
LOG_DEBUG("DSCSR: 0x%08" PRIx32, dscsr);
|
||||||
if (!(dscsr & DSCSR_CDS)) {
|
if (!(dscsr & DSCSR_CDS)) {
|
||||||
LOG_DEBUG("Setting Current Domain Secure in DSCSR\n");
|
LOG_DEBUG("Setting Current Domain Secure in DSCSR");
|
||||||
retval = target_write_u32(target, DCB_DSCSR, (dscsr & ~DSCSR_CDSKEY) | DSCSR_CDS);
|
retval = target_write_u32(target, DCB_DSCSR, (dscsr & ~DSCSR_CDSKEY) | DSCSR_CDS);
|
||||||
if (retval != ERROR_OK) {
|
if (retval != ERROR_OK) {
|
||||||
LOG_ERROR("RP2350 init ARM core: DSCSR read failed");
|
LOG_ERROR("RP2350 init ARM core: DSCSR read failed");
|
||||||
@@ -664,12 +663,12 @@ static int rp2350_init_arm_core0(struct target *target, struct rp2xxx_flash_bank
|
|||||||
rcp_init_code
|
rcp_init_code
|
||||||
);
|
);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Failed to load rcp_init algorithm into RAM\n");
|
LOG_ERROR("Failed to load rcp_init algorithm into RAM");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("Calling rcp_init on core \"%s\", code at 0x%" PRIx32 "\n",
|
LOG_TARGET_DEBUG(target, "Calling rcp_init, code at " TARGET_ADDR_FMT,
|
||||||
target->cmd_name, (uint32_t)priv->ram_algo_space->address);
|
priv->ram_algo_space->address);
|
||||||
|
|
||||||
/* Actually call the function */
|
/* Actually call the function */
|
||||||
struct armv7m_algorithm alg_info;
|
struct armv7m_algorithm alg_info;
|
||||||
@@ -684,7 +683,7 @@ static int rp2350_init_arm_core0(struct target *target, struct rp2xxx_flash_bank
|
|||||||
&alg_info
|
&alg_info
|
||||||
);
|
);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Failed to invoke rcp_init\n");
|
LOG_ERROR("Failed to invoke rcp_init");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,7 +728,7 @@ static int setup_for_raw_flash_cmd(struct target *target, struct rp2xxx_flash_ba
|
|||||||
BOOTROM_STATE_RESET_CURRENT_CORE
|
BOOTROM_STATE_RESET_CURRENT_CORE
|
||||||
};
|
};
|
||||||
if (!priv->jump_bootrom_reset_state) {
|
if (!priv->jump_bootrom_reset_state) {
|
||||||
LOG_WARNING("RP2350 flash: no bootrom_reset_method\n");
|
LOG_WARNING("RP2350 flash: no bootrom_reset_method");
|
||||||
} else {
|
} else {
|
||||||
/* This is mainly required to clear varmulet_enclosing_cpu pointers on RISC-V, in case
|
/* This is mainly required to clear varmulet_enclosing_cpu pointers on RISC-V, in case
|
||||||
an Arm -> RISC-V call has been interrupted (these pointers are used to handle
|
an Arm -> RISC-V call has been interrupted (these pointers are used to handle
|
||||||
@@ -746,7 +745,7 @@ static int setup_for_raw_flash_cmd(struct target *target, struct rp2xxx_flash_ba
|
|||||||
/* Pass {0, 0} to set_varmulet_user_stack() to enable automatic emulation of Arm APIs
|
/* Pass {0, 0} to set_varmulet_user_stack() to enable automatic emulation of Arm APIs
|
||||||
using the ROM's default stacks. Usually the bootrom does this before exiting to user
|
using the ROM's default stacks. Usually the bootrom does this before exiting to user
|
||||||
code, but it needs to be done manually when the USB bootloader has been interrupted. */
|
code, but it needs to be done manually when the USB bootloader has been interrupted. */
|
||||||
LOG_DEBUG("Enabling default Arm emulator stacks for RISC-V ROM calls\n");
|
LOG_DEBUG("Enabling default Arm emulator stacks for RISC-V ROM calls");
|
||||||
struct working_area *set_stack_mem_args;
|
struct working_area *set_stack_mem_args;
|
||||||
err = target_alloc_working_area(target, 2 * sizeof(uint32_t), &set_stack_mem_args);
|
err = target_alloc_working_area(target, 2 * sizeof(uint32_t), &set_stack_mem_args);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
@@ -771,7 +770,7 @@ static int setup_for_raw_flash_cmd(struct target *target, struct rp2xxx_flash_ba
|
|||||||
set_stack_register_args, ARRAY_SIZE(set_stack_register_args));
|
set_stack_register_args, ARRAY_SIZE(set_stack_register_args));
|
||||||
target_free_working_area(target, set_stack_mem_args);
|
target_free_working_area(target, set_stack_mem_args);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Failed to initialise Arm emulation stacks for RISC-V: 0x%08" PRIx32, err);
|
LOG_ERROR("Failed to initialise Arm emulation stacks for RISC-V");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -852,7 +851,7 @@ static void cleanup_after_raw_flash_cmd(struct target *target, struct rp2xxx_fla
|
|||||||
|
|
||||||
static int rp2xxx_flash_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
|
static int rp2xxx_flash_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
|
||||||
{
|
{
|
||||||
LOG_DEBUG("Writing %d bytes starting at 0x%" PRIx32, count, offset);
|
LOG_DEBUG("Writing %" PRIu32 " bytes starting at 0x%" PRIx32, count, offset);
|
||||||
|
|
||||||
struct rp2xxx_flash_bank *priv = bank->driver_priv;
|
struct rp2xxx_flash_bank *priv = bank->driver_priv;
|
||||||
struct target *target = bank->target;
|
struct target *target = bank->target;
|
||||||
@@ -882,7 +881,8 @@ static int rp2xxx_flash_write(struct flash_bank *bank, const uint8_t *buffer, ui
|
|||||||
|
|
||||||
while (count > 0) {
|
while (count > 0) {
|
||||||
uint32_t write_size = count > chunk_size ? chunk_size : count;
|
uint32_t write_size = count > chunk_size ? chunk_size : count;
|
||||||
LOG_DEBUG("Writing %d bytes to offset 0x%" PRIx32, write_size, offset);
|
LOG_DEBUG("Writing %" PRIu32 " bytes to offset 0x%" PRIx32,
|
||||||
|
write_size, offset);
|
||||||
err = target_write_buffer(target, bounce->address, write_size, buffer);
|
err = target_write_buffer(target, bounce->address, write_size, buffer);
|
||||||
if (err != ERROR_OK) {
|
if (err != ERROR_OK) {
|
||||||
LOG_ERROR("Could not load data into target bounce buffer");
|
LOG_ERROR("Could not load data into target bounce buffer");
|
||||||
@@ -929,7 +929,8 @@ static int rp2xxx_flash_erase(struct flash_bank *bank, unsigned int first, unsig
|
|||||||
uint32_t offset_start = bank->sectors[first].offset;
|
uint32_t offset_start = bank->sectors[first].offset;
|
||||||
uint32_t offset_last = bank->sectors[last].offset + bank->sectors[last].size;
|
uint32_t offset_last = bank->sectors[last].offset + bank->sectors[last].size;
|
||||||
uint32_t length = offset_last - offset_start;
|
uint32_t length = offset_last - offset_start;
|
||||||
LOG_DEBUG("erase %d bytes starting at 0x%" PRIx32, length, offset_start);
|
LOG_DEBUG("erase %" PRIu32 " bytes starting at 0x%" PRIx32,
|
||||||
|
length, offset_start);
|
||||||
|
|
||||||
int err = setup_for_raw_flash_cmd(target, priv);
|
int err = setup_for_raw_flash_cmd(target, priv);
|
||||||
if (err != ERROR_OK)
|
if (err != ERROR_OK)
|
||||||
@@ -1328,7 +1329,7 @@ COMMAND_HANDLER(rp2xxx_rom_api_call_handler)
|
|||||||
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[i + 1], args[i]);
|
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[i + 1], args[i]);
|
||||||
|
|
||||||
if (target->state != TARGET_HALTED) {
|
if (target->state != TARGET_HALTED) {
|
||||||
LOG_ERROR("Target not halted");
|
command_print(CMD, "Target not halted");
|
||||||
return ERROR_TARGET_NOT_HALTED;
|
return ERROR_TARGET_NOT_HALTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1343,7 +1344,7 @@ COMMAND_HANDLER(rp2xxx_rom_api_call_handler)
|
|||||||
uint16_t fc;
|
uint16_t fc;
|
||||||
retval = rp2xxx_lookup_rom_symbol(target, tag, symtype_func, &fc);
|
retval = rp2xxx_lookup_rom_symbol(target, tag, symtype_func, &fc);
|
||||||
if (retval != ERROR_OK) {
|
if (retval != ERROR_OK) {
|
||||||
command_print(CMD, "Function %.2s not found in RP2xxx ROM.",
|
command_print(CMD, "Function %.2s not found in RP2xxx ROM",
|
||||||
CMD_ARGV[0]);
|
CMD_ARGV[0]);
|
||||||
goto cleanup_and_return;
|
goto cleanup_and_return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user