flash/stm32f1x,f2x: fix endianess in slow fallback flash write
authorTomas Vanek <vanekt@fbl.cz>
Tue, 16 Nov 2021 16:10:12 +0000 (17:10 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 12 Mar 2022 09:32:09 +0000 (09:32 +0000)
Use target_write_memory() instead of target_write_u16()

Change-Id: I2389fe7a5fa18c9bc9c1aad8b8ddd64608bf2566
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/6705
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
src/flash/nor/stm32f1x.c
src/flash/nor/stm32f2x.c

index 29a3b7e06fd914b4b3a789d52074e54c699f22fc..6972bae2de14d340bf75b6410fa2ff88ceb172e4 100644 (file)
@@ -592,10 +592,7 @@ static int stm32x_write(struct flash_bank *bank, const uint8_t *buffer,
                LOG_WARNING("couldn't use block writes, falling back to single memory accesses");
 
                while (words_remaining > 0) {
-                       uint16_t value;
-                       memcpy(&value, buffer, sizeof(uint16_t));
-
-                       retval = target_write_u16(target, bank->base + offset, value);
+                       retval = target_write_memory(target, bank->base + offset, 2, 1, buffer);
                        if (retval != ERROR_OK)
                                goto reset_pg_and_lock;
 
index 58edca7e1be9a5f6723b345c1cb6a9805d58ed77..622ef342354988b49275c300d5e2209d0a0a7edd 100644 (file)
@@ -856,15 +856,12 @@ static int stm32x_write(struct flash_bank *bank, const uint8_t *buffer,
        Wait for the BSY bit to be cleared
        */
        while (words_remaining > 0) {
-               uint16_t value;
-               memcpy(&value, buffer + bytes_written, sizeof(uint16_t));
-
                retval = target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_CR),
                                FLASH_PG | FLASH_PSIZE_16);
                if (retval != ERROR_OK)
                        return retval;
 
-               retval = target_write_u16(target, address, value);
+               retval = target_write_memory(target, address, 2, 1, buffer + bytes_written);
                if (retval != ERROR_OK)
                        return retval;