#include "stm32x.h"
#include "armv7m.h"
#include "binarybuffer.h"
+#include "algorithm.h"
static int stm32x_mass_erase(struct flash_bank *bank);
{
struct stm32x_flash_bank *stm32x_info;
- if (argc < 6)
+ if (CMD_ARGC < 6)
{
LOG_WARNING("incomplete flash_bank stm32x configuration");
return ERROR_FLASH_BANK_INVALID;
struct target *target = NULL;
struct stm32x_flash_bank *stm32x_info = NULL;
- if (argc < 1)
+ if (CMD_ARGC < 1)
{
- command_print(cmd_ctx, "stm32x lock <bank>");
+ command_print(CMD_CTX, "stm32x lock <bank>");
return ERROR_OK;
}
struct flash_bank *bank;
- int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
if (ERROR_OK != retval)
return retval;
if (stm32x_erase_options(bank) != ERROR_OK)
{
- command_print(cmd_ctx, "stm32x failed to erase options");
+ command_print(CMD_CTX, "stm32x failed to erase options");
return ERROR_OK;
}
if (stm32x_write_options(bank) != ERROR_OK)
{
- command_print(cmd_ctx, "stm32x failed to lock device");
+ command_print(CMD_CTX, "stm32x failed to lock device");
return ERROR_OK;
}
- command_print(cmd_ctx, "stm32x locked");
+ command_print(CMD_CTX, "stm32x locked");
return ERROR_OK;
}
struct target *target = NULL;
struct stm32x_flash_bank *stm32x_info = NULL;
- if (argc < 1)
+ if (CMD_ARGC < 1)
{
- command_print(cmd_ctx, "stm32x unlock <bank>");
+ command_print(CMD_CTX, "stm32x unlock <bank>");
return ERROR_OK;
}
struct flash_bank *bank;
- int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
if (ERROR_OK != retval)
return retval;
if (stm32x_erase_options(bank) != ERROR_OK)
{
- command_print(cmd_ctx, "stm32x failed to unlock device");
+ command_print(CMD_CTX, "stm32x failed to unlock device");
return ERROR_OK;
}
if (stm32x_write_options(bank) != ERROR_OK)
{
- command_print(cmd_ctx, "stm32x failed to lock device");
+ command_print(CMD_CTX, "stm32x failed to lock device");
return ERROR_OK;
}
- command_print(cmd_ctx, "stm32x unlocked");
+ command_print(CMD_CTX, "stm32x unlocked");
return ERROR_OK;
}
struct target *target = NULL;
struct stm32x_flash_bank *stm32x_info = NULL;
- if (argc < 1)
+ if (CMD_ARGC < 1)
{
- command_print(cmd_ctx, "stm32x options_read <bank>");
+ command_print(CMD_CTX, "stm32x options_read <bank>");
return ERROR_OK;
}
struct flash_bank *bank;
- int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
if (ERROR_OK != retval)
return retval;
}
target_read_u32(target, STM32_FLASH_OBR, &optionbyte);
- command_print(cmd_ctx, "Option Byte: 0x%" PRIx32 "", optionbyte);
+ command_print(CMD_CTX, "Option Byte: 0x%" PRIx32 "", optionbyte);
if (buf_get_u32((uint8_t*)&optionbyte, OPT_ERROR, 1))
- command_print(cmd_ctx, "Option Byte Complement Error");
+ command_print(CMD_CTX, "Option Byte Complement Error");
if (buf_get_u32((uint8_t*)&optionbyte, OPT_READOUT, 1))
- command_print(cmd_ctx, "Readout Protection On");
+ command_print(CMD_CTX, "Readout Protection On");
else
- command_print(cmd_ctx, "Readout Protection Off");
+ command_print(CMD_CTX, "Readout Protection Off");
if (buf_get_u32((uint8_t*)&optionbyte, OPT_RDWDGSW, 1))
- command_print(cmd_ctx, "Software Watchdog");
+ command_print(CMD_CTX, "Software Watchdog");
else
- command_print(cmd_ctx, "Hardware Watchdog");
+ command_print(CMD_CTX, "Hardware Watchdog");
if (buf_get_u32((uint8_t*)&optionbyte, OPT_RDRSTSTOP, 1))
- command_print(cmd_ctx, "Stop: No reset generated");
+ command_print(CMD_CTX, "Stop: No reset generated");
else
- command_print(cmd_ctx, "Stop: Reset generated");
+ command_print(CMD_CTX, "Stop: Reset generated");
if (buf_get_u32((uint8_t*)&optionbyte, OPT_RDRSTSTDBY, 1))
- command_print(cmd_ctx, "Standby: No reset generated");
+ command_print(CMD_CTX, "Standby: No reset generated");
else
- command_print(cmd_ctx, "Standby: Reset generated");
+ command_print(CMD_CTX, "Standby: Reset generated");
return ERROR_OK;
}
struct stm32x_flash_bank *stm32x_info = NULL;
uint16_t optionbyte = 0xF8;
- if (argc < 4)
+ if (CMD_ARGC < 4)
{
- command_print(cmd_ctx, "stm32x options_write <bank> <SWWDG | HWWDG> <RSTSTNDBY | NORSTSTNDBY> <RSTSTOP | NORSTSTOP>");
+ command_print(CMD_CTX, "stm32x options_write <bank> <SWWDG | HWWDG> <RSTSTNDBY | NORSTSTNDBY> <RSTSTOP | NORSTSTOP>");
return ERROR_OK;
}
struct flash_bank *bank;
- int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
if (ERROR_OK != retval)
return retval;
return ERROR_TARGET_NOT_HALTED;
}
- if (strcmp(args[1], "SWWDG") == 0)
+ if (strcmp(CMD_ARGV[1], "SWWDG") == 0)
{
optionbyte |= (1 << 0);
}
optionbyte &= ~(1 << 0);
}
- if (strcmp(args[2], "NORSTSTNDBY") == 0)
+ if (strcmp(CMD_ARGV[2], "NORSTSTNDBY") == 0)
{
optionbyte |= (1 << 1);
}
optionbyte &= ~(1 << 1);
}
- if (strcmp(args[3], "NORSTSTOP") == 0)
+ if (strcmp(CMD_ARGV[3], "NORSTSTOP") == 0)
{
optionbyte |= (1 << 2);
}
if (stm32x_erase_options(bank) != ERROR_OK)
{
- command_print(cmd_ctx, "stm32x failed to erase options");
+ command_print(CMD_CTX, "stm32x failed to erase options");
return ERROR_OK;
}
if (stm32x_write_options(bank) != ERROR_OK)
{
- command_print(cmd_ctx, "stm32x failed to write options");
+ command_print(CMD_CTX, "stm32x failed to write options");
return ERROR_OK;
}
- command_print(cmd_ctx, "stm32x write options complete");
+ command_print(CMD_CTX, "stm32x write options complete");
return ERROR_OK;
}
{
int i;
- if (argc < 1)
+ if (CMD_ARGC < 1)
{
- command_print(cmd_ctx, "stm32x mass_erase <bank>");
+ command_print(CMD_CTX, "stm32x mass_erase <bank>");
return ERROR_OK;
}
struct flash_bank *bank;
- int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
if (ERROR_OK != retval)
return retval;
bank->sectors[i].is_erased = 1;
}
- command_print(cmd_ctx, "stm32x mass erase complete");
+ command_print(CMD_CTX, "stm32x mass erase complete");
}
else
{
- command_print(cmd_ctx, "stm32x mass erase failed");
+ command_print(CMD_CTX, "stm32x mass erase failed");
}
return ERROR_OK;
static int stm32x_register_commands(struct command_context *cmd_ctx)
{
- command_t *stm32x_cmd = register_command(cmd_ctx, NULL, "stm32x",
+ struct command *stm32x_cmd = COMMAND_REGISTER(cmd_ctx, NULL, "stm32x",
NULL, COMMAND_ANY, "stm32x flash specific commands");
- register_command(cmd_ctx, stm32x_cmd, "lock",
+ COMMAND_REGISTER(cmd_ctx, stm32x_cmd, "lock",
stm32x_handle_lock_command, COMMAND_EXEC,
"lock device");
- register_command(cmd_ctx, stm32x_cmd, "unlock",
+ COMMAND_REGISTER(cmd_ctx, stm32x_cmd, "unlock",
stm32x_handle_unlock_command, COMMAND_EXEC,
"unlock protected device");
- register_command(cmd_ctx, stm32x_cmd, "mass_erase",
+ COMMAND_REGISTER(cmd_ctx, stm32x_cmd, "mass_erase",
stm32x_handle_mass_erase_command, COMMAND_EXEC,
"mass erase device");
- register_command(cmd_ctx, stm32x_cmd, "options_read",
+ COMMAND_REGISTER(cmd_ctx, stm32x_cmd, "options_read",
stm32x_handle_options_read_command, COMMAND_EXEC,
"read device option bytes");
- register_command(cmd_ctx, stm32x_cmd, "options_write",
+ COMMAND_REGISTER(cmd_ctx, stm32x_cmd, "options_write",
stm32x_handle_options_write_command, COMMAND_EXEC,
"write device option bytes");