itm: fix default initialization

Commit f9509c92db ("itm: rework itm commands before 'init'")
ignores the default enable of ITM channel 0, that is applied when
no 'itm port[s]' is issued.

Call armv7m_trace_itm_config() unconditionally to handle it.

Change-Id: I3e85d0b063ed38c1552f6af9ea9eea2e76aa9025
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reported-by: Paul Fertser <fercerpav@gmail.com>
Fixes: f9509c92db ("itm: rework itm commands before 'init'")
Reviewed-on: https://review.openocd.org/c/openocd/+/7900
Reviewed-by: <post@frankplowman.com>
Tested-by: jenkins
This commit is contained in:
Antonio Borneo 2023-09-17 11:15:22 +02:00
parent 198fecf5e4
commit dde096e03f
3 changed files with 16 additions and 12 deletions

View File

@ -92,11 +92,14 @@ COMMAND_HANDLER(handle_itm_port_command)
else
armv7m->trace_config.itm_ter[reg_idx] &= ~(1 << port);
if (CMD_CTX->mode == COMMAND_EXEC)
return armv7m_trace_itm_config(target);
/*
* In config mode ITM is not accessible yet.
* Keep the value and it will be programmed at target init.
*/
if (CMD_CTX->mode == COMMAND_CONFIG)
return ERROR_OK;
armv7m->trace_config.itm_deferred_config = true;
return ERROR_OK;
return armv7m_trace_itm_config(target);
}
COMMAND_HANDLER(handle_itm_ports_command)
@ -112,11 +115,14 @@ COMMAND_HANDLER(handle_itm_ports_command)
memset(armv7m->trace_config.itm_ter, enable ? 0xff : 0,
sizeof(armv7m->trace_config.itm_ter));
if (CMD_CTX->mode == COMMAND_EXEC)
return armv7m_trace_itm_config(target);
/*
* In config mode ITM is not accessible yet.
* Keep the value and it will be programmed at target init.
*/
if (CMD_CTX->mode == COMMAND_CONFIG)
return ERROR_OK;
armv7m->trace_config.itm_deferred_config = true;
return ERROR_OK;
return armv7m_trace_itm_config(target);
}
static const struct command_registration itm_command_handlers[] = {

View File

@ -35,8 +35,6 @@ struct armv7m_trace_config {
bool itm_async_timestamps;
/** Enable synchronisation packet transmission (for sync port only) */
bool itm_synchro_packets;
/** Config ITM after target examine */
bool itm_deferred_config;
};
extern const struct command_registration armv7m_trace_command_handlers[];

View File

@ -2659,8 +2659,8 @@ int cortex_m_examine(struct target *target)
if (retval != ERROR_OK)
return retval;
if (armv7m->trace_config.itm_deferred_config)
armv7m_trace_itm_config(target);
/* Configure ITM */
armv7m_trace_itm_config(target);
/* NOTE: FPB and DWT are both optional. */