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: David Brownell <dbrownell@users.sourceforge.net>tags/v0.4.0-rc1
@@ -81,7 +81,6 @@ Free Documentation License''. | |||
* TFTP:: TFTP | |||
* 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. | |||
@example | |||
OLD: jtag_device 8 0x01 0xe3 0xfe | |||
NEW: jtag newtap CHIPNAME TAPNAME \ | |||
-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: | |||
@smallexample | |||
reset run | |||
sleep 100 | |||
halt | |||
@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, | |||
COMMAND_ANY, | |||
"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 ]; | |||
/* | |||
* 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; | |||
@@ -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) | |||
return ERROR_COMMAND_SYNTAX_ERROR; | |||
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 | |||