From fbad9477318faa8871c87cf6159c0c1fd1f9845a Mon Sep 17 00:00:00 2001 From: oharboe Date: Sat, 19 Apr 2008 07:15:27 +0000 Subject: [PATCH] retired auto_erase, added optional erase arg to flash write_image. git-svn-id: svn://svn.berlios.de/openocd/trunk@593 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/flash/flash.c | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/src/flash/flash.c b/src/flash/flash.c index 0be0afc57..6c3242d28 100644 --- a/src/flash/flash.c +++ b/src/flash/flash.c @@ -55,7 +55,6 @@ int handle_flash_write_bank_command(struct command_context_s *cmd_ctx, char *cmd int handle_flash_write_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); int handle_flash_fill_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); int handle_flash_protect_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_flash_auto_erase_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); flash_bank_t *get_flash_bank_by_addr(target_t *target, u32 addr); /* flash drivers @@ -89,9 +88,6 @@ flash_driver_t *flash_drivers[] = flash_bank_t *flash_banks; static command_t *flash_cmd; -/* flash auto-erase is disabled by default*/ -static int auto_erase = 0; - /* wafer thin wrapper for invoking the flash driver */ static int flash_driver_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count) { @@ -138,8 +134,6 @@ int flash_register_commands(struct command_context_s *cmd_ctx) flash_cmd = register_command(cmd_ctx, NULL, "flash", NULL, COMMAND_ANY, NULL); register_command(cmd_ctx, flash_cmd, "bank", handle_flash_bank_command, COMMAND_CONFIG, "flash_bank [driver_options ...]"); - register_command(cmd_ctx, flash_cmd, "auto_erase", handle_flash_auto_erase_command, COMMAND_ANY, - "auto erase flash sectors "); return ERROR_OK; } @@ -172,7 +166,7 @@ int flash_init_drivers(struct command_context_s *cmd_ctx) register_command(cmd_ctx, flash_cmd, "write_bank", handle_flash_write_bank_command, COMMAND_EXEC, "write binary data to "); register_command(cmd_ctx, flash_cmd, "write_image", handle_flash_write_image_command, COMMAND_EXEC, - "write_image [offset] [type]"); + "write_image [erase] [offset] [type]"); register_command(cmd_ctx, flash_cmd, "protect", handle_flash_protect_command, COMMAND_EXEC, "set protection of sectors at "); } @@ -621,7 +615,24 @@ int handle_flash_write_image_command(struct command_context_s *cmd_ctx, char *cm { return ERROR_COMMAND_SYNTAX_ERROR; } + + /* flash auto-erase is disabled by default*/ + int auto_erase = 0; + + if (stricmp(args[0], "erase")==0) + { + auto_erase = 1; + args++; + argc--; + command_print(cmd_ctx, "auto erase enabled"); + } + + if (argc < 1) + { + return ERROR_COMMAND_SYNTAX_ERROR; + } + if (!target) { LOG_ERROR("no target selected"); @@ -1052,24 +1063,6 @@ int flash_write(target_t *target, image_t *image, u32 *written, int erase) return retval; } -int handle_flash_auto_erase_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) -{ - if (argc != 1) - { - return ERROR_COMMAND_SYNTAX_ERROR; - } - - if (strcmp(args[0], "on") == 0) - auto_erase = 1; - else if (strcmp(args[0], "off") == 0) - auto_erase = 0; - else - return ERROR_COMMAND_SYNTAX_ERROR; - - return ERROR_OK; -} - - int default_flash_blank_check(struct flash_bank_s *bank) { target_t *target = bank->target;