This is an automated email from Gerrit.

James G. Smith (jsm...@ecoscentric.com) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/1660

-- gerrit

commit 5448975c15aee228c43f1238d860c54b6e21841f
Author: James G. Smith <jsm...@ecoscentric.com>
Date:   Thu Sep 26 12:08:05 2013 +0100

    hla/stlink: Re-order trace parameters to allow trace output file to be 
optional
    
    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 <jsm...@ecoscentric.com>

diff --git a/doc/openocd.texi b/doc/openocd.texi
index 003ec4f..df58f9a 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -3044,11 +3044,11 @@ The vendor ID and product ID of the device.
 Manually sets the stlink api used, valid options are 1 or 2. (@b{STLINK Only}).
 @end deffn
 
-@deffn {Config Command} {trace} output_file_path source_clock_hz
-Enable SWO tracing (if supported), trace data is appended to the specified
-output file and the file is created if it does not exist.  The source clock
-rate for the trace port must be specified, this is typically the CPU clock
-rate.
+@deffn {Config Command} {trace} source_clock_hz [output_file_path]
+Enable SWO tracing (if supported).  The source clock rate for the
+trace port must be specified, this is typically the CPU clock rate.  If
+the optional output file is specified then raw trace data is appended
+to the file, and the file is created if it does not exist.
 @end deffn
 @end deffn
 
diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c
index 31f08cb..e94e6c8 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 ?
diff --git a/src/jtag/hla/hla_interface.c b/src/jtag/hla/hla_interface.c
index 0176a48..50ce47d 100644
--- a/src/jtag/hla/hla_interface.c
+++ b/src/jtag/hla/hla_interface.c
@@ -118,6 +118,7 @@ static int hl_interface_quit(void)
                fclose(hl_if.param.trace_f);
                hl_if.param.trace_f = NULL;
        }
+       hl_if.param.trace_source_hz = 0;
 
        return ERROR_OK;
 }
@@ -227,22 +228,23 @@ COMMAND_HANDLER(stlink_interface_handle_api_command)
 
 COMMAND_HANDLER(interface_handle_trace_command)
 {
-       FILE *f;
+       FILE *f = NULL;
        unsigned source_hz;
 
-       if (CMD_ARGC != 2)
+       if ((CMD_ARGC < 1) || (CMD_ARGC > 2))
                return ERROR_COMMAND_SYNTAX_ERROR;
 
-       f = fopen(CMD_ARGV[0], "a");
-       if (!f)
-               return ERROR_COMMAND_SYNTAX_ERROR;
-
-       COMMAND_PARSE_NUMBER(uint, CMD_ARGV[1], source_hz);
+       COMMAND_PARSE_NUMBER(uint, CMD_ARGV[0], source_hz);
        if (source_hz == 0) {
-               fclose(f);
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
+       if (CMD_ARGC == 2) {
+               f = fopen(CMD_ARGV[0], "a");
+               if (!f)
+                       return ERROR_COMMAND_SYNTAX_ERROR;
+       }
+
        hl_if.param.trace_f = f;
        hl_if.param.trace_source_hz = source_hz;
 
@@ -290,7 +292,7 @@ static const struct command_registration 
hl_interface_command_handlers[] = {
         .handler = &interface_handle_trace_command,
         .mode = COMMAND_CONFIG,
         .help = "configure trace reception",
-        .usage = "destination_path source_lock_hz",
+        .usage = "source_lock_hz [destination_path]",
         },
        COMMAND_REGISTRATION_DONE
 };

-- 

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to