Commit d70d9634 authored by David Brownell's avatar David Brownell
Browse files

finish removing deprecated/obsolete commands

It's been about a year since these were deprecated and, in most
cases, removed.  There's no point in carrying that documentation,
or backwards compatibility for "jtag_device" and "jtag_speed",
around forever.  (Or a few remnants of obsolete code...)

Removed a few obsolete uses of "jtag_speed":

 - The Calao stuff hasn't worked since July 2008.  (Those Atmel
   targets need to work with a 32KHz core clock after reset until
   board-specific init-reset code sets up the PLL and enables a
   faster JTAg clock.)
 - Parport speed controls don't actually work (tops out at about
   1 MHz on typical HW).
 - In general, speed controls need to live in board.cfg files (or
   sometimes target.cfg files), not interface.cfg ...
Signed-off-by: default avatarDavid Brownell <>
parent 9253ce9b
......@@ -81,7 +81,6 @@ Free Documentation License''.
* GDB and OpenOCD:: Using GDB and OpenOCD
* Tcl Scripting API:: Tcl Scripting API
* Upgrading:: Deprecated/Removed Commands
* FAQ:: Frequently Asked Questions
* Tcl Crash Course:: Tcl Crash Course
* License:: GNU Free Documentation License
......@@ -6507,91 +6506,6 @@ We should add support for a variable like Tcl variable
is jim, not real tcl).
@end quotation
@node Upgrading
@chapter Deprecated/Removed Commands
@cindex Deprecated/Removed Commands
Certain OpenOCD commands have been deprecated or
removed during the various revisions.
Upgrade your scripts as soon as possible.
These descriptions for old commands may be removed
a year after the command itself was removed.
This means that in January 2010 this chapter may
become much shorter.
@itemize @bullet
@item @b{arm7_9 fast_writes}
@cindex arm7_9 fast_writes
@*Use @command{arm7_9 fast_memory_access} instead.
@xref{arm7_9 fast_memory_access}.
@item @b{endstate}
@cindex endstate
@*An buggy old command that would not really work since background polling would wipe out the global endstate
@item @b{arm7_9 force_hw_bkpts}
@*Use @command{gdb_breakpoint_override} instead. Note that GDB will use hardware breakpoints
for flash if the GDB memory map has been set up(default when flash is declared in
target configuration). @xref{gdb_breakpoint_override}.
@item @b{arm7_9 sw_bkpts}
@*On by default. @xref{gdb_breakpoint_override}.
@item @b{daemon_startup}
@*this config option has been removed, simply adding @option{init} and @option{reset halt} to
the end of your config script will give the same behaviour as using @option{daemon_startup reset}
and @option{target cortex_m3 little reset_halt 0}.
@item @b{dump_binary}
@*use @option{dump_image} command with same args. @xref{dump_image}.
@item @b{flash erase}
@*use @option{flash erase_sector} command with same args. @xref{flash erase_sector}.
@item @b{flash write}
@*use @option{flash write_bank} command with same args. @xref{flash write_bank}.
@item @b{flash write_binary}
@*use @option{flash write_bank} command with same args. @xref{flash write_bank}.
@item @b{flash auto_erase}
@*use @option{flash write_image} command passing @option{erase} as the first parameter. @xref{flash write_image}.
@item @b{jtag_device}
@*use the @command{jtag newtap} command, converting from positional syntax
to named prefixes, and naming the TAP.
@xref{jtag newtap}.
Note that if you try to use the old command, a message will tell you the
right new command to use; and that the fourth parameter in the old syntax
was never actually used.
OLD: jtag_device 8 0x01 0xe3 0xfe
-irlen 8 -ircapture 0x01 -irmask 0xe3
@end example
@item @b{jtag_speed} value
@*@xref{JTAG Speed}.
Usually, a value of zero means maximum
speed. The actual effect of this option depends on the JTAG interface used.
@itemize @minus
@item wiggler: maximum speed / @var{number}
@item ft2232: 6MHz / (@var{number}+1)
@item amt jtagaccel: 8 / 2**@var{number}
@item jlink: maximum speed in kHz (0-12000), 0 will use RTCK
@item rlink: 24MHz / @var{number}, but only for certain values of @var{number}
@comment end speed list.
@end itemize
@item @b{load_binary}
@*use @option{load_image} command with same args. @xref{load_image}.
@item @b{run_and_halt_time}
@*This command has been removed for simpler reset behaviour, it can be simulated with the
following commands:
reset run
sleep 100
@end smallexample
@item @b{target} <@var{type}> <@var{endian}> <@var{jtag-position}>
@*use the create subcommand of @option{target}.
@item @b{target_script} <@var{target#}> <@var{eventname}> <@var{scriptname}>
@*use <@var{target_name}> configure -event <@var{eventname}> "script <@var{scriptname}>"
@item @b{working_area}
@*use the @option{configure} subcommand of @option{target} to set the work-area-virt, work-area-phy, work-area-size, and work-area-backup properties of the target.
@end itemize
@node FAQ
@chapter FAQ
@cindex faq
......@@ -1569,13 +1569,6 @@ static int jtag_set_speed(int speed)
return jtag ? jtag->speed(speed) : ERROR_OK;
int jtag_config_speed(int speed)
LOG_DEBUG("handle jtag speed");
clock_mode = CLOCK_MODE_SPEED;
return jtag_set_speed(speed);
int jtag_config_khz(unsigned khz)
LOG_DEBUG("handle jtag khz");
......@@ -254,31 +254,25 @@ int jtag_call_event_callbacks(enum jtag_event event);
/// @returns The current JTAG speed setting.
int jtag_get_speed(void);
* Given a @a speed setting, use the interface @c speed_div callback to
* adjust the setting.
* @param speed The speed setting to convert back to readable KHz.
* @returns ERROR_OK if the interface has not been initialized or on success;
* otherwise, the error code produced by the @c speed_div callback.
* otherwise, the error code produced by the @c speed_div callback.
int jtag_get_speed_readable(int *speed);
* Set the JTAG speed. This routine will call the underlying
* interface @c speed callback, if the interface has been initialized.
* @param speed The new speed setting.
* @returns ERROR_OK during configuration or on success, or an error
* code returned from the interface @c speed callback.
int jtag_config_speed(int speed);
/// Attempt to configure the interface for the specified KHz.
int jtag_config_khz(unsigned khz);
* Attempt to enable RTCK/RCLK. If that fails, fallback to the
* specified frequency.
int jtag_config_rclk(unsigned fallback_speed_khz);
/// Retreives the clock speed of the JTAG interface in KHz.
unsigned jtag_get_speed_khz(void);
......@@ -55,10 +55,8 @@ extern jtag_interface_t *jtag_interface;
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);
......@@ -615,15 +613,11 @@ int jtag_register_commands(struct command_context_s *cmd_ctx)
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,
"reset_config "
......@@ -748,67 +742,6 @@ static int handle_interface_list_command(struct command_context_s *cmd_ctx,
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 ];
* 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",
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;
......@@ -1106,29 +1039,6 @@ static int handle_jtag_ntrst_assert_width_command(struct command_context_s *cmd_
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)
if (argc == 1)
LOG_DEBUG("handle jtag speed");
unsigned cur_speed = 0;
COMMAND_PARSE_NUMBER(uint, args[0], cur_speed);
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)
if (argc > 1)
......@@ -38,7 +38,6 @@
int arm7_9_debug_entry(target_t *target);
int arm7_9_enable_sw_bkpts(struct target_s *target);
/* command handler forward declarations */
int handle_arm7_9_write_xpsr_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
......@@ -47,7 +47,6 @@ typedef struct arm7_9_common_s
uint32_t arm_bkpt; /**< ARM breakpoint instruction */
uint16_t thumb_bkpt; /**< Thumb breakpoint instruction */
bool force_hw_bkpts;
int sw_breakpoints_added; /**< Specifies which watchpoint software breakpoints are setup on */
int sw_breakpoint_count; /**< keep track of number of software breakpoints we have set */
......@@ -1282,10 +1282,10 @@ void target_free_all_working_areas(struct target_s *target)
int target_register_commands(struct command_context_s *cmd_ctx)
register_command(cmd_ctx, NULL, "targets", handle_targets_command, COMMAND_EXEC, "change the current command line target (one parameter) or lists targets (with no parameter)");
register_command(cmd_ctx, NULL, "targets",
handle_targets_command, COMMAND_EXEC,
"change current command line target (one parameter) "
"or list targets (no parameters)");
register_jim(cmd_ctx, "target", jim_target, "configure target");
......@@ -99,7 +99,7 @@ proc topas910_init { } {
mww 0xf4300004 0x00000000
sleep 10
# jtag_speed 10000
# jtag_khz NNNN
# remap off in case of IROM boot
mww 0xf0000004 0x00000001
......@@ -105,7 +105,7 @@ proc topasa900_init { } {
mww 0xf4300004 0x00000000
sleep 10
# jtag_speed 10000
# jtag_khz NNNN
# remap off in case of IROM boot
mww 0xf0000004 0x00000001
......@@ -5,12 +5,7 @@
# See calao-usb-a9260-c01.cfg and calao-usb-a9260-c02.cfg.
# Note: You must have an OpenOCD version where jtag_speed sets two values.
# trunk r606 contains the fix for this particular issue which can
# be seen if jtag_speed does not set two separate values.
jtag_speed 1200 0
jtag_nsrst_delay 200
jtag_ntrst_delay 200
......@@ -9,6 +9,3 @@ ft2232_vid_pid 0x0403 0x6010
ft2232_device_desc "Dual RS232"
ft2232_layout "oocdlink"
ft2232_latency 2
# 6/(1+n) Mhz TCLK
jtag_speed 1
......@@ -5,5 +5,4 @@
interface parport
parport_port 0xc8b8
parport_cable wiggler
jtag_speed 0
......@@ -7,5 +7,4 @@
interface parport
parport_port /dev/parport0
parport_cable dlc5
jtag_speed 0
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment