From 6510be8b8b0ffbe6c3d577625f7485775c69a99a Mon Sep 17 00:00:00 2001 From: oharboe Date: Wed, 23 Apr 2008 05:42:42 +0000 Subject: [PATCH] added fast option. git-svn-id: svn://svn.berlios.de/openocd/trunk@604 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- doc/openocd.texi | 16 ++++++++++++++++ src/helper/command.c | 17 +++++++++++++++++ src/helper/command.h | 3 +++ src/target/arm7_9_common.c | 4 ++-- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/doc/openocd.texi b/doc/openocd.texi index 985a9d3a8a..4a8bb45ba6 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -741,6 +741,22 @@ Close the OpenOCD daemon, disconnecting all clients (GDB, Telnet). @cindex debug_level Display or adjust debug level to n<0-3> +@item @b{fast} [@var{enable/disable}] +@cindex fast +Default disabled. Set default behaviour of OpenOCD to be "fast and dangerous". For instance ARM7/9 DCC memory +downloads and fast memory access will work if the JTAG interface isn't too fast and +the core doesn't run at a too low frequency. Note that this option only changes the default +and that the indvidual options, like DCC memory downloads, can be enabled and disabled +individually. + +The target specific "dangerous" optimisation tweaking options may come and go +as more robust and user friendly ways are found to ensure maximum throughput +and robustness with a minimum of configuration. + +Typically the "fast enable" is specified first on the command line: + +openocd -c "fast enable" -c "interface dummy" -f target/str710.cfg + @item @b{log_output} <@var{file}> @cindex log_output Redirect logging to (default: stderr) diff --git a/src/helper/command.c b/src/helper/command.c index 7a7cbcbb61..31666e3a79 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -38,10 +38,13 @@ #include #include +int fast_and_dangerous = 0; + void command_print_help_line(command_context_t* context, struct command_s *command, int indent); int handle_sleep_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); int handle_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +int handle_fast_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); int build_unique_lengths(command_context_t *context, command_t *commands) { @@ -559,6 +562,9 @@ command_context_t* command_init() register_command(context, NULL, "time", handle_time_command, COMMAND_ANY, "time - execute and print time it took"); + register_command(context, NULL, "fast", handle_fast_command, + COMMAND_ANY, "fast - place at beginning of config files. Sets defaults to fast and dangerous."); + return context; } @@ -578,6 +584,17 @@ int handle_sleep_command(struct command_context_s *cmd_ctx, char *cmd, char **ar return ERROR_OK; } +int handle_fast_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +{ + if (argc!=1) + return ERROR_COMMAND_SYNTAX_ERROR; + + fast_and_dangerous = strcmp("enable", args[0])==0; + + return ERROR_OK; +} + + int handle_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { duration_t duration; diff --git a/src/helper/command.h b/src/helper/command.h index 6e6af75eb8..3586017dee 100644 --- a/src/helper/command.h +++ b/src/helper/command.h @@ -79,4 +79,7 @@ extern int command_run_file(command_context_t *context, FILE *file, enum command #define ERROR_COMMAND_CLOSE_CONNECTION (-600) #define ERROR_COMMAND_SYNTAX_ERROR (-601) + +extern int fast_and_dangerous; + #endif /* COMMAND_H */ diff --git a/src/target/arm7_9_common.c b/src/target/arm7_9_common.c index 0c63d9209a..b64a885f28 100644 --- a/src/target/arm7_9_common.c +++ b/src/target/arm7_9_common.c @@ -2624,8 +2624,8 @@ int arm7_9_init_arch_info(target_t *target, arm7_9_common_t *arm7_9) arm7_9->dcc_working_area = NULL; - arm7_9->fast_memory_access = 0; - arm7_9->dcc_downloads = 0; + arm7_9->fast_memory_access = fast_and_dangerous; + arm7_9->dcc_downloads = fast_and_dangerous; armv4_5->arch_info = arm7_9; armv4_5->read_core_reg = arm7_9_read_core_reg; -- 2.30.2