extern jtag_interface_t *jtag_interface;
-/* jtag commands */
-static int handle_interface_list_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc);
-static int handle_interface_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_speed_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_rclk_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_reset_config_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_nsrst_delay_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_nsrst_assert_width_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_ntrst_assert_width_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-
-static int handle_scan_chain_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-
-static int handle_jtag_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_runtest_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *argv);
-static int Jim_Command_pathmove(Jim_Interp *interp, int argc, Jim_Obj *const *argv);
-static int Jim_Command_flush_count(Jim_Interp *interp, int argc, Jim_Obj *const *args);
-
-static int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_verify_jtag_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_tms_sequence_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-
-
enum jtag_tap_cfg_param {
JCFG_EVENT
};
{ .name = NULL, .value = -1 }
};
-static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, jtag_tap_t * tap)
+static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, struct jtag_tap * tap)
{
Jim_Nvp *n;
Jim_Obj *o;
static int jim_newtap_cmd(Jim_GetOptInfo *goi)
{
- jtag_tap_t *pTap;
+ struct jtag_tap *pTap;
jim_wide w;
int x;
int e;
{ .name = NULL , .value = -1 },
};
- pTap = calloc(1, sizeof(jtag_tap_t));
+ pTap = calloc(1, sizeof(struct jtag_tap));
if (!pTap) {
Jim_SetResult_sprintf(goi->interp, "no memory");
return JIM_ERR;
return JIM_ERR;
}
-static void jtag_tap_handle_event(jtag_tap_t *tap, enum jtag_event e)
+static void jtag_tap_handle_event(struct jtag_tap *tap, enum jtag_event e)
{
jtag_tap_event_action_t * jteap;
Jim_WrongNumArgs(goi.interp, 1, goi.argv-1, "(no params)");
return JIM_ERR;
}
- Jim_SetResultString(goi.interp, jtag_interface->name, -1);
+ const char *name = jtag_interface ? jtag_interface->name : NULL;
+ Jim_SetResultString(goi.interp, name ? : "undefined", -1);
return JIM_OK;
case JTAG_CMD_INIT:
if (goi.argc != 0) {
}
{
- jtag_tap_t *t;
+ struct jtag_tap *t;
t = jtag_tap_by_jim_obj(goi.interp, goi.argv[0]);
if (t == NULL)
}
{
- jtag_tap_t *t;
+ struct jtag_tap *t;
Jim_GetOpt_Obj(&goi, &o);
t = jtag_tap_by_jim_obj(goi.interp, o);
}
{
- jtag_tap_t *t;
+ struct jtag_tap *t;
Jim_GetOpt_Obj(&goi, &o);
t = jtag_tap_by_jim_obj(goi.interp, o);
}
Jim_SetResult(goi.interp, Jim_NewListObj(goi.interp, NULL, 0));
{
- jtag_tap_t *tap;
+ struct jtag_tap *tap;
for (tap = jtag_all_taps(); tap; tap = tap->next_tap) {
Jim_ListAppendElement(goi.interp,
void jtag_notify_event(enum jtag_event event)
{
- jtag_tap_t *tap;
+ struct jtag_tap *tap;
for (tap = jtag_all_taps(); tap; tap = tap->next_tap)
jtag_tap_handle_event(tap, event);
}
-int jtag_register_commands(struct command_context_s *cmd_ctx)
-{
- register_jim(cmd_ctx, "jtag", jim_jtag_command, "perform jtag tap actions");
-
- register_command(cmd_ctx, NULL, "interface", handle_interface_command,
- COMMAND_CONFIG, "try to configure interface");
- register_command(cmd_ctx, NULL,
- "interface_list", &handle_interface_list_command,
- COMMAND_ANY, "list all built-in interfaces");
- register_command(cmd_ctx, NULL, "jtag_speed", handle_jtag_speed_command,
- COMMAND_ANY, "(DEPRECATED) set jtag speed (if supported)");
- register_command(cmd_ctx, NULL, "jtag_khz", handle_jtag_khz_command,
- COMMAND_ANY, "set maximum jtag speed (if supported); "
- "parameter is maximum khz, or 0 for adaptive clocking (RTCK).");
- register_command(cmd_ctx, NULL, "jtag_rclk", handle_jtag_rclk_command,
- COMMAND_ANY, "fallback_speed_khz - set JTAG speed to RCLK or use fallback speed");
- register_command(cmd_ctx, NULL, "jtag_device", handle_jtag_device_command,
- COMMAND_CONFIG, "(DEPRECATED) jtag_device <ir_length> <ir_expected> <ir_mask>");
- register_command(cmd_ctx, NULL, "reset_config", handle_reset_config_command,
- COMMAND_ANY,
- "reset_config "
- "[none|trst_only|srst_only|trst_and_srst] "
- "[srst_pulls_trst|trst_pulls_srst|combined|separate] "
- "[srst_gates_jtag|srst_nogate] "
- "[trst_push_pull|trst_open_drain] "
- "[srst_push_pull|srst_open_drain]");
- register_command(cmd_ctx, NULL, "jtag_nsrst_delay", handle_jtag_nsrst_delay_command,
- COMMAND_ANY, "jtag_nsrst_delay <ms> - delay after deasserting srst in ms");
- register_command(cmd_ctx, NULL, "jtag_ntrst_delay", handle_jtag_ntrst_delay_command,
- COMMAND_ANY, "jtag_ntrst_delay <ms> - delay after deasserting trst in ms");
- register_command(cmd_ctx, NULL, "jtag_nsrst_assert_width", handle_jtag_nsrst_assert_width_command,
- COMMAND_ANY, "jtag_nsrst_assert_width <ms> - delay after asserting srst in ms");
- register_command(cmd_ctx, NULL, "jtag_ntrst_assert_width", handle_jtag_ntrst_assert_width_command,
- COMMAND_ANY, "jtag_ntrst_assert_width <ms> - delay after asserting trst in ms");
-
- register_command(cmd_ctx, NULL, "scan_chain", handle_scan_chain_command,
- COMMAND_EXEC, "print current scan chain configuration");
-
- register_command(cmd_ctx, NULL, "jtag_reset", handle_jtag_reset_command,
- COMMAND_EXEC, "toggle reset lines <trst> <srst>");
- register_command(cmd_ctx, NULL, "runtest", handle_runtest_command,
- COMMAND_EXEC, "move to Run-Test/Idle, and execute <num_cycles>");
- register_command(cmd_ctx, NULL, "irscan", handle_irscan_command,
- COMMAND_EXEC, "execute IR scan <device> <instr> [dev2] [instr2] ...");
- register_jim(cmd_ctx, "drscan", Jim_Command_drscan, "execute DR scan <device> <num_bits> <value> <num_bits1> <value2> ...");
- register_jim(cmd_ctx, "flush_count", Jim_Command_flush_count, "returns number of times the JTAG queue has been flushed");
- register_jim(cmd_ctx, "pathmove", Jim_Command_pathmove, "move JTAG to state1 then to state2, state3, etc. <state1>,<state2>,<stat3>...");
-
- register_command(cmd_ctx, NULL, "verify_ircapture", handle_verify_ircapture_command,
- COMMAND_ANY, "verify value captured during Capture-IR <enable | disable>");
- register_command(cmd_ctx, NULL, "verify_jtag", handle_verify_jtag_command,
- COMMAND_ANY, "verify value capture <enable | disable>");
- register_command(cmd_ctx, NULL, "tms_sequence", handle_tms_sequence_command,
- COMMAND_ANY, "choose short(default) or long tms_sequence <short | long>");
- return ERROR_OK;
-}
-
static int default_khz(int khz, int *jtag_speed)
{
LOG_ERROR("Translation from khz to jtag_speed not implemented");
return ERROR_OK;
}
-static int handle_interface_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_interface_list_command)
+{
+ if (strcmp(CMD_NAME, "interface_list") == 0 && argc > 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(cmd_ctx, "The following JTAG interfaces are available:");
+ for (unsigned i = 0; NULL != jtag_interfaces[i]; i++)
+ {
+ const char *name = jtag_interfaces[i]->name;
+ command_print(cmd_ctx, "%u: %s", i + 1, name);
+ }
+
+ return ERROR_OK;
+}
+
+COMMAND_HANDLER(handle_interface_command)
{
/* check whether the interface is already configured */
if (jtag_interface)
* didn't match one of the compiled-in interfaces
*/
LOG_ERROR("The specified JTAG interface was not found (%s)", args[0]);
- handle_interface_list_command(cmd_ctx, cmd, args, argc);
+ CALL_COMMAND_HANDLER(handle_interface_list_command);
return ERROR_JTAG_INVALID_INTERFACE;
}
-static int handle_interface_list_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_scan_chain_command)
{
- if (strcmp(cmd, "interface_list") == 0 && argc > 0)
- return ERROR_COMMAND_SYNTAX_ERROR;
-
- command_print(cmd_ctx, "The following JTAG interfaces are available:");
- for (unsigned i = 0; NULL != jtag_interfaces[i]; i++)
- {
- const char *name = jtag_interfaces[i]->name;
- command_print(cmd_ctx, "%u: %s", i + 1, name);
- }
-
- return ERROR_OK;
-}
-
-static int handle_jtag_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
- int e;
- char buf[1024];
- Jim_Obj *newargs[ 10 ];
- /*
- * CONVERT SYNTAX
- * argv[-1] = command
- * argv[ 0] = ir length
- * argv[ 1] = ir capture
- * argv[ 2] = ir mask
- * argv[ 3] = not actually used by anything but in the docs
- */
-
- if (argc < 4) {
- command_print(cmd_ctx, "OLD DEPRECATED SYNTAX: Please use the NEW syntax");
- return ERROR_OK;
- }
- command_print(cmd_ctx, "OLD SYNTAX: DEPRECATED - translating to new syntax");
- command_print(cmd_ctx, "jtag newtap CHIP TAP -irlen %s -ircapture %s -irvalue %s",
- args[0],
- args[1],
- args[2]);
- command_print(cmd_ctx, "Example: STM32 has 2 taps, the cortexM3(len4) + boundaryscan(len5)");
- command_print(cmd_ctx, "jtag newtap stm32 cortexm3 ....., thus creating the tap: \"stm32.cortexm3\"");
- command_print(cmd_ctx, "jtag newtap stm32 boundary ....., and the tap: \"stm32.boundary\"");
- command_print(cmd_ctx, "And then refer to the taps by the dotted name.");
-
- newargs[0] = Jim_NewStringObj(interp, "jtag", -1);
- newargs[1] = Jim_NewStringObj(interp, "newtap", -1);
- sprintf(buf, "chip%d", jtag_tap_count());
- newargs[2] = Jim_NewStringObj(interp, buf, -1);
- sprintf(buf, "tap%d", jtag_tap_count());
- newargs[3] = Jim_NewStringObj(interp, buf, -1);
- newargs[4] = Jim_NewStringObj(interp, "-irlen", -1);
- newargs[5] = Jim_NewStringObj(interp, args[0], -1);
- newargs[6] = Jim_NewStringObj(interp, "-ircapture", -1);
- newargs[7] = Jim_NewStringObj(interp, args[1], -1);
- newargs[8] = Jim_NewStringObj(interp, "-irmask", -1);
- newargs[9] = Jim_NewStringObj(interp, args[2], -1);
-
- command_print(cmd_ctx, "NEW COMMAND:");
- sprintf(buf, "%s %s %s %s %s %s %s %s %s %s",
- Jim_GetString(newargs[0], NULL),
- Jim_GetString(newargs[1], NULL),
- Jim_GetString(newargs[2], NULL),
- Jim_GetString(newargs[3], NULL),
- Jim_GetString(newargs[4], NULL),
- Jim_GetString(newargs[5], NULL),
- Jim_GetString(newargs[6], NULL),
- Jim_GetString(newargs[7], NULL),
- Jim_GetString(newargs[8], NULL),
- Jim_GetString(newargs[9], NULL));
-
- e = jim_jtag_command(interp, 10, newargs);
- if (e != JIM_OK) {
- command_print(cmd_ctx, "%s", Jim_GetString(Jim_GetResult(interp), NULL));
- }
- return e;
-}
-
-static int handle_scan_chain_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
- jtag_tap_t *tap;
+ struct jtag_tap *tap;
tap = jtag_all_taps();
command_print(cmd_ctx, " TapName | Enabled | IdCode Expected IrLen IrCap IrMask Instr ");
return ERROR_OK;
}
-static int handle_reset_config_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_reset_config_command)
{
int new_cfg = 0;
int mask = 0;
return ERROR_OK;
}
-static int handle_jtag_nsrst_delay_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_nsrst_delay_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
if (argc == 1)
{
unsigned delay;
- int retval = parse_uint(args[0], &delay);
- if (ERROR_OK != retval)
- return retval;
+ COMMAND_PARSE_NUMBER(uint, args[0], delay);
+
jtag_set_nsrst_delay(delay);
}
command_print(cmd_ctx, "jtag_nsrst_delay: %u", jtag_get_nsrst_delay());
return ERROR_OK;
}
-static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_ntrst_delay_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
if (argc == 1)
{
unsigned delay;
- int retval = parse_uint(args[0], &delay);
- if (ERROR_OK != retval)
- return retval;
+ COMMAND_PARSE_NUMBER(uint, args[0], delay);
+
jtag_set_ntrst_delay(delay);
}
command_print(cmd_ctx, "jtag_ntrst_delay: %u", jtag_get_ntrst_delay());
return ERROR_OK;
}
-static int handle_jtag_nsrst_assert_width_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_nsrst_assert_width_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
if (argc == 1)
{
unsigned delay;
- int retval = parse_uint(args[0], &delay);
- if (ERROR_OK != retval)
- return retval;
+ COMMAND_PARSE_NUMBER(uint, args[0], delay);
+
jtag_set_nsrst_assert_width(delay);
}
command_print(cmd_ctx, "jtag_nsrst_assert_width: %u", jtag_get_nsrst_assert_width());
return ERROR_OK;
}
-static int handle_jtag_ntrst_assert_width_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_ntrst_assert_width_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
if (argc == 1)
{
unsigned delay;
- int retval = parse_uint(args[0], &delay);
- if (ERROR_OK != retval)
- return retval;
+ COMMAND_PARSE_NUMBER(uint, args[0], delay);
+
jtag_set_ntrst_assert_width(delay);
}
command_print(cmd_ctx, "jtag_ntrst_assert_width: %u", jtag_get_ntrst_assert_width());
return ERROR_OK;
}
-static int handle_jtag_speed_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
- int retval = ERROR_OK;
-
- command_print(cmd_ctx, "OLD SYNTAX: DEPRECATED - "
- "use jtag_khz, not jtag_speed");
-
- if (argc > 1)
- return ERROR_COMMAND_SYNTAX_ERROR;
- if (argc == 1)
- {
- LOG_DEBUG("handle jtag speed");
-
- unsigned cur_speed = 0;
- int retval = parse_uint(args[0], &cur_speed);
- if (ERROR_OK != retval)
- return retval;
- retval = jtag_config_speed(cur_speed);
-
- }
- command_print(cmd_ctx, "jtag_speed: %d", jtag_get_speed());
-
- return retval;
-}
-
-static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_khz_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
if (argc == 1)
{
unsigned khz = 0;
- int retval = parse_uint(args[0], &khz);
- if (ERROR_OK != retval)
- return retval;
+ COMMAND_PARSE_NUMBER(uint, args[0], khz);
+
retval = jtag_config_khz(khz);
if (ERROR_OK != retval)
return retval;
return retval;
}
-static int handle_jtag_rclk_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_rclk_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
if (argc == 1)
{
unsigned khz = 0;
- int retval = parse_uint(args[0], &khz);
- if (ERROR_OK != retval)
- return retval;
+ COMMAND_PARSE_NUMBER(uint, args[0], khz);
+
retval = jtag_config_rclk(khz);
if (ERROR_OK != retval)
return retval;
return retval;
}
-static int handle_jtag_reset_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_reset_command)
{
if (argc != 2)
return ERROR_COMMAND_SYNTAX_ERROR;
return jtag_execute_queue();
}
-static int handle_runtest_command(struct command_context_s *cmd_ctx,
- char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_runtest_command)
{
if (argc != 1)
return ERROR_COMMAND_SYNTAX_ERROR;
unsigned num_clocks;
- int retval = parse_uint(args[0], &num_clocks);
- if (ERROR_OK != retval)
- return retval;
+ COMMAND_PARSE_NUMBER(uint, args[0], num_clocks);
jtag_add_runtest(num_clocks, TAP_IDLE);
return jtag_execute_queue();
}
-static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_irscan_command)
{
int i;
- scan_field_t *fields;
- jtag_tap_t *tap;
+ struct scan_field *fields;
+ struct jtag_tap *tap;
tap_state_t endstate;
if ((argc < 2) || (argc % 2))
}
int num_fields = argc / 2;
- size_t fields_len = sizeof(scan_field_t) * num_fields;
+ size_t fields_len = sizeof(struct scan_field) * num_fields;
fields = malloc(fields_len);
memset(fields, 0, fields_len);
static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args)
{
int retval;
- scan_field_t *fields;
+ struct scan_field *fields;
int num_fields;
int field_count = 0;
int i, e;
- jtag_tap_t *tap;
+ struct jtag_tap *tap;
tap_state_t endstate;
/* args[1] = device
}
num_fields = (argc-2)/2;
- fields = malloc(sizeof(scan_field_t) * num_fields);
+ fields = malloc(sizeof(struct scan_field) * num_fields);
for (i = 2; i < argc; i += 2)
{
long bits;
}
-static int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_verify_ircapture_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
return ERROR_OK;
}
-static int handle_verify_jtag_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_verify_jtag_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
return ERROR_OK;
}
-static int handle_tms_sequence_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_tms_sequence_command)
{
if (argc > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
return ERROR_OK;
}
+
+int jtag_register_commands(struct command_context_s *cmd_ctx)
+{
+ register_jim(cmd_ctx, "jtag", jim_jtag_command,
+ "perform jtag tap actions");
+
+ register_command(cmd_ctx, NULL, "interface",
+ handle_interface_command, COMMAND_CONFIG,
+ "try to configure interface");
+ register_command(cmd_ctx, NULL, "interface_list",
+ &handle_interface_list_command, COMMAND_ANY,
+ "list all built-in interfaces");
+
+ register_command(cmd_ctx, NULL, "jtag_khz",
+ handle_jtag_khz_command, COMMAND_ANY,
+ "set maximum jtag speed (if supported); "
+ "parameter is maximum khz, or 0 for adaptive clocking (RTCK).");
+ register_command(cmd_ctx, NULL, "jtag_rclk",
+ handle_jtag_rclk_command, COMMAND_ANY,
+ "fallback_speed_khz - set JTAG speed to RCLK or use fallback speed");
+ register_command(cmd_ctx, NULL, "reset_config",
+ handle_reset_config_command, COMMAND_ANY,
+ "reset_config "
+ "[none|trst_only|srst_only|trst_and_srst] "
+ "[srst_pulls_trst|trst_pulls_srst|combined|separate] "
+ "[srst_gates_jtag|srst_nogate] "
+ "[trst_push_pull|trst_open_drain] "
+ "[srst_push_pull|srst_open_drain]");
+
+ register_command(cmd_ctx, NULL, "jtag_nsrst_delay",
+ handle_jtag_nsrst_delay_command, COMMAND_ANY,
+ "jtag_nsrst_delay <ms> "
+ "- delay after deasserting srst in ms");
+ register_command(cmd_ctx, NULL, "jtag_ntrst_delay",
+ handle_jtag_ntrst_delay_command, COMMAND_ANY,
+ "jtag_ntrst_delay <ms> "
+ "- delay after deasserting trst in ms");
+
+ register_command(cmd_ctx, NULL, "jtag_nsrst_assert_width",
+ handle_jtag_nsrst_assert_width_command, COMMAND_ANY,
+ "jtag_nsrst_assert_width <ms> "
+ "- delay after asserting srst in ms");
+ register_command(cmd_ctx, NULL, "jtag_ntrst_assert_width",
+ handle_jtag_ntrst_assert_width_command, COMMAND_ANY,
+ "jtag_ntrst_assert_width <ms> "
+ "- delay after asserting trst in ms");
+
+ register_command(cmd_ctx, NULL, "scan_chain",
+ handle_scan_chain_command, COMMAND_EXEC,
+ "print current scan chain configuration");
+
+ register_command(cmd_ctx, NULL, "jtag_reset",
+ handle_jtag_reset_command, COMMAND_EXEC,
+ "toggle reset lines <trst> <srst>");
+ register_command(cmd_ctx, NULL, "runtest",
+ handle_runtest_command, COMMAND_EXEC,
+ "move to Run-Test/Idle, and execute <num_cycles>");
+ register_command(cmd_ctx, NULL, "irscan",
+ handle_irscan_command, COMMAND_EXEC,
+ "execute IR scan <device> <instr> [dev2] [instr2] ...");
+
+ register_jim(cmd_ctx, "drscan", Jim_Command_drscan,
+ "execute DR scan <device> "
+ "<num_bits> <value> <num_bits1> <value2> ...");
+
+ register_jim(cmd_ctx, "flush_count", Jim_Command_flush_count,
+ "returns number of times the JTAG queue has been flushed");
+
+ register_jim(cmd_ctx, "pathmove", Jim_Command_pathmove,
+ "<state1>,<state2>,<state3>... "
+ "- move JTAG to state1 then to state2, state3, etc.");
+
+ register_command(cmd_ctx, NULL, "verify_ircapture",
+ handle_verify_ircapture_command, COMMAND_ANY,
+ "verify value captured during Capture-IR <enable | disable>");
+ register_command(cmd_ctx, NULL, "verify_jtag",
+ handle_verify_jtag_command, COMMAND_ANY,
+ "verify value capture <enable | disable>");
+
+ register_command(cmd_ctx, NULL, "tms_sequence",
+ handle_tms_sequence_command, COMMAND_ANY,
+ "choose short(default) or long tms_sequence <short | long>");
+
+ return ERROR_OK;
+}
+
+