flash: stm32lx fallback to slow memory writes when no working area
The current stm32lx driver will fail if no working area is provided - fallback to using slow writes if this is the case. Change-Id: I92b1535fec4aebc855c63ce2c54b10f168f3c07e Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/1007 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>__archive__
parent
80649fc3d5
commit
9b045f62f4
|
@ -399,10 +399,16 @@ static int stm32lx_write(struct flash_bank *bank, uint8_t *buffer,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (halfpages_number) {
|
if (halfpages_number) {
|
||||||
retval = stm32lx_write_half_pages(bank, buffer, offset, 128
|
retval = stm32lx_write_half_pages(bank, buffer, offset, 128 * halfpages_number);
|
||||||
* halfpages_number);
|
if (retval == ERROR_TARGET_RESOURCE_NOT_AVAILABLE) {
|
||||||
if (retval != ERROR_OK)
|
/* attempt slow memory writes */
|
||||||
return ERROR_FAIL;
|
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;
|
bytes_written = 128 * halfpages_number;
|
||||||
|
|
Loading…
Reference in New Issue