This is an automated email from Gerrit. "Tomas Vanek <van...@fbl.cz>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/7187
-- gerrit commit e78f000218ac888a665abd38cc2b8d9be2f3d0c7 Author: Tomas Vanek <van...@fbl.cz> Date: Sun Sep 11 12:11:31 2022 +0200 flash/nor/rp2040: fix size of flash write buffer The size of the flash write buffer should be rounded down to the multiply of flash page size. Using write chunks of unadjusted size results in write of chunks unaligned to flash pages. Change-Id: If7931362ee193dff4dc2df7ec78f13530658cf08 Signed-off-by: Tomas Vanek <van...@fbl.cz> diff --git a/src/flash/nor/rp2040.c b/src/flash/nor/rp2040.c index 84f804d28f..41fb2b3940 100644 --- a/src/flash/nor/rp2040.c +++ b/src/flash/nor/rp2040.c @@ -217,7 +217,11 @@ static int rp2040_flash_write(struct flash_bank *bank, const uint8_t *buffer, ui if (err != ERROR_OK) goto cleanup; - const unsigned int chunk_size = target_get_working_area_avail(target); + unsigned int avail_pages = target_get_working_area_avail(target) / priv->dev->pagesize; + /* We try to allocate working area rounded down to device page size, + * al least 1 page, at most the write data size + */ + unsigned int chunk_size = MIN(MAX(avail_pages, 1) * priv->dev->pagesize, count); err = target_alloc_working_area(target, chunk_size, &bounce); if (err != ERROR_OK) { LOG_ERROR("Could not allocate bounce buffer for flash programming. Can't continue"); --