X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fcore.c;h=da73bf6405fab4730a422337f8cbd5af6877c508;hb=2b546fdc45d33a7b407f49b3732d1a57afa60b72;hp=2c1d9dee04dbcb29b12abb038e7d7f69679c8b8d;hpb=52558354e67e4a2f7884666cf88c899ad9afa05e;p=openocd.git diff --git a/src/flash/nor/core.c b/src/flash/nor/core.c index 2c1d9dee04..da73bf6405 100644 --- a/src/flash/nor/core.c +++ b/src/flash/nor/core.c @@ -654,9 +654,13 @@ int flash_write_unlock(struct target *target, struct image *image, if (run_address + run_size - 1 > c->base + c->size - 1) { - LOG_ERROR("The image is too big for the flash"); - retval = ERROR_FAIL; - goto done; + /* If we have more than one flash chip back to back, then we limit + * the current write operation to the current chip. + */ + LOG_DEBUG("Truncate flash run size to the current flash chip."); + + run_size = c->base + c->size - run_address; + assert(run_size > 0); } /* If we're applying any sector automagic, then pad this