From bc792857a5cbfb603a5c3be5ac62d9d54981959c Mon Sep 17 00:00:00 2001 From: David Brownell Date: Wed, 14 Oct 2009 15:18:00 -0700 Subject: [PATCH] doc updates to match "help" better This makes the documentation a closer match to "help" output: - "pathmove" somehow was not documented in the User's Guide - "jtag_nsrst_assert_width" and "jtag_ntrst_assert_width" are new; both needed descriptions. - Removed two undocumented and fairly useless script mechanisms: * production/production_info/production_test ... using it, requires replacing everything; so having it adds no value. * cpu ... way out of date; hopeless to keep that current Note that anyone using that "production" stuff already defines their own procedures, and can keep using them with no change. Signed-off-by: David Brownell --- doc/openocd.texi | 42 +++++++++++++++++++++++++------ src/helper/startup.tcl | 57 ++++-------------------------------------- 2 files changed, 40 insertions(+), 59 deletions(-) diff --git a/doc/openocd.texi b/doc/openocd.texi index fd4f9f7f..6d33d56a 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -2221,6 +2221,12 @@ needing to cope with both architecture and board specific constraints. @section Commands for Handling Resets +@deffn {Command} jtag_nsrst_assert_width milliseconds +Minimum amount of time (in milliseconds) OpenOCD should wait +after asserting nSRST (active-low system reset) before +allowing it to be deasserted. +@end deffn + @deffn {Command} jtag_nsrst_delay milliseconds How long (in milliseconds) OpenOCD should wait after deasserting nSRST (active-low system reset) before starting new JTAG operations. @@ -2228,6 +2234,12 @@ When a board has a reset button connected to SRST line it will probably have hardware debouncing, implying you should use this. @end deffn +@deffn {Command} jtag_ntrst_assert_width milliseconds +Minimum amount of time (in milliseconds) OpenOCD should wait +after asserting nTRST (active-low JTAG TAP reset) before +allowing it to be deasserted. +@end deffn + @deffn {Command} jtag_ntrst_delay milliseconds How long (in milliseconds) OpenOCD should wait after deasserting nTRST (active-low JTAG TAP reset) before starting new JTAG operations. @@ -6075,6 +6087,15 @@ TAP @code{post-reset} events are delivered to all TAPs with handlers for that event. @end deffn +@deffn Command {pathmove} start_state [next_state ...] +Start by moving to @var{start_state}, which +must be one of the @emph{stable} states. +Then, in a series of single state transitions +(conforming to the JTAG state machine) shift to +each @var{next_state} in sequence, one per TCK cycle. +The final state must also be stable. +@end deffn + @deffn Command {runtest} @var{num_cycles} Move to the @sc{run/idle} state, and execute at least @var{num_cycles} of the JTAG clock (TCK). @@ -6102,23 +6123,30 @@ Default is enabled. @cindex TAP state names The @var{tap_state} names used by OpenOCD in the @command{drscan}, -and @command{irscan} commands are: +@command{irscan}, and @command{pathmove} commands are the same +as those used in SVF boundary scan documents, except that some +versions of SVF use @sc{idle} instead of @sc{run/idle}. @itemize @bullet -@item @b{RESET} ... acts as if TRST were pulsed -@item @b{RUN/IDLE} ... don't assume this always means IDLE +@item @b{RESET} ... @emph{stable} (with TMS high); +acts as if TRST were pulsed +@item @b{RUN/IDLE} ... @emph{stable}; don't assume this always means IDLE @item @b{DRSELECT} @item @b{DRCAPTURE} -@item @b{DRSHIFT} ... TDI/TDO shifting through the data register +@item @b{DRSHIFT} ... @emph{stable}; TDI/TDO shifting +through the data register @item @b{DREXIT1} -@item @b{DRPAUSE} ... data register ready for update or more shifting +@item @b{DRPAUSE} ... @emph{stable}; data register ready +for update or more shifting @item @b{DREXIT2} @item @b{DRUPDATE} @item @b{IRSELECT} @item @b{IRCAPTURE} -@item @b{IRSHIFT} ... TDI/TDO shifting through the instruction register +@item @b{IRSHIFT} ... @emph{stable}; TDI/TDO shifting +through the instruction register @item @b{IREXIT1} -@item @b{IRPAUSE} ... instruction register ready for update or more shifting +@item @b{IRPAUSE} ... @emph{stable}; instruction register ready +for update or more shifting @item @b{IREXIT2} @item @b{IRUPDATE} @end itemize diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl index b12d02bb..2c909729 100644 --- a/src/helper/startup.tcl +++ b/src/helper/startup.tcl @@ -291,59 +291,10 @@ proc ocd_process_reset_inner { MODE } { } } -# stubs for targets scripts that do not have production procedure -proc production_info {} { - return "Imagine an explanation here..." -} -add_help_text production_info "Displays information on production procedure for target script. Implement this procedure in target script." - -proc production {firmwarefile serialnumber} { - puts "Imagine production procedure running successfully. Programmed $firmwarefile with serial number $serialnumber" -} - -add_help_text production " - Runs production procedure. Throws exception if procedure failed. Prints progress messages. Implement this procedure in the target script." - -proc production_test {} { - puts "Imagine nifty test procedure having run to completion here." -} -add_help_text production_test "Runs test procedure. Throws exception if procedure failed. Prints progress messages. Implement in target script." - -add_help_text cpu " - prints out target options and a comment on CPU which matches name" - -# A list of names of CPU and options required -set ocd_cpu_list { - { - name IXP42x - options {xscale -variant IXP42x} - comment {IXP42x cpu} - } - { - name arm7 - options {arm7tdmi -variant arm7tdmi} - comment {vanilla ARM7} - } -} - -# Invoked from Tcl code -proc ocd_cpu {args} { - set name $args - set result "" - global ocd_cpu_list - foreach a [lsort $ocd_cpu_list] { - if {[string length $args]==0||[string first [string toupper $name] [string toupper "$a(name)$a(options)$a(comment)"]]!=-1} { - lappend result $a - } - } - return $result -} +######### -proc cpu {args} { - # 0123456789012345678901234567890123456789012345678901234567890123456789 - puts "CPU Options Comment" - foreach a [lsort [ocd_cpu $args]] { - puts [format "%-20s%-40s%s" $a(name) $a(options) $a(comment)] - } -} +# REVISIT power_restore, power_dropout, srst_deasserted, srst_asserted +# are currently neither documented nor supported except on ZY1000. proc power_restore {} { puts "Sensed power restore." @@ -366,6 +317,8 @@ proc srst_asserted {} { puts "Sensed nSRST asserted." } +######### + # catch any exceptions, capture output and return output proc capture_catch {a} { catch { -- 2.39.5