X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fstm32lx.c;h=ce41f9421ff18670a405c68f6d7dd0c65fab8944;hp=6d7efb859eae74b787ccf5738f9dcbbc2029ae51;hb=9b045f62f4bac2411a7662d8b312637347aac73d;hpb=80649fc3d5ce5da7c29cc645109f72e012187c72 diff --git a/src/flash/nor/stm32lx.c b/src/flash/nor/stm32lx.c index 6d7efb859e..ce41f9421f 100644 --- a/src/flash/nor/stm32lx.c +++ b/src/flash/nor/stm32lx.c @@ -399,10 +399,16 @@ static int stm32lx_write(struct flash_bank *bank, uint8_t *buffer, } if (halfpages_number) { - retval = stm32lx_write_half_pages(bank, buffer, offset, 128 - * halfpages_number); - if (retval != ERROR_OK) - return ERROR_FAIL; + retval = stm32lx_write_half_pages(bank, buffer, offset, 128 * halfpages_number); + if (retval == ERROR_TARGET_RESOURCE_NOT_AVAILABLE) { + /* attempt slow memory writes */ + LOG_WARNING("couldn't use block writes, falling back to single memory accesses"); + halfpages_number = 0; + words_remaining = (count / 4); + } else { + if (retval != ERROR_OK) + return ERROR_FAIL; + } } bytes_written = 128 * halfpages_number;