X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Foocd_trace.c;h=3b4357194372f71a215b954a08a56f63811626da;hb=7f6bab0c4c36d7a64f933904e5add9bc6b36d78c;hp=a34c63c699108bbb3f5049d54968f73a800a8ff1;hpb=c3800b5e674be3a9e1c7976925f9cfc52cba3ad5;p=openocd.git diff --git a/src/target/oocd_trace.c b/src/target/oocd_trace.c index a34c63c699..3b43571943 100644 --- a/src/target/oocd_trace.c +++ b/src/target/oocd_trace.c @@ -21,7 +21,8 @@ #include "config.h" #endif -#include "armv4_5.h" +#include "arm.h" +#include "etm.h" #include "oocd_trace.h" /* @@ -30,8 +31,6 @@ */ -static int oocd_trace_register_commands(struct command_context *cmd_ctx); - static int oocd_trace_read_reg(struct oocd_trace *oocd_trace, int reg, uint32_t *value) { size_t bytes_written, bytes_read, bytes_to_read; @@ -239,21 +238,21 @@ static int oocd_trace_start_capture(struct etm_context *etm_ctx) uint32_t control = 0x1; /* 0x1: enabled */ uint32_t trigger_count; - if (((etm_ctx->portmode & ETM_PORT_MODE_MASK) != ETM_PORT_NORMAL) - || ((etm_ctx->portmode & ETM_PORT_WIDTH_MASK) != ETM_PORT_4BIT)) + if (((etm_ctx->control & ETM_PORT_MODE_MASK) != ETM_PORT_NORMAL) + || ((etm_ctx->control & ETM_PORT_WIDTH_MASK) != ETM_PORT_4BIT)) { LOG_DEBUG("OpenOCD + trace only supports normal 4-bit ETM mode"); return ERROR_ETM_PORTMODE_NOT_SUPPORTED; } - if ((etm_ctx->portmode & ETM_PORT_CLOCK_MASK) == ETM_PORT_HALF_CLOCK) + if ((etm_ctx->control & ETM_PORT_CLOCK_MASK) == ETM_PORT_HALF_CLOCK) { control |= 0x2; /* half rate clock, capture at twice the clock rate */ } /* OpenOCD + trace holds up to 16 million samples, * but trigger counts is set in multiples of 16 */ - trigger_count = (1048576 * etm_ctx->trigger_percent) / 100; + trigger_count = (1048576 * /* trigger_percent */ 50) / 100; /* capturing always starts at address zero */ oocd_trace_write_reg(oocd_trace, OOCD_TRACE_ADDRESS, 0x0); @@ -278,17 +277,6 @@ static int oocd_trace_stop_capture(struct etm_context *etm_ctx) return ERROR_OK; } -struct etm_capture_driver oocd_trace_capture_driver = -{ - .name = "oocd_trace", - .register_commands = oocd_trace_register_commands, - .init = oocd_trace_init, - .status = oocd_trace_status, - .start_capture = oocd_trace_start_capture, - .stop_capture = oocd_trace_stop_capture, - .read_trace = oocd_trace_read_trace, -}; - COMMAND_HANDLER(handle_oocd_trace_config_command) { struct target *target; @@ -410,13 +398,13 @@ COMMAND_HANDLER(handle_oocd_trace_resync_command) static const struct command_registration oocd_trace_all_command_handlers[] = { { .name = "config", - .handler = &handle_oocd_trace_config_command, + .handler = handle_oocd_trace_config_command, .mode = COMMAND_CONFIG, - .usage = "", + .usage = "target", }, { .name = "status", - .handler = &handle_oocd_trace_status_command, + .handler = handle_oocd_trace_status_command, .mode = COMMAND_EXEC, .help = "display OpenOCD + trace status", }, @@ -438,7 +426,15 @@ static const struct command_registration oocd_trace_command_handlers[] = { COMMAND_REGISTRATION_DONE }; -int oocd_trace_register_commands(struct command_context *cmd_ctx) +struct etm_capture_driver oocd_trace_capture_driver = { - return register_commands(cmd_ctx, NULL, oocd_trace_command_handlers); -} + .name = "oocd_trace", + .commands = oocd_trace_command_handlers, + .init = oocd_trace_init, + .status = oocd_trace_status, + .start_capture = oocd_trace_start_capture, + .stop_capture = oocd_trace_stop_capture, + .read_trace = oocd_trace_read_trace, +}; + +