jtag/tcl help/usage fixups
authorDavid Brownell <dbrownell@users.sourceforge.net>
Sun, 10 Jan 2010 06:15:57 +0000 (22:15 -0800)
committerDavid Brownell <dbrownell@users.sourceforge.net>
Sun, 10 Jan 2010 06:15:57 +0000 (22:15 -0800)
The usual: expand several helptexts to be more correct and to use
full sentences; make the usage messages use the same EBNF as the
User's Guide; use function names for their addresses.

Also add a comment about that odd jtag_command_handlers_to_move[] thing.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
src/jtag/tcl.c

index 00b1038e250d5a54ffb550fca9a85094a73d3489..7329cee17264bd789f4c44a53cd590496a225fac 100644 (file)
@@ -269,26 +269,39 @@ static int Jim_Command_flush_count(Jim_Interp *interp, int argc, Jim_Obj *const
        return JIM_OK;
 }
 
+/* REVISIT Just what about these should "move" ... ?
+ * These registrations, into the main JTAG table?
+ *
+ * There's a minor compatibility issue, these all show up twice;
+ * that's not desirable:
+ *  - jtag drscan ... NOT DOCUMENTED!
+ *  - drscan ...
+ *
+ * The "irscan" command (for example) doesn't show twice.
+ */
 static const struct command_registration jtag_command_handlers_to_move[] = {
        {
                .name = "drscan",
                .mode = COMMAND_EXEC,
-               .jim_handler = &Jim_Command_drscan,
-               .help = "execute DR scan <device> "
-                       "<num_bits> <value> <num_bits1> <value2> ...",
+               .jim_handler = Jim_Command_drscan,
+               .help = "Execute Data Register (DR) scan for one TAP.  "
+                       "Other TAPs must be in BYPASS mode.",
+               .usage = "tap_name [num_bits value]* ['-endstate' state_name]",
        },
        {
                .name = "flush_count",
                .mode = COMMAND_EXEC,
-               .jim_handler = &Jim_Command_flush_count,
-               .help = "returns number of times the JTAG queue has been flushed",
+               .jim_handler = Jim_Command_flush_count,
+               .help = "Returns the number of times the JTAG queue "
+                       "has been flushed.",
        },
        {
                .name = "pathmove",
                .mode = COMMAND_EXEC,
-               .jim_handler = &Jim_Command_pathmove,
-               .usage = "<state1>,<state2>,<state3>... ",
-               .help = "move JTAG to state1 then to state2, state3, etc.",
+               .jim_handler = Jim_Command_pathmove,
+               .usage = "start_state state1 [state2 [state3 ...]]",
+               .help = "Move JTAG state machine from current state "
+                       "(start_state) to state1, then state2, state3, etc.",
        },
        COMMAND_REGISTRATION_DONE
 };
@@ -658,7 +671,8 @@ static void jtag_tap_handle_event(struct jtag_tap *tap, enum jtag_event e)
        }
 }
 
-static int jim_jtag_interface(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
+static int
+jim_jtag_interface(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
 {
        Jim_GetOptInfo goi;
        Jim_GetOpt_Setup(&goi, interp, argc-1, argv + 1);
@@ -845,73 +859,88 @@ static const struct command_registration jtag_subcommand_handlers[] = {
        {
                .name = "init",
                .mode = COMMAND_ANY,
-               .handler = &handle_jtag_init_command,
+               .handler = handle_jtag_init_command,
                .help = "initialize jtag scan chain",
        },
        {
                .name = "interface",
                .mode = COMMAND_ANY,
-               .jim_handler = &jim_jtag_interface,
-               .help = "Returns the selected interface",
+               .jim_handler = jim_jtag_interface,
+               .help = "Returns the name of the currently selected interface.",
        },
        {
                .name = "arp_init",
                .mode = COMMAND_ANY,
-               .jim_handler = &jim_jtag_arp_init,
+               .jim_handler = jim_jtag_arp_init,
+               .help = "Validates JTAG scan chain against the list of "
+                       "declared TAPs using just the four standard JTAG "
+                       "signals.",
        },
        {
                .name = "arp_init-reset",
                .mode = COMMAND_ANY,
-               .jim_handler = &jim_jtag_arp_init_reset,
+               .jim_handler = jim_jtag_arp_init_reset,
+               .help = "Uses TRST and SRST to try resetting everything on "
+                       "the JTAG scan chain, then performs 'jtag arp_init'."
        },
        {
                .name = "newtap",
                .mode = COMMAND_CONFIG,
-               .jim_handler = &jim_jtag_newtap,
-               .help = "Create a new TAP instance",
-               .usage = "<name> <type> -irlen <count> [-ircapture <count>] "
-                       "[-irmask <count>] [-enable|-disable]",
+               .jim_handler = jim_jtag_newtap,
+               .help = "Create a new TAP instance named basename.tap_type, "
+                       "and appends it to the scan chain.",
+               .usage = "basename tap_type '-irlen' count "
+                       "['-enable'|'-disable'] "
+                       "['-expected_id' number] "
+                       "['-ignore-version'] "
+                       "['-ircapture' number] "
+                       "['-mask' number] ",
        },
        {
                .name = "tapisenabled",
                .mode = COMMAND_EXEC,
-               .jim_handler = &jim_jtag_tap_enabler,
-               .help = "Returns a integer indicating TAP state (0/1)",
-               .usage = "<name>",
+               .jim_handler = jim_jtag_tap_enabler,
+               .help = "Returns a Tcl boolean (0/1) indicating whether "
+                       "the TAP is enabled (1) or not (0).",
+               .usage = "tap_name",
        },
        {
                .name = "tapenable",
                .mode = COMMAND_EXEC,
-               .jim_handler = &jim_jtag_tap_enabler,
-               .help = "Enable the specified TAP",
-               .usage = "<name>",
+               .jim_handler = jim_jtag_tap_enabler,
+               .help = "Try to enable the specified TAP using the "
+                       "'tap-enable' TAP event.",
+               .usage = "tap_name",
        },
        {
                .name = "tapdisable",
                .mode = COMMAND_EXEC,
-               .jim_handler = &jim_jtag_tap_enabler,
-               .help = "Enable the specified TAP",
-               .usage = "<name>",
+               .jim_handler = jim_jtag_tap_enabler,
+               .help = "Try to disable the specified TAP using the "
+                       "'tap-disable' TAP event.",
+               .usage = "tap_name",
        },
        {
                .name = "configure",
                .mode = COMMAND_EXEC,
-               .jim_handler = &jim_jtag_configure,
-               .help = "Enable the specified TAP",
-               .usage = "<name> [<key> <value> ...]",
+               .jim_handler = jim_jtag_configure,
+               .help = "Provide a Tcl handler for the specified "
+                       "TAP event.",
+               .usage = "tap_name '-event' event_name handler",
        },
        {
                .name = "cget",
                .mode = COMMAND_EXEC,
-               .jim_handler = &jim_jtag_configure,
-               .help = "Enable the specified TAP",
-               .usage = "<name> [<key> <value> ...]",
+               .jim_handler = jim_jtag_configure,
+               .help = "Return any Tcl handler for the specified "
+                       "TAP event.",
+               .usage = "tap_name '-event' event_name",
        },
        {
                .name = "names",
                .mode = COMMAND_ANY,
-               .jim_handler = &jim_jtag_names,
-               .help = "Returns list of all JTAG tap names",
+               .jim_handler = jim_jtag_names,
+               .help = "Returns list of all JTAG tap names.",
        },
        {
                .chain = jtag_command_handlers_to_move,
@@ -1574,34 +1603,38 @@ COMMAND_HANDLER(handle_tms_sequence_command)
 static const struct command_registration jtag_command_handlers[] = {
        {
                .name = "interface",
-               .handler = &handle_interface_command,
+               .handler = handle_interface_command,
                .mode = COMMAND_CONFIG,
-               .help = "select a JTAG interface",
-               .usage = "<driver_name>",
+               .help = "Select a JTAG interface",
+               .usage = "driver_name",
        },
        {
                .name = "interface_list",
-               .handler = &handle_interface_list_command,
+               .handler = handle_interface_list_command,
                .mode = COMMAND_ANY,
-               .help = "list all built-in interfaces",
+               .help = "List all built-in interfaces",
        },
        {
                .name = "jtag_khz",
-               .handler = &handle_jtag_khz_command,
+               .handler = handle_jtag_khz_command,
                .mode = COMMAND_ANY,
-               .help = "set maximum jtag speed (if supported)",
-               .usage = "<khz:0=rtck>",
+               .help = "With an argument, change to the specified maximum "
+                       "jtag speed.  Pass 0 to require adaptive clocking. "
+                       "With or without argument, display current setting.",
+               .usage = "[khz]",
        },
        {
                .name = "jtag_rclk",
-               .handler = &handle_jtag_rclk_command,
+               .handler = handle_jtag_rclk_command,
                .mode = COMMAND_ANY,
-               .help = "set JTAG speed to RCLK or use fallback speed",
-               .usage = "<fallback_speed_khz>",
+               .help = "With an argument, change to to use adaptive clocking "
+                       "if possible; else to use the fallback speed.  "
+                       "With or without argument, display current setting.",
+               .usage = "[fallback_speed_khz]",
        },
        {
                .name = "reset_config",
-               .handler = &handle_reset_config_command,
+               .handler = handle_reset_config_command,
                .mode = COMMAND_ANY,
                .help = "configure JTAG reset behavior",
                .usage = "[none|trst_only|srst_only|trst_and_srst] "
@@ -1612,79 +1645,87 @@ static const struct command_registration jtag_command_handlers[] = {
        },
        {
                .name = "jtag_nsrst_delay",
-               .handler = &handle_jtag_nsrst_delay_command,
+               .handler = handle_jtag_nsrst_delay_command,
                .mode = COMMAND_ANY,
                .help = "delay after deasserting srst in ms",
-               .usage = "<ms>",
+               .usage = "[milliseconds]",
        },
        {
                .name = "jtag_ntrst_delay",
-               .handler = &handle_jtag_ntrst_delay_command,
+               .handler = handle_jtag_ntrst_delay_command,
                .mode = COMMAND_ANY,
                .help = "delay after deasserting trst in ms",
-               .usage = "<ms>"
+               .usage = "[milliseconds]",
        },
        {
                .name = "jtag_nsrst_assert_width",
-               .handler = &handle_jtag_nsrst_assert_width_command,
+               .handler = handle_jtag_nsrst_assert_width_command,
                .mode = COMMAND_ANY,
                .help = "delay after asserting srst in ms",
-               .usage = "<ms>"
+               .usage = "[milliseconds]",
        },
        {
                .name = "jtag_ntrst_assert_width",
-               .handler = &handle_jtag_ntrst_assert_width_command,
+               .handler = handle_jtag_ntrst_assert_width_command,
                .mode = COMMAND_ANY,
                .help = "delay after asserting trst in ms",
-               .usage = "<ms>"
+               .usage = "[milliseconds]",
        },
        {
                .name = "scan_chain",
-               .handler = &handle_scan_chain_command,
+               .handler = handle_scan_chain_command,
                .mode = COMMAND_EXEC,
                .help = "print current scan chain configuration",
        },
        {
                .name = "jtag_reset",
-               .handler = &handle_jtag_reset_command,
+               .handler = handle_jtag_reset_command,
                .mode = COMMAND_EXEC,
-               .help = "toggle reset lines",
-               .usage = "<trst> <srst>",
+               .help = "Set reset line values.  Value '1' is active, "
+                       "value '0' is inactive.",
+               .usage = "trst_active srst_active",
        },
        {
                .name = "runtest",
-               .handler = &handle_runtest_command,
+               .handler = handle_runtest_command,
                .mode = COMMAND_EXEC,
-               .help = "move to Run-Test/Idle, and execute <num_cycles>",
-               .usage = "<num_cycles>"
+               .help = "Move to Run-Test/Idle, and issue TCK for num_cycles.",
+               .usage = "num_cycles"
        },
        {
                .name = "irscan",
-               .handler = &handle_irscan_command,
+               .handler = handle_irscan_command,
                .mode = COMMAND_EXEC,
-               .help = "execute IR scan",
-               .usage = "<device> <instr> [dev2] [instr2] ...",
+               .help = "Execute Instruction Register (DR) scan.  The "
+                       "specified opcodes are put into each TAP's IR, "
+                       "and other TAPs are put in BYPASS.",
+               .usage = "[tap_name instruction]* ['-endstate' state_name]",
        },
        {
                .name = "verify_ircapture",
-               .handler = &handle_verify_ircapture_command,
+               .handler = handle_verify_ircapture_command,
                .mode = COMMAND_ANY,
-               .help = "verify value captured during Capture-IR",
-               .usage = "<enable | disable>",
+               .help = "Display or assign flag controlling whether to "
+                       "verify values captured during Capture-IR.",
+               .usage = "['enable'|'disable']",
        },
        {
                .name = "verify_jtag",
-               .handler = &handle_verify_jtag_command,
+               .handler = handle_verify_jtag_command,
                .mode = COMMAND_ANY,
-               .help = "verify value capture",
-               .usage = "<enable | disable>",
+               .help = "Display or assign flag controlling whether to "
+                       "verify values captured during IR and DR scans.",
+               .usage = "['enable'|'disable']",
        },
        {
                .name = "tms_sequence",
-               .handler = &handle_tms_sequence_command,
+               .handler = handle_tms_sequence_command,
                .mode = COMMAND_ANY,
-               .help = "choose short(default) or long tms_sequence",
-               .usage = "<short | long>",
+               .help = "Display or change what style TMS sequences to use "
+                       "for JTAG state transitions:  short (default) or "
+                       "long.  Only for working around JTAG bugs.",
+                       /* Specifically for working around DRIVER bugs... */
+               .usage = "['short'|'long']",
        },
        {
                .name = "jtag",