#include "config.h"
#endif
+#include "imp.h"
#include "stm32x.h"
-#include "armv7m.h"
#include <helper/binarybuffer.h>
-#include "algorithm.h"
+#include <target/algorithm.h>
+#include <target/armv7m.h>
static int stm32x_mass_erase(struct flash_bank *bank);
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;
}
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);
}
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;
}
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
};
};
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,
+};