This is an automated email from Gerrit.

Jan VojtÄ›ch ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/4663

-- gerrit

commit 80f0b4eb77a99bcb26ef10d5761707d06c702a09
Author: Jan Vojtech <[email protected]>
Date:   Tue Sep 4 11:50:09 2018 +0200

    stm32f1x: Add ability to change user option bytes for STM32F1x/STM32F3x.
    
    This simple patch adds ability to change user data in STM32F1x/STM32F3x 
MCU's option byte. Since OpenOCD prints the content of user data in option byte 
registers, it is seems logical to also provide a way how to change this data.
    
    Change-Id: Ie6cb756b4f11b5c6dabd34bc89434a358eb758ff
    Signed-off-by: Jan Vojtech <[email protected]>

diff --git a/src/flash/nor/stm32f1x.c b/src/flash/nor/stm32f1x.c
index faada9a..7a708ac 100644
--- a/src/flash/nor/stm32f1x.c
+++ b/src/flash/nor/stm32f1x.c
@@ -1407,6 +1407,7 @@ COMMAND_HANDLER(stm32x_handle_options_write_command)
        struct target *target = NULL;
        struct stm32x_flash_bank *stm32x_info = NULL;
        uint16_t optionbyte;
+       uint16_t useropt;
 
        if (CMD_ARGC < 2)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -1435,6 +1436,7 @@ COMMAND_HANDLER(stm32x_handle_options_write_command)
 
        /* start with current options */
        optionbyte = stm32x_info->option_bytes.user_options;
+       useropt = stm32x_info->option_bytes.user_data;
 
        /* skip over flash bank */
        CMD_ARGC--;
@@ -1453,6 +1455,15 @@ COMMAND_HANDLER(stm32x_handle_options_write_command)
                        optionbyte |= (1 << 2);
                else if (strcmp("RSTSTNDBY", CMD_ARGV[0]) == 0)
                        optionbyte &= ~(1 << 2);
+               else if (strcmp("USEROPT", CMD_ARGV[0]) == 0) {
+                       if (CMD_ARGC < 2) {
+                               return ERROR_COMMAND_SYNTAX_ERROR;
+                       }
+                       COMMAND_PARSE_NUMBER(u16, CMD_ARGV[1], useropt);
+                       printf("***User option byte: %d\n", useropt);
+                       CMD_ARGC--;
+                       CMD_ARGV++;
+               }
                else if (stm32x_info->has_dual_banks) {
                        if (strcmp("BOOT0", CMD_ARGV[0]) == 0)
                                optionbyte |= (1 << 3);
@@ -1472,6 +1483,7 @@ COMMAND_HANDLER(stm32x_handle_options_write_command)
        }
 
        stm32x_info->option_bytes.user_options = optionbyte;
+       stm32x_info->option_bytes.user_data = useropt;
 
        if (stm32x_write_options(bank) != ERROR_OK) {
                command_print(CMD_CTX, "stm32x failed to write options");
@@ -1582,7 +1594,7 @@ static const struct command_registration 
stm32x_exec_command_handlers[] = {
                .mode = COMMAND_EXEC,
                .usage = "bank_id ('SWWDG'|'HWWDG') "
                        "('RSTSTNDBY'|'NORSTSTNDBY') "
-                       "('RSTSTOP'|'NORSTSTOP')",
+                       "('RSTSTOP'|'NORSTSTOP') (USEROPT 
user_option_byte_value)",
                .help = "Replace bits in device option byte.",
        },
        COMMAND_REGISTRATION_DONE

-- 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to