X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fflash%2Fnor%2Fstm32x.c;h=bfdd3cd0110a46d859dcdff708924c932afeae1f;hb=747a607aef6572dad8740b76596f2b72036b8685;hp=98684285fa9c2fd123ce7ec42280324d305e8e30;hpb=d1bc4375e99ce52b72988494f35beca364234bae;p=openocd.git diff --git a/src/flash/nor/stm32x.c b/src/flash/nor/stm32x.c index 98684285fa..bfdd3cd011 100644 --- a/src/flash/nor/stm32x.c +++ b/src/flash/nor/stm32x.c @@ -24,10 +24,11 @@ #include "config.h" #endif +#include "imp.h" #include "stm32x.h" -#include "armv7m.h" #include -#include "algorithm.h" +#include +#include static int stm32x_mass_erase(struct flash_bank *bank); @@ -977,7 +978,9 @@ COMMAND_HANDLER(stm32x_handle_unlock_command) return ERROR_OK; } - command_print(CMD_CTX, "stm32x unlocked"); + command_print(CMD_CTX, "stm32x unlocked.\n" + "INFO: a reset or power cycle is required " + "for the new settings to take effect."); return ERROR_OK; } @@ -1065,29 +1068,36 @@ COMMAND_HANDLER(stm32x_handle_options_write_command) return ERROR_TARGET_NOT_HALTED; } + /* REVISIT: ignores some options which we will display... + * and doesn't insist on the specified syntax. + */ + + /* OPT_RDWDGSW */ if (strcmp(CMD_ARGV[1], "SWWDG") == 0) { optionbyte |= (1 << 0); } - else + else /* REVISIT must be "HWWDG" then ... */ { optionbyte &= ~(1 << 0); } + /* OPT_RDRSTSTDBY */ if (strcmp(CMD_ARGV[2], "NORSTSTNDBY") == 0) { optionbyte |= (1 << 1); } - else + else /* REVISIT must be "RSTSTNDBY" then ... */ { optionbyte &= ~(1 << 1); } + /* OPT_RDRSTSTOP */ if (strcmp(CMD_ARGV[3], "NORSTSTOP") == 0) { optionbyte |= (1 << 2); } - else + else /* REVISIT must be "RSTSTOP" then ... */ { optionbyte &= ~(1 << 2); } @@ -1106,7 +1116,9 @@ COMMAND_HANDLER(stm32x_handle_options_write_command) return ERROR_OK; } - command_print(CMD_CTX, "stm32x write options complete"); + command_print(CMD_CTX, "stm32x write options complete.\n" + "INFO: a reset or power cycle is required " + "for the new settings to take effect."); return ERROR_OK; } @@ -1185,33 +1197,40 @@ COMMAND_HANDLER(stm32x_handle_mass_erase_command) static const struct command_registration stm32x_exec_command_handlers[] = { { .name = "lock", - .handler = &stm32x_handle_lock_command, + .handler = stm32x_handle_lock_command, .mode = COMMAND_EXEC, - .help = "lock device", + .usage = "bank_id", + .help = "Lock entire flash device.", }, { .name = "unlock", - .handler = &stm32x_handle_unlock_command, + .handler = stm32x_handle_unlock_command, .mode = COMMAND_EXEC, - .help = "unlock protected device", + .usage = "bank_id", + .help = "Unlock entire protected flash device.", }, { .name = "mass_erase", - .handler = &stm32x_handle_mass_erase_command, + .handler = stm32x_handle_mass_erase_command, .mode = COMMAND_EXEC, - .help = "mass erase device", + .usage = "bank_id", + .help = "Erase entire flash device.", }, { .name = "options_read", - .handler = &stm32x_handle_options_read_command, + .handler = stm32x_handle_options_read_command, .mode = COMMAND_EXEC, - .help = "read device option bytes", + .usage = "bank_id", + .help = "Read and display device option byte.", }, { .name = "options_write", - .handler = &stm32x_handle_options_write_command, + .handler = stm32x_handle_options_write_command, .mode = COMMAND_EXEC, - .help = "write device option bytes", + .usage = "bank_id ('SWWDG'|'HWWDG') " + "('RSTSTNDBY'|'NORSTSTNDBY') " + "('RSTSTOP'|'NORSTSTOP')", + .help = "Replace bits in device option byte.", }, COMMAND_REGISTRATION_DONE }; @@ -1226,15 +1245,15 @@ static const struct command_registration stm32x_command_handlers[] = { }; struct flash_driver stm32x_flash = { - .name = "stm32x", - .commands = stm32x_command_handlers, - .flash_bank_command = &stm32x_flash_bank_command, - .erase = &stm32x_erase, - .protect = &stm32x_protect, - .write = &stm32x_write, - .probe = &stm32x_probe, - .auto_probe = &stm32x_auto_probe, - .erase_check = &default_flash_mem_blank_check, - .protect_check = &stm32x_protect_check, - .info = &stm32x_info, - }; + .name = "stm32x", + .commands = stm32x_command_handlers, + .flash_bank_command = stm32x_flash_bank_command, + .erase = stm32x_erase, + .protect = stm32x_protect, + .write = stm32x_write, + .probe = stm32x_probe, + .auto_probe = stm32x_auto_probe, + .erase_check = default_flash_mem_blank_check, + .protect_check = stm32x_protect_check, + .info = stm32x_info, +};