This is an automated email from Gerrit.

Spencer Oliver ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/976

-- gerrit

commit c95301aaa6add2bfc0fcdb241f805432822b8fcf
Author: Spencer Oliver <[email protected]>
Date:   Tue Nov 13 11:52:12 2012 +0000

    jtag: add connect_type cmd
    
    This adds the ability to request to the adapter how we want to connect to
    the target, eg. while srst is asserted or not.
    
    This ability can very handy for connecting to unresponsive targets.
    A prerequisite is that the target supports srst_nogate.
    
    Change-Id: I0f7c9475160048e8a963e16077754f5403ac8325
    Signed-off-by: Spencer Oliver <[email protected]>

diff --git a/doc/openocd.texi b/doc/openocd.texi
index c2ee20d..265562c 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -3201,6 +3201,18 @@ JTAG clock. This means that no communication can happen 
on JTAG
 while SRST is asserted.
 Its converse is @option{srst_nogate}, indicating that JTAG commands
 can safely be issued while SRST is active.
+
+@item
+The @var{connect_type} tokens control flags that describe some cases where
+SRST is asserted while connecting to the target. @option{srst_nogate}
+is required to use this option.
+@option{connect_deassert_srst} (default)
+indicates that SRST will not be asserted while connecting to the target.
+Its converse is @option{connect_assert_srst}, indicating that SRST will
+be asserted before any target connection.
+Only some targets support this feature, STM32 and STR9 are examples.
+This feature is useful if you are unable to connect to your target due
+to incorrect options byte config or illegal program execution.
 @end itemize
 
 The optional @var{trst_type} and @var{srst_type} parameters allow the
diff --git a/src/jtag/adapter.c b/src/jtag/adapter.c
index ec65827..9b8c056 100644
--- a/src/jtag/adapter.c
+++ b/src/jtag/adapter.c
@@ -289,6 +289,22 @@ COMMAND_HANDLER(handle_reset_config_command)
                if (m)
                        goto next;
 
+               /* connect_type - only valid when srst_nogate */
+               m |= RESET_CNCT_UNDER_SRST;
+               if (strcmp(*CMD_ARGV, "connect_assert_srst") == 0)
+                       tmp |= RESET_CNCT_UNDER_SRST;
+               else if (strcmp(*CMD_ARGV, "connect_deassert_srst") == 0)
+                       /* connect normally - default */;
+               else
+                       m = 0;
+               if (mask & m) {
+                       LOG_ERROR("extra reset_config %s spec (%s)",
+                                       "connect_type", *CMD_ARGV);
+                       return ERROR_COMMAND_SYNTAX_ERROR;
+               }
+               if (m)
+                       goto next;
+
                /* caller provided nonsense; fail */
                LOG_ERROR("unknown reset_config flag (%s)", *CMD_ARGV);
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -314,7 +330,7 @@ next:
        /*
         * Display the (now-)current reset mode
         */
-       char *modes[5];
+       char *modes[6];
 
        /* minimal JTAG has neither SRST nor TRST (so that's the default) */
        switch (new_cfg & (RESET_HAS_TRST | RESET_HAS_SRST)) {
@@ -368,14 +384,20 @@ next:
                        modes[4] = " srst_push_pull";
                else
                        modes[4] = " srst_open_drain";
+
+               if (new_cfg & RESET_CNCT_UNDER_SRST)
+                       modes[5] = " connect_assert_srst";
+               else
+                       modes[5] = " connect_deassert_srst";
        } else {
                modes[2] = "";
                modes[4] = "";
+               modes[5] = "";
        }
 
-       command_print(CMD_CTX, "%s %s%s%s%s",
+       command_print(CMD_CTX, "%s %s%s%s%s%s",
                        modes[0], modes[1],
-                       modes[2], modes[3], modes[4]);
+                       modes[2], modes[3], modes[4], modes[5]);
 
        return ERROR_OK;
 }
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index da5e025..3d2146c 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -266,6 +266,7 @@ enum reset_types {
        RESET_TRST_OPEN_DRAIN = 0x10,
        RESET_SRST_PUSH_PULL  = 0x20,
        RESET_SRST_NO_GATING  = 0x40,
+       RESET_CNCT_UNDER_SRST = 0x80
 };
 
 enum reset_types jtag_get_reset_config(void);

-- 

------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to