From 0ebf1eb94d06f892d8699bb35a8af65c721b5f5f Mon Sep 17 00:00:00 2001 From: "James G. Smith" Date: Thu, 26 Sep 2013 12:08:05 +0100 Subject: hla/stlink: Re-order trace parameters to allow trace output file to be optional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-order the "trace" parameters to allow the raw capture (log) file to be an optional feature. The clock frequency for calculating the "Async Clock Prescalar" is always required when enabling trace processing and is now the first "required" parameter. The ST-Link driver is updated to use the (required parameter) "trace_source_hz" non-zero value as the indicator of trace being required, rather than the now optional output file descriptor being non-NULL. Background: This patch is groundwork for extending the OpenOCD SWO capture to implement other (OpenOCD built-in) ITM/DWT processing where the core trace support is required, but there is no requirement to store raw trace data to a configured host file. By itself this patch is almost a functional NOP, since without the other processing in place there is no reason NOT to specify a capture file. Change-Id: Ibc385dd0a7adaf9bd652bceded27262fef35fd59 Signed-off-by: James G. Smith Reviewed-on: http://openocd.zylin.com/1660 Tested-by: jenkins Reviewed-by: Mathias Küster Reviewed-by: Spencer Oliver --- src/jtag/drivers/stlink_usb.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/jtag/drivers') diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c index 31f08cbb..e94e6c8a 100644 --- a/src/jtag/drivers/stlink_usb.c +++ b/src/jtag/drivers/stlink_usb.c @@ -855,9 +855,11 @@ static void stlink_usb_trace_read(void *handle) res = stlink_usb_read_trace(handle, buf, size); if (res == ERROR_OK) { - /* Log retrieved trace output */ - if (fwrite(buf, 1, size, h->trace.output_f) > 0) - fflush(h->trace.output_f); + if (h->trace.output_f) { + /* Log retrieved trace output */ + if (fwrite(buf, 1, size, h->trace.output_f) > 0) + fflush(h->trace.output_f); + } } } } @@ -1113,7 +1115,7 @@ static int stlink_usb_run(void *handle) res = stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_DEBUGEN); /* Try to start tracing, if requested */ - if (res == ERROR_OK && h->trace.output_f) { + if (res == ERROR_OK && h->trace.source_hz) { if (stlink_usb_trace_enable(handle) == ERROR_OK) LOG_DEBUG("Tracing: enabled\n"); else @@ -1732,7 +1734,7 @@ static int stlink_usb_open(struct hl_interface_param_s *param, void **fd) /* set the used jtag api, this will default to the newest supported version */ h->jtag_api = api; - if (h->jtag_api >= 2 && param->trace_f && param->trace_source_hz > 0) { + if (h->jtag_api >= 2 && param->trace_source_hz > 0) { uint32_t prescale; prescale = param->trace_source_hz > STLINK_TRACE_MAX_HZ ? -- cgit v1.2.3-18-g5258