This is an automated email from Gerrit.

"Paul Fertser <fercer...@gmail.com>" just uploaded a new patch set to Gerrit, 
which you can find at https://review.openocd.org/c/openocd/+/7342

-- gerrit

commit 57a9f975972fb9af30199a54c38c269f320a5b43
Author: Simon Smiganovski <simon.smiganov...@fruitcore.de>
Date:   Wed Nov 9 16:32:26 2022 +0100

    flash/nor/stm32f1x: adjust size of the flash loader buffer
    
    target_run_flash_async_algorithm expects the source_buffer to have
    at least 2 words reserved for read and write pointers in addition to the
    FIFO buffer. If the size of the data to be flashed is <= 8 bytes then
    the flash function will fail with "corrupted fifo read pointer" error.
    
    Ensure the allocated buffer is big enough to hold both FIFO buffer and
    read/write pointers.
    
    Change-Id: I09c22eaac517b8cfea8e0b463f5deb6b98afd267
    Signed-off-by: Simon Smiganovski <simon.smiganov...@fruitcore.de>
    Signed-off-by: Paul Fertser <fercer...@gmail.com>

diff --git a/src/flash/nor/stm32f1x.c b/src/flash/nor/stm32f1x.c
index e882d7f795..ab1ef2aefe 100644
--- a/src/flash/nor/stm32f1x.c
+++ b/src/flash/nor/stm32f1x.c
@@ -473,7 +473,7 @@ static int stm32x_write_block_async(struct flash_bank 
*bank, const uint8_t *buff
 
        /* memory buffer */
        buffer_size = target_get_working_area_avail(target);
-       buffer_size = MIN(hwords_count * 2, MAX(buffer_size, 256));
+       buffer_size = MIN(hwords_count * 2 + 8, MAX(buffer_size, 256));
        /* Normally we allocate all available working area.
         * MIN shrinks buffer_size if the size of the written block is smaller.
         * MAX prevents using async algo if the available working area is 
smaller

-- 

Reply via email to