aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/openocd.texi4
-rw-r--r--src/jtag/driver.h4
-rw-r--r--src/jtag/tcl.c26
-rw-r--r--src/openocd.c2
4 files changed, 31 insertions, 5 deletions
diff --git a/doc/openocd.texi b/doc/openocd.texi
index f9f9b68e..33c442f6 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -6641,6 +6641,8 @@ the order of TAP state transitions.
If you're not debugging OpenOCD internals, or bringing up a
new JTAG adapter or a new type of TAP device (like a CPU or
JTAG router), you probably won't need to use these commands.
+In a debug session that doesn't use JTAG for its transport protocol,
+these commands are not available.
@deffn Command {drscan} tap [numbits value]+ [@option{-endstate} tap_state]
Loads the data register of @var{tap} with a series of bit fields
@@ -6831,6 +6833,7 @@ OpenOCD also includes some boundary scan commands.
The Serial Vector Format, better known as @dfn{SVF}, is a
way to represent JTAG test patterns in text files.
+In a debug session using JTAG for its transport protocol,
OpenOCD supports running such test files.
@deffn Command {svf} filename [@option{quiet}]
@@ -6847,6 +6850,7 @@ each command is logged before it is executed.
The Xilinx Serial Vector Format, better known as @dfn{XSVF}, is a
binary representation of SVF which is optimized for use with
Xilinx devices.
+In a debug session using JTAG for its transport protocol,
OpenOCD supports running such test files.
@quotation Important
diff --git a/src/jtag/driver.h b/src/jtag/driver.h
new file mode 100644
index 00000000..62cda414
--- /dev/null
+++ b/src/jtag/driver.h
@@ -0,0 +1,4 @@
+struct command_context;
+
+int interface_register_commands(struct command_context *ctx);
+
diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c
index 1073abc0..3ffa930d 100644
--- a/src/jtag/tcl.c
+++ b/src/jtag/tcl.c
@@ -985,7 +985,7 @@ COMMAND_HANDLER(handle_interface_list_command)
if (strcmp(CMD_NAME, "interface_list") == 0 && CMD_ARGC > 0)
return ERROR_COMMAND_SYNTAX_ERROR;
- command_print(CMD_CTX, "The following JTAG interfaces are available:");
+ command_print(CMD_CTX, "The following debug interfaces are available:");
for (unsigned i = 0; NULL != jtag_interfaces[i]; i++)
{
const char *name = jtag_interfaces[i]->name;
@@ -1038,7 +1038,7 @@ COMMAND_HANDLER(handle_interface_command)
/* no valid interface was found (i.e. the configuration option,
* didn't match one of the compiled-in interfaces
*/
- LOG_ERROR("The specified JTAG interface was not found (%s)", CMD_ARGV[0]);
+ LOG_ERROR("The specified debug interface was not found (%s)", CMD_ARGV[0]);
CALL_COMMAND_HANDLER(handle_interface_list_command);
return ERROR_JTAG_INVALID_INTERFACE;
}
@@ -1607,20 +1607,35 @@ COMMAND_HANDLER(handle_tms_sequence_command)
return ERROR_OK;
}
-static const struct command_registration jtag_command_handlers[] = {
+static const struct command_registration interface_command_handlers[] = {
{
.name = "interface",
.handler = handle_interface_command,
.mode = COMMAND_CONFIG,
- .help = "Select a JTAG interface",
+ .help = "Select a debug adapter interface (driver)",
.usage = "driver_name",
},
{
.name = "interface_list",
.handler = handle_interface_list_command,
.mode = COMMAND_ANY,
- .help = "List all built-in interfaces",
+ .help = "List all built-in debug adapter interfaces (drivers)",
},
+ COMMAND_REGISTRATION_DONE
+};
+
+/**
+ * Register the commands which deal with arbitrary debug adapter drivers.
+ *
+ * @todo Remove internal assumptions that all debug adapters use JTAG for
+ * transport. Various types and data structures are not named generically.
+ */
+int interface_register_commands(struct command_context *ctx)
+{
+ return register_commands(ctx, NULL, interface_command_handlers);
+}
+
+static const struct command_registration jtag_command_handlers[] = {
{
.name = "jtag_khz",
.handler = handle_jtag_khz_command,
@@ -1746,6 +1761,7 @@ static const struct command_registration jtag_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
+
int jtag_register_commands(struct command_context *cmd_ctx)
{
return register_commands(cmd_ctx, NULL, jtag_command_handlers);
diff --git a/src/openocd.c b/src/openocd.c
index 78336068..42504343 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -29,6 +29,7 @@
#endif
#include "openocd.h"
+#include <jtag/driver.h>
#include <jtag/jtag.h>
#include <helper/ioutil.h>
#include <helper/configuration.h>
@@ -207,6 +208,7 @@ struct command_context *setup_command_handler(Jim_Interp *interp)
&server_register_commands,
&gdb_register_commands,
&log_register_commands,
+ &interface_register_commands,
&jtag_register_commands,
&xsvf_register_commands,
&svf_register_commands,