jtag: use register_commands()
Use register commands with command registration array.__archive__
parent
9a31d66b3f
commit
355a673032
186
src/jtag/tcl.c
186
src/jtag/tcl.c
|
@ -1413,66 +1413,129 @@ COMMAND_HANDLER(handle_tms_sequence_command)
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const struct command_registration jtag_command_handlers[] = {
|
||||||
|
{
|
||||||
|
.name = "interface",
|
||||||
|
.handler = &handle_interface_command,
|
||||||
|
.mode = COMMAND_CONFIG,
|
||||||
|
.help = "select a JTAG interface",
|
||||||
|
.usage = "<driver_name>",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "interface_list",
|
||||||
|
.handler = &handle_interface_list_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "list all built-in interfaces",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "jtag_khz",
|
||||||
|
.handler = &handle_jtag_khz_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "set maximum jtag speed (if supported)",
|
||||||
|
.usage = "<khz:0=rtck>",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "jtag_rclk",
|
||||||
|
.handler = &handle_jtag_rclk_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "set JTAG speed to RCLK or use fallback speed",
|
||||||
|
.usage = "<fallback_speed_khz>",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "reset_config",
|
||||||
|
.handler = &handle_reset_config_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "configure JTAG reset behavior",
|
||||||
|
.usage = "[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]",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "jtag_nsrst_delay",
|
||||||
|
.handler = &handle_jtag_nsrst_delay_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "delay after deasserting srst in ms",
|
||||||
|
.usage = "<ms>",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "jtag_ntrst_delay",
|
||||||
|
.handler = &handle_jtag_ntrst_delay_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "delay after deasserting trst in ms",
|
||||||
|
.usage = "<ms>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "jtag_nsrst_assert_width",
|
||||||
|
.handler = &handle_jtag_nsrst_assert_width_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "delay after asserting srst in ms",
|
||||||
|
.usage = "<ms>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "jtag_ntrst_assert_width",
|
||||||
|
.handler = &handle_jtag_ntrst_assert_width_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "delay after asserting trst in ms",
|
||||||
|
.usage = "<ms>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "scan_chain",
|
||||||
|
.handler = &handle_scan_chain_command,
|
||||||
|
.mode = COMMAND_EXEC,
|
||||||
|
.help = "print current scan chain configuration",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "jtag_reset",
|
||||||
|
.handler = &handle_jtag_reset_command,
|
||||||
|
.mode = COMMAND_EXEC,
|
||||||
|
.help = "toggle reset lines",
|
||||||
|
.usage = "<trst> <srst>",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "runtest",
|
||||||
|
.handler = &handle_runtest_command,
|
||||||
|
.mode = COMMAND_EXEC,
|
||||||
|
.help = "move to Run-Test/Idle, and execute <num_cycles>",
|
||||||
|
.usage = "<num_cycles>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "irscan",
|
||||||
|
.handler = &handle_irscan_command,
|
||||||
|
.mode = COMMAND_EXEC,
|
||||||
|
.help = "execute IR scan",
|
||||||
|
.usage = "<device> <instr> [dev2] [instr2] ...",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "verify_ircapture",
|
||||||
|
.handler = &handle_verify_ircapture_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "verify value captured during Capture-IR",
|
||||||
|
.usage = "<enable | disable>",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "verify_jtag",
|
||||||
|
.handler = &handle_verify_jtag_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "verify value capture",
|
||||||
|
.usage = "<enable | disable>",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "tms_sequence",
|
||||||
|
.handler = &handle_tms_sequence_command,
|
||||||
|
.mode = COMMAND_ANY,
|
||||||
|
.help = "choose short(default) or long tms_sequence",
|
||||||
|
.usage = "<short | long>",
|
||||||
|
},
|
||||||
|
COMMAND_REGISTRATION_DONE
|
||||||
|
};
|
||||||
|
|
||||||
int jtag_register_commands(struct command_context *cmd_ctx)
|
int jtag_register_commands(struct command_context *cmd_ctx)
|
||||||
{
|
{
|
||||||
register_jim(cmd_ctx, "jtag", jim_jtag_command,
|
register_jim(cmd_ctx, "jtag", jim_jtag_command,
|
||||||
"perform jtag tap actions");
|
"perform jtag tap actions");
|
||||||
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "interface",
|
|
||||||
handle_interface_command, COMMAND_CONFIG,
|
|
||||||
"try to configure interface");
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "interface_list",
|
|
||||||
&handle_interface_list_command, COMMAND_ANY,
|
|
||||||
"list all built-in interfaces");
|
|
||||||
|
|
||||||
COMMAND_REGISTER(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).");
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "jtag_rclk",
|
|
||||||
handle_jtag_rclk_command, COMMAND_ANY,
|
|
||||||
"fallback_speed_khz - set JTAG speed to RCLK or use fallback speed");
|
|
||||||
COMMAND_REGISTER(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]");
|
|
||||||
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "jtag_nsrst_delay",
|
|
||||||
handle_jtag_nsrst_delay_command, COMMAND_ANY,
|
|
||||||
"jtag_nsrst_delay <ms> "
|
|
||||||
"- delay after deasserting srst in ms");
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "jtag_ntrst_delay",
|
|
||||||
handle_jtag_ntrst_delay_command, COMMAND_ANY,
|
|
||||||
"jtag_ntrst_delay <ms> "
|
|
||||||
"- delay after deasserting trst in ms");
|
|
||||||
|
|
||||||
COMMAND_REGISTER(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");
|
|
||||||
COMMAND_REGISTER(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");
|
|
||||||
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "scan_chain",
|
|
||||||
handle_scan_chain_command, COMMAND_EXEC,
|
|
||||||
"print current scan chain configuration");
|
|
||||||
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "jtag_reset",
|
|
||||||
handle_jtag_reset_command, COMMAND_EXEC,
|
|
||||||
"toggle reset lines <trst> <srst>");
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "runtest",
|
|
||||||
handle_runtest_command, COMMAND_EXEC,
|
|
||||||
"move to Run-Test/Idle, and execute <num_cycles>");
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "irscan",
|
|
||||||
handle_irscan_command, COMMAND_EXEC,
|
|
||||||
"execute IR scan <device> <instr> [dev2] [instr2] ...");
|
|
||||||
|
|
||||||
register_jim(cmd_ctx, "drscan", Jim_Command_drscan,
|
register_jim(cmd_ctx, "drscan", Jim_Command_drscan,
|
||||||
"execute DR scan <device> "
|
"execute DR scan <device> "
|
||||||
"<num_bits> <value> <num_bits1> <value2> ...");
|
"<num_bits> <value> <num_bits1> <value2> ...");
|
||||||
|
@ -1484,18 +1547,7 @@ int jtag_register_commands(struct command_context *cmd_ctx)
|
||||||
"<state1>,<state2>,<state3>... "
|
"<state1>,<state2>,<state3>... "
|
||||||
"- move JTAG to state1 then to state2, state3, etc.");
|
"- move JTAG to state1 then to state2, state3, etc.");
|
||||||
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "verify_ircapture",
|
return register_commands(cmd_ctx, NULL, jtag_command_handlers);
|
||||||
handle_verify_ircapture_command, COMMAND_ANY,
|
|
||||||
"verify value captured during Capture-IR <enable | disable>");
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "verify_jtag",
|
|
||||||
handle_verify_jtag_command, COMMAND_ANY,
|
|
||||||
"verify value capture <enable | disable>");
|
|
||||||
|
|
||||||
COMMAND_REGISTER(cmd_ctx, NULL, "tms_sequence",
|
|
||||||
handle_tms_sequence_command, COMMAND_ANY,
|
|
||||||
"choose short(default) or long tms_sequence <short | long>");
|
|
||||||
|
|
||||||
return ERROR_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue